Diagnostic logging v Azure App Services

Azure

5 years ago

Deployment aplikací na Azure App Services je velmi snadný. Někdy však vše nejde přesně podle plánů a můžeme skončit se smutnou (a nepříliš čitelnou) chybou 502 či 503. Pokud se tyto problémy vyskytnou během startu aplikace, není jednoduché je odladit, protože chybu nemůže aplikace v tu dobu zobrazit sama. Server tedy pak jen zobrazí obecnou chybovou stránku, která k řešení problému není příliš nápomocná. Naštěstí Azure nabízí nástroj, který pomůže právě v těchto situacích - Diagnostic logging (diagnostické logování).

Azure App Services

Azure App Services

Dva typy diagnostického logování

Azure App Service nabízí dva typy diagnostického logování:

  • Application Diagnostics - zaznamenávají logy aplikace včetně logů ze System.Diagnostics.Trace
  • Web Server Diagnostics - poskytují detailní logování chyb, trasování neúspěšných requestů a logy webového serveru

Povolení diagnostického logování

Diagnostic logging lze snadno povolit v Azure Portalu. Otevřete svou Azure App Service a vyberte v Settings panelu položku Diagnostics logs. V okně Logs najdete několik přepínačů, které vám umožní povolit různé funkce diagnostického logování.

Diagnostic log settings

Diagnostics logs settings

První dva přepínače Application Logging nabízí logování do souborového systému (filesystem) a do Azure Storage Blobs. Výstup je v obou případech stejný, takže záleží na vás, který je pro vás vhodnější. Můžete si také vybrat úroveň logovacích zpráv, které se budou zapisovat. Dejte však pozor, že logování do souborového systému je pouze dočasné a po 12 hodinách se automaticky vypne. Logování web serveru povoluje druhý typ diagnostického logování. Zda musíte opět vybrat cílovou lokaci, ale můžete vybrat buď Azure Storage nebo File system, logování nemůže být zapnuto pro obě lokace zároveň. Nakonec můžete také povolit logování detailních chybových zpráv (detailed error messages ) and neúspěšných requestů (railed requests tracing) pomocí stejnojmenných přepínačů dole.

Přístup k logům v souborovém systému

Pro přístup k logům v souborovém systému můžete použít FTP údaje pod přepínači na stránce Logs. Všimněte si však, že zde chybí heslo. Pro něj si musíme zajít na stránku Overview vaší App Service a kliknout na tlačítko Get publish profile v horním menu.

Get publish profile

Get publish profile

Tím se stáhne soubor .PublishSettings, který je ve skutečnosti jednoduchý XML soubor. Vyhledejte v něm tag <PublishProfile> s atributem publishMethod="FTP". Ve stejném profilu pak najdete atribut userPWD, což je vaše heslo pro připojení k FTP. Můžete použít kterýkoliv FTP klient jako je například FileZilla. Logy jsou uloženy strukturovaně ve složce LogFiles. Každý typ logů má svoji vlastní podsložku. Naúspěšné requesty jsou ve složce začínající na W3SVC, logy webového serveru ve složce http/RawLogs . Nakonec jsou zde také logy vzniklé interními deployment procesy které využívá App Service a Git - najdete je ve složce Git.

Přístup k logům v Azure Storage Blobs

Způsob uložení logů v Azure Storage je analogické, jako v případě souborového systému, ale pro pohodlnější přístup doporučuji stáhnout aplikaci Azure Storage Explorer, která zobrazuje obsah Azure Storage ve formátu podobném prohlížeči souborů.

Log Stream

Jakmile povolíte Application logs nebo Web server logs, dostanete navíc další možnost přístupu k logům takřka v reálném čase. V panelu Settings vaší aplikace najdete položku Log stream hned pod Diagnostics logs. Zobrazí se vám konzolové uživatelské rozhraní kde můžete přepnout mezi Application a Web server logy a sledovat události okamžitě ve chvíli, kdy se vyskytnou. To je především praktické při ladění spouštění aplikace a neúspěšných requestů.

Log stream

Log stream

Shrnutí

Diagnostics logs jsou velmi užitečnou funkcí Azure App Service. Nabízí širokou škálu nástrojů a různých typů logování, díky čemuž se dostanete přesně k těm informacím, které potřebujete pro diagnostiku jakékoliv chyby. Z vlastní zkušenosti mohu potvrdit, že pro nalezení chyby často je nutné použít informace z několika různých typů logů. Například pro problémy při startu ASP.NET Core aplikace vám Log stream nejspíše nabídne obecnější informaci o tom, kdy k chybě dochází ale díky detailním logům pak dokážete přesně určit zdroj chyby.