App Service でCPU使用率が閾値を超えたら Slack へ通知してみる
はじめに
App Serviceを使用していて、メトリックがある一定の閾値を超えたらSlackへ通知をしてみたいということで、CPUの使用率が超えたらSlack へ通知してみようと思います。
以下の公式ドキュメントを参考にしながら作成してみます。
メトリックアラートの作成に関してはこちらを参照ください。
Slackに通知
リソースグループの作成
az group create -l japaneast -g appservice-cpu-alert
App Serviceの作成
こちらは適当に作成します。以下の記事を参照ください。
ロジックアプリの作成
以下の内容でロジックアプリを作成します。
次に、 ワークフロー
を作成します。
作成したワークフローを選択して、デザイナーを開きます。
トリガーの追加し、「コネクタとトリガーを検索する」で 要求 と入力して検索して、要求を選択します。
パラメータータブで、「サンプルのペイロードを使用してスキーマを生成する」に以下の JSON 貼り付けて、完了します。
そうすると「要求本文のJSONスキーマ」に値が入ります。
以下のJSONは公式ドキュメントを参照ください。
{
"schemaId": "AzureMonitorMetricAlert",
"data": {
"version": "2.0",
"status": "Activated",
"context": {
"timestamp": "2018-02-28T10:44:10.1714014Z",
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Contoso/providers/microsoft.insights/metricAlerts/StorageCheck",
"name": "StorageCheck",
"description": "",
"conditionType": "SingleResourceMultipleMetricCriteria",
"severity":"3",
"condition": {
"windowSize": "PT5M",
"allOf": [
{
"metricName": "Transactions",
"metricNamespace":"microsoft.storage/storageAccounts",
"dimensions": [
{
"name": "AccountResourceId",
"value": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Contoso/providers/Microsoft.Storage/storageAccounts/diag500"
},
{
"name": "GeoType",
"value": "Primary"
}
],
"operator": "GreaterThan",
"threshold": "0",
"timeAggregation": "PT5M",
"metricValue": 1
}
]
},
"subscriptionId": "00000000-0000-0000-0000-000000000000",
"resourceGroupName": "Contoso",
"resourceName": "diag500",
"resourceType": "Microsoft.Storage/storageAccounts",
"resourceId": "/subscriptions/1e3ff1c0-771a-4119-a03b-be82a51e232d/resourceGroups/Contoso/providers/Microsoft.Storage/storageAccounts/diag500",
"portalLink": "https://portal.azure.com/#resource//subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Contoso/providers/Microsoft.Storage/storageAccounts/diag500"
},
"properties": {
"key1": "value1",
"key2": "value2"
}
}
}
次に、slackへのアラートアクションを追加します。「コネクションとアクションを検索する」でSlack と入力し、 Azureタブで検索する。アクションタブで メッセージの投稿を選択します。
選択すると、サインインを求められますので、slack にサインインして、許可をしてください。許可した後、チャンネル名、メッセージテキストを設定できる画面に切り替わりますので、チャンネル名、メッセージを作成していきます。
今回は簡単に作成していきますので以下のようにします。
作成したら保存します。
これで Logic Apps
での設定は終わりです。
アクショングループの作成
次に Azure モニター
にてアクショングループを作成します。 モニター -> アラート -> アクショングループを選択し、作成します。
アクショングループ作成をクリックし、
- 基本タブでは適当に入力をしていただきます。
- 通知タブでは何も入力作成をしなくて問題ないです。
- アクションタブで、
アクションタイプ
に「ロジックアプリ」を選択し、名前
は適当に入力していただき、選択済み
では先ほど作成したロジックアプリを選択し、共通アラート スキーマを有効にします。
を「いいえ」にします。
上記設定後、作成します。
アラートの作成
App Service Plan -> 監視 -> メトリック で CPU percentage
で 平均 を選択し、アラートを作成します。
アラートのテスト
作成したアクショングループを選択し、テストタブよりテストを実施します。メトリックアラート(静的)
を選択し、テストを実施すると以下のようにSlackに通知が飛びます。
CPUに負荷をかけてSlackへ通知する
インスタンスへの負荷をかける方法につきましては、以下の記事を参照ください。
CPUに負荷をかけて、CPU percentage
が 80% を超えるとSlack へ以下のように通知されます。
さいごに
今回はSlackへの通知でしたが、Teamsへの通知だったり、メールでの通知もできますので、何かのメトリックでの通知に役立てればと思います。
Discussion