概要
Azure Monitor (Azure Application Insights) を使った、Azure Functions の監視方法について記述する。
Azure Monitor ログを使用した Azure Functions の監視について
- 同じワークスペース内の異なるリソースのログを統合可能。
- それらを、クエリを使用して分析、収集など可能。
- Azure Portal で Log Analytics などで分析も可能で、それらを視覚化・アラートるるーに利用することが可能。
本記事執筆時点において、Azure Monitor Logs との統合は、Windows Consumption、Premium、Dedicated ホスティング プランで実行されている v2 および v3 の関数アプリについては、プレビュー段階との記述あり。
設定方法
-
Azure portal で関数アプリの[監視]セクションから、[診断設定]を選択し、[診断設定を追加する]をクリック。
-
[診断設定] ページの [カテゴリの詳細] と [ログ] で、FunctionAppLogs を選択([FunctionAppLogs] テーブルには、目的のログが含まれている。)。
-
[宛先の詳細] で、 [Log Analytics への送信] を選択して、Log Analytics ワークスペース を選択。
-
診断設定名 を入力して、 [保存] を選択。
ユーザー生成ログ(カスタムログ)
カスタムログを生成するには、以下のようなステートメントを使用する。
-
C#
log.LogInformation("My app logs here.");
-
Java
context.getLogger().info("My app logs here.");
-
JavaScript
context.log('My app logs here.');
-
PowerShell
Write-Host "My app logs here."
-
Python
logging.info('My app logs here.')
ログのクエリ
生成されたログをクエリするには、以下の操作を行う。
-
関数アプリから、[診断設定]を選択する。
-
[診断設定]から、関数ログの送信先として構成した Log Analytics ワークスペースを選択する。
-
[Log Anaytics ワークスペース]ページで、[ログ]を選択する。
Azure Functions によって、すべてのログは、[LogManagement] の FunctionAppLogs テーブルに書き込まれる。
以下に、いくつかのサンプルクエリを示す。
すべてのログ
FunctionAppLogs
| order by TimeGenerated desc
特定の関数のログ
FunctionAppLogs
| where FunctionName == "<Function name>"
例外
FunctionAppLogs
| where ExceptionDetails != ""
| order by TimeGenerated asc