Sdílet prostřednictvím


Přehled řešení potíží se sadou Azure SDK pro Javu

Tento článek představuje mnoho dostupných nástrojů pro řešení potíží při použití sady Azure SDK pro Javu a odkazy na další články s dalšími podrobnostmi.

Sada Azure SDK pro Javu se skládá z mnoha klientských knihoven – jedné nebo více pro každou službu Azure, která existuje. Zajišťujeme, aby všechny klientské knihovny byly vytvořeny v konzistentním, vysokém standardu s běžnými vzory konfigurace, protokolování, zpracování výjimek a odstraňováním potíží. Další informace najdete v tématu Použití sady Azure SDK pro Javu.

Vzhledem k tomu, že řešení potíží může zahrnovat takovou širokou oblast, vytvořili jsme následující příručky pro řešení potíží, které byste mohli chtít zkontrolovat:

  • Řešení potíží s ověřováním identit Azure řeší techniky vyšetřování selhání ověřování, běžné chyby typů přihlašovacích údajů v klientské knihovně Azure Identity Java a kroky pro zmírnění těchto chyb.
  • Řešení potíží se konflikty verzí závislostí se týkají témat souvisejících s diagnostikou, zmírněním a minimalizací konfliktů závislostí. K těmto konfliktům může dojít při použití sady Azure SDK pro klientské knihovny Java v systémech vytvořených pomocí nástrojů, jako jsou Maven a Gradle.
  • Řešení potíží se sítěmi řeší témata související s laděním HTTP mimo klientskou knihovnu pomocí nástrojů, jako je Fiddler a Wireshark.

Společně s těmito obecnými průvodci odstraňováním potíží poskytujeme také příručky pro řešení potíží specifické pro knihovnu. Nyní jsou k dispozici následující příručky:

Kromě těchto dokumentů poskytuje následující obsah pokyny k tomu, aby se co nejlépe používalo protokolování a zpracování výjimek v souvislosti se sadou Azure SDK pro Javu.

Použití protokolování v sadě Azure SDK pro Javu

Následující části popisují, jak povolit různé druhy protokolování.

Povolení protokolování klienta

Při řešení problémů je důležité nejprve povolit protokolování pro monitorování chování vaší aplikace. Chyby a upozornění v protokolech obvykle poskytují užitečné přehledy o tom, co se nepovedlo, a někdy zahrnují opravné akce pro opravu problémů. Sada Azure SDK pro Javu má komplexní podporu protokolování. Další informace najdete v tématu Konfigurace protokolování v sadě Azure SDK pro Javu.

Povolení protokolování požadavků a odpovědí HTTP

Při řešení potíží je užitečné zkontrolovat požadavky HTTP při jejich odesílání a přijetí mezi službami Azure. Pokud chcete povolit protokolování datové části požadavku HTTP a odpovědi, můžete nakonfigurovat téměř všechny klientské knihovny Azure SDK pro Javu v jejich tvůrcích klientů, jak je znázorněno v následujícím příkladu. Zejména věnujte zvláštní pozornost httpLogOptions metodě na tvůrci klienta a výčtové hodnoty, které jsou k dispozici v HttpLogDetailLevel.

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

Tento kód změní protokolování požadavků a odpovědí HTTP pro jednu instanci klienta. Případně můžete nakonfigurovat protokolování požadavků HTTP a odpovědí pro celou aplikaci nastavením AZURE_HTTP_LOG_DETAIL_LEVEL proměnné prostředí na jednu z hodnot v následující tabulce. Je důležité si uvědomit, že tato změna umožňuje protokolování pro každého klienta Azure, který podporuje protokolování požadavků a odpovědí HTTP.

Hodnota Úroveň protokolování
none Protokolování požadavků a odpovědí HTTP je zakázané.
basic Protokoluje pouze adresy URL, metody HTTP a čas dokončení požadavku.
headers Zaprokoluje všechno v basicu a také všechny hlavičky požadavků a odpovědí.
body Zaprokoluje všechno v basicu a také veškerý text požadavku a odpovědi.
body_and_headers Zaprokoluje všechno v HEADERS a BODY.

Poznámka:

Při protokolování požadavků a odpovědí se ujistěte, že neobsahují důvěrné informace. Když protokolujete parametry a hlavičky dotazu, klientská knihovna má výchozí sadu parametrů dotazu a hlaviček, které jsou považovány za bezpečné pro protokolování. Je možné přidat další parametry dotazu a hlavičky, které jsou bezpečné pro protokolování, jak je znázorněno v následujícím příkladu:

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

Zpracování výjimek v sadě Azure SDK pro Javu

Většina metod klientské služby Azure SDK pro Javu vyvolává výjimku HttpResponseException nebo konkrétnější podtřídu při selhání. Tento HttpResponseException typ obsahuje podrobný objekt chyby odpovědi, který poskytuje konkrétní užitečné přehledy o tom, co se nepovedlo, a obsahuje opravné akce pro opravu běžných problémů. Tyto informace o chybě najdete uvnitř vlastnosti zprávy objektu HttpResponseException . Vzhledem k tomu, že tyto výjimky jsou výjimkami modulu runtime, referenční dokumentace JavaDoc je explicitně nevyzve.

Následující příklad ukazuje, jak zachytit tuto výjimku synchronním klientem:

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
}

Pomocí asynchronních klientů můžete zachytit a zpracovat výjimky v zpětných voláních chyb, jak je znázorněno v následujícím příkladu:

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."));

Použití trasování v sadě Azure SDK pro Javu

Sada Azure SDK pro Javu nabízí komplexní podporu trasování, která umožňuje zobrazit tok provádění prostřednictvím kódu aplikace a klientských knihoven, které používáte. Trasování můžete povolit v klientských knihovnách Azure pomocí a konfiguraci sady OpenTelemetry SDK nebo pomocí agenta kompatibilního s OpenTelemetry. OpenTelemetry je oblíbená opensourcová architektura pozorovatelnosti pro generování, zachytávání a shromažďování telemetrických dat pro software nativní pro cloud.

Další informace o povolení trasování v sadě Azure SDK pro Javu najdete v tématu Konfigurace trasování v sadě Azure SDK pro Javu.

Další kroky

Pokud pokyny k řešení potíží v tomto článku nepomáhají vyřešit problémy při použití sady Azure SDK pro klientské knihovny Java, doporučujeme vám založit problém v úložišti Azure SDK pro Javu na GitHubu.