A Java-hoz készült Azure SDK hibaelhárítási áttekintése

Ez a cikk számos hibaelhárítási eszközt mutat be, amelyek a Java Azure SDK használata esetén érhetők el, és további részleteket tartalmazó cikkekre mutató hivatkozásokat tartalmaz.

A Java Azure SDK számos ügyfélkódtárból áll – egy vagy több az egyes Azure szolgáltatásokhoz, amelyek léteznek. Microsoft biztosítja, hogy az összes ügyfélkódtár egységes, magas színvonalú legyen, a konfiguráció, a naplózás, a kivételkezelés és a hibaelhárítás gyakori mintáival. További információ: Az Azure SDK használata Java-hoz.

Mivel a hibaelhárítás kiterjedhet egy ilyen széles területre, Microsoft a következő hibaelhárítási útmutatókat fejlesztette ki, amelyeket érdemes lehet áttekinteni:

  • Az Azure Identity-hitelesítési problémák hibaelhárítása kiterjed a hitelesítési hibák vizsgálati technikáira, az Azure Identity Java ügyfélkódtár hitelesítő adatainak típusaival kapcsolatos gyakori hibákra, valamint a hibák elhárításának lépéseire.
  • A függőségi verzióütközések hibaelhárítása a függőségi ütközések diagnosztizálásával, enyhítésével és minimalizálásával kapcsolatos témákra terjed ki. Ezek az ütközések akkor fordulhatnak elő, ha az Azure SDK for Java-ügyfélkódtárakat olyan rendszerekben használja, amelyek olyan eszközökkel készültek, mint a Maven és a Gradle.
  • A hálózatkezelési problémák elhárítása az ügyfélkódtáron kívüli HTTP-hibakereséssel kapcsolatos témakörökre terjed ki, például a Fiddler és a Wireshark használatával.

Az általános hibaelhárítási útmutatók mellett a Microsoft könyvtárspecifikus hibaelhárítási útmutatókat is biztosít. Jelenleg a következő útmutatók érhetők el:

A dokumentumokon túl az alábbi tartalom útmutatást nyújt a naplózás és a kivételkezelés legjobb kihasználásához, mivel az a Java-hoz készült Azure SDK-hoz kapcsolódik.

Naplózás használata a Java Azure SDK-ban

A következő szakaszok a különböző naplózási módok engedélyezését ismertetik.

Ügyfélnaplózás engedélyezése

A problémák elhárításához először engedélyezze a naplózást az alkalmazás viselkedésének figyeléséhez. A naplókban szereplő hibák és figyelmeztetések általában hasznos betekintést nyújtanak a hibákba, és időnként korrekciós műveleteket is tartalmaznak a problémák megoldásához. Az Azure SDK for Java átfogó naplózási támogatással rendelkezik. További információ: Naplózás konfigurálása a Java Azure SDK-ban.

HTTP-kérések/válaszok naplózásának engedélyezése

A problémák elhárításakor tekintse át a HTTP-kéréseket, amikor a rendszer elküldi és fogadja őket Azure szolgáltatások között. A HTTP-kérések és -válaszok tartalmának naplózásához konfigurálja szinte az összes Azure SDK for Java ügyfélkódtárat a kliensépítőikben az alábbi példában látható módon. Különös figyelmet kell fordítani az httpLogOptions ügyfélalkotó metódusára és az enumerációs értékekre HttpLogDetailLevel.

ConfigurationClient configurationClient = new ConfigurationClientBuilder()
        .connectionString(connectionString)
        .httpLogOptions(new HttpLogOptions().setLogLevel(HttpLogDetailLevel.BODY_AND_HEADERS))
        .buildClient();

Ez a kód egyetlen ügyfélpéldány HTTP-kérés- és válasznaplózását módosítja. Másik lehetőségként konfigurálhatja a HTTP-kérések és válaszok naplózását a teljes alkalmazáshoz úgy, hogy a környezeti változót AZURE_HTTP_LOG_DETAIL_LEVEL az alábbi táblázatban szereplő értékek egyikére állítja. Ez a módosítás lehetővé teszi minden olyan Azure ügyfél naplózását, amely támogatja a HTTP-kérések és -válaszok naplózását.

Érték Naplózási szint
none A HTTP-kérések és válaszok naplózása le van tiltva.
basic Csak URL-címeket, HTTP-metódusokat és a kérés befejezéséhez szükséges időt naplózza.
headers Mindent naplóz a BASIC-ben, valamint az összes kérés- és válaszfejlécet.
body Mindent naplóz a BASIC-ben, valamint az összes kérés- és választörzset.
body_and_headers Mindent naplóz a FEJLÉCEKBEN és a TÖRZSBEN.

Megjegyzés:

Amikor a kérési és válaszüzeneteket naplózza, győződjön meg arról, hogy nem tartalmaznak bizalmas információkat. Amikor naplózza a lekérdezési paramétereket és a fejléceket, az ügyféltár alapértelmezett lekérdezési paraméterekkel és fejlécekkel rendelkezik, amelyek biztonságosnak tekinthetők a naplózáshoz. Az alábbi példában látható módon további, biztonságosan naplózható lekérdezési paramétereket és fejléceket adhat hozzá:

clientBuilder.httpLogOptions(new HttpLogOptions()
    .addAllowedHeaderName("safe-to-log-header-name")
    .addAllowedQueryParamName("safe-to-log-query-parameter-name"))

Kivételkezelés a Java Azure SDK-ban

Az Azure SDK for Java legtöbb ügyfélszolgáltatás-metódusa hiba esetén HttpResponseException kivételt vagy egy specifikusabb alosztályt dob. A HttpResponseException típus tartalmaz egy részletes válaszhiba-objektumot, amely konkrét hasznos betekintést nyújt a hiba elhárításához, és korrekciós műveleteket tartalmaz a gyakori problémák megoldásához. Ez a hibainformáció az objektum üzenettulajdonságán HttpResponseException belül található. Mivel ezek a kivételek futásidejű kivételek, a JavaDoc referenciadokumentációja nem hívja fel őket explicit módon.

Az alábbi példa bemutatja, hogyan lehet elkapni ezt a kivételt egy szinkron ügyféllel:

try {
    ConfigurationSetting setting = new ConfigurationSetting().setKey("myKey").setValue("myValue");
    client.getConfigurationSetting(setting);
} catch (HttpResponseException e) {
    System.out.println(e.getMessage());
    // Do something with the exception
}

Az aszinkron ügyfelekkel a hibavisszahívások kivételeit észlelheti és kezelheti, ahogyan az alábbi példában is látható:

ConfigurationSetting setting = new ConfigurationSetting().setKey("myKey").setValue("myValue");
asyncClient.getConfigurationSetting(setting)
    .doOnSuccess(ignored -> System.out.println("Success!"))
    .doOnError(
        error -> error instanceof ResourceNotFoundException,
        error -> System.out.println("Exception: 'getConfigurationSetting' could not be performed."));

Nyomkövetés használata a Javához készült Azure SDK-ban

Az Azure SDK for Java átfogó nyomkövetési támogatást nyújt, amely lehetővé teszi a végrehajtás folyamatának megtekintését az alkalmazáskódon és a használt ügyfélkódtárakon keresztül. A nyomkövetést az Azure-ügyfélkódtárakban az OpenTelemetry SDK használatával és konfigurálásával, vagy egy OpenTelemetry-kompatibilis ügynök használatával engedélyezheti. Az OpenTelemetria egy népszerű nyílt forráskódú megfigyelhetőségi keretrendszer, amely a natív felhőbeli szoftverek telemetriai adatainak létrehozására, rögzítésére és gyűjtésére használható.

További információ a nyomkövetés engedélyezéséről a Java Azure SDK-ban: Nyomkövetés konfigurálása a Java-hoz készült Azure SDK-ban.

Következő lépések

Ha a cikkben található hibaelhárítási útmutató nem segít megoldani az Azure SDK for Java ügyfélkódtárainak használata során felmerülő problémákat, jelentsen be egy problémát az Azure SDK for Java GitHub-adattárban.