Azure Functions のアラート設定調査(備忘録)


概要

Azure Monitor (Azure Application Insights) を使った、Azure Functions の監視方法について記述する。

Azure Monitor ログを使用した Azure Functions の監視について

  • 同じワークスペース内の異なるリソースのログを統合可能。
  • それらを、クエリを使用して分析、収集など可能。
  • Azure Portal で Log Analytics などで分析も可能で、それらを視覚化・アラートるるーに利用することが可能。

本記事執筆時点において、Azure Monitor Logs との統合は、Windows Consumption、Premium、Dedicated ホスティング プランで実行されている v2 および v3 の関数アプリについては、プレビュー段階との記述あり。

設定方法

  1. Azure portal で関数アプリの[監視]セクションから、[診断設定]を選択し、[診断設定を追加する]をクリック。

  2. [診断設定] ページの [カテゴリの詳細] と [ログ] で、FunctionAppLogs を選択([FunctionAppLogs] テーブルには、目的のログが含まれている。)。

  3. [宛先の詳細] で、 [Log Analytics への送信] を選択して、Log Analytics ワークスペース を選択。

  4. 診断設定名 を入力して、 [保存] を選択。

ユーザー生成ログ(カスタムログ)

カスタムログを生成するには、以下のようなステートメントを使用する。

  • 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.')

ログのクエリ

生成されたログをクエリするには、以下の操作を行う。

  1. 関数アプリから、[診断設定]を選択する。

  2. [診断設定]から、関数ログの送信先として構成した Log Analytics ワークスペースを選択する。

  3. [Log Anaytics ワークスペース]ページで、[ログ]を選択する。

Azure Functions によって、すべてのログは、[LogManagement] の FunctionAppLogs テーブルに書き込まれる。

以下に、いくつかのサンプルクエリを示す。

すべてのログ

FunctionAppLogs
| order by TimeGenerated desc

特定の関数のログ

FunctionAppLogs
| where FunctionName == "<Function name>"

例外

FunctionAppLogs
| where ExceptionDetails != ""
| order by TimeGenerated asc

参考資料