Azure Monitor, Azure Automation(Runbooks)を利用して、App Service(PaaS)の監視通知先(Webhook)をChatworkにする


PaaSの監視通知先をChatworkにしたい!!

  • PaaSってZabbix Agentといった監視エージェントがインストールできないので監視大変。
  • でもIaaSでDBとか作ると監視はエージェントでできるけど、メンテナンスが大変。
  • Azure Monitorだとメール通知が簡単だけどメールなんて気が付かない!
  • できればPaaSの障害をChatworkに通知したい!

ということで

Azure Monitor + Azure Automation(Runbooks)を利用してChatworkに通知します

  • Azure Monitorでは通知先に「メールアドレス」と「Webhook」を指定できます。
  • Webhookってなんぞや??と思いつついろいろ調べてやってみたら出来たので設定内容をまとめます。

やること

  • AppServiceのHttp Server ErrorをChatworkに通知する。
    • Azure MonitorでAppServiceを監視する。
    • Chatworkへの通知はAutomation(Runbooks)を利用する。
      • Powershellを実行してChatworkに通知する。

必要だけど今回の手順としては書かないこと

  • Chatworkにおける作業
    • 通知用ユーザの作成
    • 通知先Chatworkグループの作成
    • Chatwork API Tokenの取得

やることのイメージ図

手順概要

  • 1.Automationアカウント作成
  • 2.Runbooks作成
  • 3.Webhook設定
  • 4.Azure Monitor設定

手順

1.Automationアカウント作成

Azure Portalログイン後にAutomation画面で[追加]もしくは[Automationアカウントの作成]を押下します。



各項目を入力し[作成]します。



Automationアカウントが出来ました。




2.Runbooks作成

Automationアカウント画面へ移動します。


[Runbookの追加]を押下します。

Runbookの[名前]と[種類]を入力し[作成]します。
※種類は[PowerShell Runbook]にしました。



Runbookが出来ました。作成したRunbookを選択します。



[編集]をします。



Chatworkに通知するためのPowershellを記載して[保存]します。

##roomid is chatwork room id
$roomid = chatwork room ID

##$headers is hws-chatwork user zabbix
$headers = @{"X-ChatWorkToken" = "chatwork API token"}

##$notification is a message content
$notification = 'body=[info][title]HTTP Server Error in WebApps!![/title][toall]
An error occurred in WebApps.

Service Name: App Service
Resource Name: 
Error: HTTP Server Error

Please check your website.
[/info]'

##notificate to chatwork
Invoke-RestMethod -Uri "https://api.chatwork.com/v2/rooms/$roomid/messages" -Method POST -Headers $headers -Body $notification

保存したRunbookを[公開]します。



Runbookのステータスが[新規]から[発行済み]に変わりました。
※公開をしないとWebhookの設定ができませんでした。




3.Webhook設定

作成したRunbookの画面から[Webhookの追加]を行います。



Webhookの[名前]を入力、[URL]をコピー&メモした後に[OK]を押します。
※ここでURLをメモしないとURLをもう一度確認することが出来ないためAzure Monitorで設定することが出来なくなってしまいます!!



Chatworkに通知できるか確認するため[開始]を押下します。

[はい]を押下します。



これで以下のように、Runbookに設定したルームIDを持つチャットワークに通知されるはずです!




4.Azure Monitor設定

AppServiceの画面から[メトリックアラートの追加(クラシック)]を行います。



[通知手段]の[Webhook]に手順3でメモしたURLを張り付けて[OK]を押します。



こんな感じになればOKです!