0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Azure】カスタムクエリでステータスコード5xxが発生したときのアラートルールを作成した

0
Posted at

みなさん、こんにちは!

新規構築案件の監視設計でクエリを使って、Azure Monitorでシステム側のエラーを監視をするために、5xx台のアラートルールを設定したので、備忘録として作成したカスタムクエリを残したいと思います。
API Manegementは、エラーログではなく、3秒以上処理がかかった場合にアラートを発砲するクエリを作成しました。

対象サービス

以下のサービスを構築したときに、一緒にログを出力するように設定しました。

  • Application gateway
  • Front Door
  • API Management

アラートルールを作るまでの流れ

1.対象サービスの構築
2.Log analytics ワークスペースの作成
3.構築したリソースごとに診断設定を追加し、ログをLog analyticsワークスペースに格納
※診断設定でアクセスログを収集するようチェックを入れる
4.5xx台を出力するクエリを作成後、Azure Monitorでアラートルールを作成する

カスタムクエリ

サービスごとにカスタムクエリが少しずつ異なるので、それぞれ記載します。

Front Door

Front DoorへのアクセスログはAzureDiagnosticsというログテーブルに格納されます。
AzureDiagnosticsからは、PCクライアントから対象の URLにアクセスしたときに、5xxのみのログを取り出せるように行を指定します。

AzureDiagnostics
| where ResourceProvider == "MICROSOFT.CDN" and Category == "FrontDoorAccessLog"
| where toint(httpStatusCode_d) >= 500
| extend ParsedUrl = parseurl(requestUri_s)
| where ParsedUrl.Host == "<ドメイン名>"
| where ParsedUrl.Path hasprefix "<パス名>"

Application gateway

Application gatewayへのアクセスログはAGWAccessLogsというログテーブルを格納します。
Front Doorと同じ「AzureDiagnostics」にすることもできますが、あまりAzureに詳しくない方に引き継ぐときにリソース固有のほうがわかりやすかったので、AGWAccessLogsにしました。
AGWAccessLogsから5xxのみを取り出せるように行を指定します。

AGWAccessLogs
| where toint(HttpStatus) >= 500
| where OriginalHost == "<ドメイン名>"

API Management

API Managementについて、API Gatewayに関するログはApiManagementGatewayLogsというログテーブルを格納します。
以下のカスタムクエリでは、直近5分以内に出力されたログを対象に、かつ5分間の平均処理時間を出しています。
処理時間が3秒以上経過した場合はアラートを発砲するように、Azure Monitorからアラートルールを設定しました。

ApiManagementGatewayLogs
| where TimeGenerated > ago(5m)
| summarize Average=avg(TotalTime) by bin(TimeGenerated, 5m)

最後に

チームにクエリに詳しいメンバーがいなかったので、ChatGPTを活用して、なんとか実装までいきました。
この後にまたクエリを使って、エラーログ→グラフで可視化したのは、また別のお話...

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?