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

Tento článek představuje mnoho nástrojů pro řešení potíží, které jsou k dispozici při použití Azure SDK pro Java, a odkazy na další články s dalšími podrobnostmi.

Azure SDK pro Java se skládá z mnoha klientských knihoven – jedné nebo více pro každou službu Azure, která existuje. Microsoft zajišťuje, aby všechny klientské knihovny byly vytvořeny v konzistentním, vysokém standardu se společ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, Microsoft vyvinuli následující průvodci odstraňováním 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í problémů s konflikty verzí závislostí zahrnuje témata související s diagnostikováním, zmírňová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íží poskytuje Microsoft také příručky pro řešení potíží specifické pro knihovnu. V současné době 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í logování v sadě Azure SDK pro Javu

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

Povolit protokolování klienta

Při řešení potíží nejprve povolte protokolování, abyste mohli monitorovat 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í problémů zkontrolujte 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 a odpovědi HTTP, nakonfigurujte téměř všechny klientské knihovny Azure SDK pro Javu pomocí jejich tvůrců klientů, jak ukazuje následující příklad. Zaměřte se zejména na metodu v konstruktoru klienta httpLogOptions a na výčtové hodnoty, které jsou dostupné v HttpLogDetailLevel.

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

Tento kód mění protokolování požadavků a odpovědí HTTP pro konkrétní 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. Tato změna umožňuje protokolování pro každého klienta Azure, který podporuje protokolování požadavků HTTP a odpovědí.

Hodnota Úroveň protokolování
none Protokolování požadavků HTTP a odpovědí je zakázané.
basic Protokoluje pouze adresy URL, metody HTTP a čas dokončení požadavku.
headers Protokoluje všechno v BASICu, plus všechny hlavičky požadavků a odpovědí.
body Zaznamenává vše v BASICu, plus veškerá těla požadavků a odpovědí.
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í. Můžete 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 Azure SDK pro metody klientské služby Java vyvolá 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í Azure SDK pro Java klientských knihoven, založte problém v Azure SDK pro úložiště Java GitHub.