Azure Monitor の統合アラート エクスペリエンスには、以前は Log Analytics と Application Insights によって管理されていたアラートも含まれるようになった。
ここでは Azure モニター を使用して関数アプリの異常を検知する方法について記載する。
Azure Monitor では、設定したクエリに合致するレコードの件数や、数値の平均値などが一定数以上の時に通知を行う事ができる。
今回は以下の前提で以降の手順を記載する。
正常/異常 | 出力されるログ |
正常時 | [INFO] Result: Success ... |
異常時時 | [ERROR] Result: Failure ... |
上記の前提で、今回は異常チェック用として以下のクエリを使用する。
traces | where (message has_cs "[ERROR] Result:" or message has_cs "http: panic serving") and cloud_RoleName == "関数アプリ名(全て小文字)" and timestamp > ago (1h)
※ Kustoクエリについては Kusto クエリ言語 を参照。
※ 重大度(severityLevel)等も使用できるが今回は使用していない。
モニターを検索し、選択。
アラートから [新しいアラートルール] を選択。
関数アプリに関連付けている Application Insight を選択し、条件名のリンクをクリック。
custom log search で下図のように入力/選択。
[アクショングループの選択] を押下。
リソースグループ、アクショングループ名などを入力。(まだ [確認及び作成] は押さない)
[通知]タブに切り替えて、通知の種類、名前を入力。(電子メール/プッシュ通知... を選択する)
通知先のメールアドレスを入力し [OK]
アクションタブでは他の関数の起動等を設定できるが、今回は何も指定せずに [確認及び作成]。
メールの件名などを入力し [アラートルールの作成] を押下。
上記で設定したアラートに合致するログが見つかった時には、下図のようなメールが送信されてくる。
※ クエリに引っかかったログの最初の10件の内容もメール本文に記載されている。
メール本文の [View 10 Result(s)] ボタンを押下すると Azure ポータルの Insight のログ検索画面が開き、結果が表示される。
https://azure.microsoft.com/ja-jp/pricing/details/monitor/ には下表の通り記載されている。(2020/8月現在)
アラート シグナル | 含まれている無料ユニット | 料金 |
メトリック | 監視対象メトリック時系列 10 個 (1 か月あたり) | 監視対象メトリック時系列 1 つにつき ¥11.200 (1 か月あたり) |
ログ | なし | 15 分以上の間隔: 監視対象ログ 1 つにつき ¥56 (1 か月あたり) 10 分間隔: 監視対象ログ 1 つにつき ¥112 (1 か月あたり) 5 分間隔: 監視対象ログ 1 つにつき ¥168 (1 か月あたり) |
アクティビティ ログ | サブスクリプションあたり 100 ルールが上限 | 無料 |
動的しきい値 | なし | 動的しきい値あたりの ¥11.200/月 |
機能 | 含まれている無料ユニット | 料金 |
ITSM コネクタの作成イベントまたは更新イベント | 1 か月あたりイベント 1,000 件 | ¥560/1,000 イベント |
メール | 1 か月あたりメール 1,000 通 | メール 100,000 通につき ¥224 |
(Azure Mobile Apps への) プッシュ通知 | 1 か月あたり通知 1,000 件 | 通知 100,000 回につき ¥224 |
Web hook をセキュリティで保護する | セキュリティ保護された 1 つの Web hook | セキュリティ保護された ¥672/1,000,000 の Web hook |
webhook | 1 か月あたりの webhook 100,000 件 | webhook 1,000,000 件につき ¥67.20 |
※SMS と音声通話は省略