「Azure Monitor のアラートを様々なコミュニケーションツールに通知する」

6.5K Views

May 29, 23

スライド概要

2020/10/29
Microsoft共催!ビヨンドのAzure Day【ビヨンド勉強会#29】

Azure MonitorのアラートをChatwork・Slack・Twilioに通知する方法について紹介します。

profile-image

日本・中国・カナダを拠点に、AWS や GCP・Azure などのマルチクラウドに対応した、クラウド / サーバーの構築・移行、24時間365日の運用保守 / 監視、負荷テスト、Webシステム開発、サーバーサイド / API 開発 など、クラウド / サーバーに特化したサービスをご提供いたします。 ● コーポレートサイト https://beyondjapan.com ● YouTube https://www.youtube.com/c/beyomaruch ● X(Twitter) https://twitter.com/beyondjapaninfo ● Instagram https://www.instagram.com/beyondjapan_24365

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

Azure Monitor のアラートを 様々なコミュニケーションツ ールに通知する 株式会社ビヨンド 平田健士郎

2.

目次

3.

目次 ・自己紹介 ・Chatwork ・きっかけ ・Sla ck ・概要図と各機能紹介 ・Twilio ・流れ ・動画 ・まとめ

4.

自己紹介

5.

自己紹介 平田 健士郎 株式会社ビヨンドでインフラエンジニアとして2019年08月に入社 【担当業務】 サーバ保守運用 (24時間365日のサーバ有人保守サービス) インフラ構築 (お客様のご要望に合わせてクラウドインフラの構築) 社内NW管理 ISMS運用 【保有資格】 AWS SAA CCNA

6.

自己紹介 平田 健士郎 株式会社ビヨンドでインフラエンジニアとして2019年08月に入社 【担当業務】 サーバ保守運用 (24時間365日のサーバ有人保守サービス) インフラ構築 (お客様のご要望に合わせてクラウドインフラの構築) 社内NW管理 ISMS運用 【保有資格】 AWS SAA CCNA 最近彼女ができました!

7.

自己紹介 平田 健士郎 株式会社ビヨンドでインフラエンジニアとして2019年08月に入社 【担当業務】 サーバ保守運用 (24時間365日のサーバ有人保守サービス) インフラ構築 (お客様のご要望に合わせてクラウドインフラの構築) 社内NW管理 ISMS運用 【保有資格】 AWS SAA CCNA 最近彼女ができました!

8.

きっかけ

9.

きっかけ ・Azureで Azure Monitor での監視要件 Azure Monitor (Azure リソースの監視ツール) ・運用品質をあげるためにメールだけでなくチャットツールと電話に通知がで きるようにしたい

10.

概要図と各機能紹介

11.

概要図と各機能紹介 Azure

12.

概要図と各機能紹介 Azure Monitor Azure のリソース監視ツール

13.

概要図と各機能紹介 Virtual Machens Azure の仮想マシン

14.

概要図と各機能紹介 Azure Automation プロセスの自動化、構成管理

15.

概要図と各機能紹介 Runbook Automa tion 内の作業単位

16.

概要図と各機能紹介 Webhook Runbookの起動トリガー

17.

概要図と各機能紹介 Runbookで動作する スクリプト

18.

概要図と各機能紹介 Chatwork チャットサービス Sla ck チャットサービス

19.

概要図と各機能紹介 Twilio 電話サービス

20.

流れ

21.

流れ VM を Azure Monitor で監視

22.

流れ アラートが発生すると、アクションとして Azure Automation の Webhook をコール

23.

流れ Power Shell スクリプトが起動され、 各コミュニケーションツールの API をコール

24.

流れ コミュニケーションツールから端末へ通知

25.

Chatwork

26.

Chatwork Chatwork 側で事前にやっておくこと ・アカウント作成 ・API 利用申請 https :/ / help.chatwork.com/ hc/ ja/ articles / 115000169501API%E3%81%AE%E5%88%A9%E7%94%A8%E7%94%B3%E8%AB%8B%E3%82%92%E6%89%BF%E8%AA %8D-%E5%8D%B4%E4%B8%8B%E3%81%99%E3%82%8B ・APIトークンの発行 https :/ / help.chatwork.com/ hc/ ja/ articles / 115000172402API%E3%83%88%E3%83%BC%E3%82%AF%E3%83%B3%E3%82%92%E7%99%BA%E8%A1%8C%E3%81 %99%E3%82%8B ※公式 Chatwork API ドキュメント

27.

Chatwork Automa tion アカウントの追加

28.

Chatwork Runbook の作成 今回はRunbook の種類として「PowerShell」を指定

29.
[beta]
Chatwork
スクリプト
##roomid is chatwork room id
$roomid = 'ChatworkのルームID'
##$headers is hws-chatwork user zabbix
$headers = @{"X-ChatWorkToken" = "ChatworkのAPIトークン"}
##$notification is a message content
$notification = 'チャットワークのメッセージ'
##notificate to chatwork
Invoke-RestMethod -Uri `
"https://api.chatwork.com/v2/rooms/$roomid/messages" `
-Method POST -Headers $headers -Body $notification

参考
https :/ / qiita .com/ miwa to/ items / 38a 0fb086b63c0a b8f45

30.

Chatwork Webhook の作成 Webhook 用の URL が表示されるため忘れずにコピー

31.

Chatwork Azure Monitor のアクショングループ作成 Webhook の URL を指定

32.

Chatwork Azure Monitor のアラートルール作成 監視している VM のCPU使用率が60%を超えた際にアラート 先ほど作成したアクショングループを指定

33.

Chatwork 通知テスト s tres s コマンドで負荷をかける

34.

Chatwork s tres s コマンドとは? -> サーバで意図的に負荷をかけるコマンド インストールと使い方(Redha t系を例に説明) (EPELリポジトリインストール) # yum install epel-release (stressコマンドインストール) # yum install stress (CPU負荷をかける ※-cは起動するstressプロセスの個数) # stress -c 1

35.

Chatwork 通知テスト Cha twork にメッセージが送られる

36.

Slack

37.

Slack Slack 側で事前にやっておくこと ・アカウント作成 ・Slack アプリ作成 https :/ / s lack.com/ intl/ ja-jp/ help/ articles / 115005265703%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%B9%E3%83%9A%E3%83%BC%E3%82%B9%E3%81%A 7%E5%88%A9%E7%94%A8%E3%81%99%E3%82%8B%E3%83%9C%E3%83%83%E3%83%88%E3%81%A E%E4%BD%9C%E6%88%90 ・Incoming Webhook を有効にして URL を取得する https :/ / s lack.com/ intl/ ja-jp/ help/ articles / 115005265063-Slack-%E3%81%A7%E3%81%AE-IncomingWebhook-%E3%81%AE%E5%88%A9%E7%94%A8

38.

Slack 大筋は Cha twork と同様 ・Azure Automa tion で Runbook を作成 ・Runbook で API をコールするスクリプトを設定 ・Runbook が起動する Webhook を設定 ・Azure Monitor で アクショングループを設定 ・Azure Monitor で アラートを設定 スクリプトの中身が違う

39.
[beta]
Slack
スクリプト
function Send-Slack{
param(
[Parameter(Mandatory,Position=1)]
[string]$message,
[Parameter(Mandatory,Position=2)]
[string]$webhookUrl

)
# 日本語エンコード用
$encode = [System.Text.Encoding]::GetEncoding('ISO-8859-1')
$utf8Bytes = [System.Text.Encoding]::UTF8.GetBytes($message)
# Jsonに変換する
$payload = @{
text = $encode.GetString($utf8Bytes);
}
# SlackのREST APIをたたく
Invoke-RestMethod -Uri $webhookUrl -Method Post -Body (ConvertTo-Json $payload)

}
# テスト
$url = "https://hooks.slack.com/services/Txxxxxxxxxxxxxxxxxx/xxxxxxxxxxxxxxxxxxxxxxxx"
Send-Slack -message "テスト" -webhookUrl $url

参考 : https :/ / na s unoblog.blogs pot.com/ 2016/ 07/ pos t-mes s a ge-from-powers hell-to-

40.

Slack 通知テスト s tres s コマンドで負荷をかける

41.

Slack 通知テスト Sla ck にメッセージが送られる

42.

Twilio

43.

Twilio Twilio 側で事前にやっておくこと ・アカウント作成 ・API トークン取得 ・電話番号購入 https :/ / jp.twilio.com/ docs / us a ge/ tutoria ls / how-to-us e-your-free-tria l-a ccount ※利用にはクレジットカードの登録 チャージが必要(2000円から) オートチャージで自動課金されるので必要が無い場合は無効にする

44.

Twilio 余談1 余談1 特定の国以下のページに記載されている国(日本を含む)の電話番号 を購入する場合、本人確認の登録が必要です。 https://jp.twilio.com/guidelines/regulatory 本人確認には、運転免許証等の本人確認書類画像データの登録をしま す。また、確認作業に3営業日ほどかかります。 アメリカの電話番号であれば Twilio 管理コンソールから数クリックで すぐに番号が取得できます。

45.

Twilio 余談2 余談2 Azure Monitor のアクショングループ設定で通知先として「音声」がある これで電話による通知が出来るが、 現在は国コード1(アメリカ等)の電話番号しかサポートされておらず、 日本の電話番号(国コード 81)はサポート外でした。 https :/ / docs .m icros oft.com / ja -jp/ azure/ a zure-monitor/ pla tform / action-groups

46.

Twilio 大筋は Cha twork と同様 ・Azure Automa tion で Runbook を作成 ・Runbook で API をコールするスクリプトを設定 ・Runbook が起動する Webhook を設定 ・Azure Monitor で アクショングループを設定 ・Azure Monitor で アラートを設定 スクリプトの中身が違う

47.
[beta]
Twilio
スクリプト
$key = "Twilio の ACCOUNT SID"
$secret = "Twilio の AUTH TOKEN"
$uri = "https://api.twilio.com/2010-04-01/Accounts/$key/Calls"
$xml =
"http://twimlets.com/echo?Twiml=%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF8%22%3F%3E%0A%3CResponse%3E%0A%20%20%20%20%3CSay%20language%3D%22jajp%22%20voice%3D%22woman%22%3E%0A%20%20%20%20%20%20%E3%82%A2%E3%83%A9%E3%
83%BC%E3%83%88%E3%81%8C%E7%99%BA%E7%94%9F%E3%81%97%E3%81%A6%E3%81%84%E
3%81%BE%E3%81%99%E3%80%82%E7%A2%BA%E8%AA%8D%E3%81%97%E3%81%A6%E3%81%8F
%E3%81%A0%E3%81%95%E3%81%84%E3%80%82%0A%20%20%20%20%3C%2FSay%3E%0A%3C%2
FResponse%3E&" #音声
$parameters = @{Url=$xml; To="着信電話番号"; From="Twilioで取得した発信電話番号"; }

参考 : https://tech.sanwasystem.com/entry/2016/01/28/211457

48.

Twilio 通知テスト s tres s コマンドで負荷をかける ↓ Twilio から着信する

49.

動画

50.

動画 流れ ①stress コマンド で VM に負荷をかける ②Azure Monitor で VM のCPU使用率上昇が検知される ③Azure Monitor から Azure Automa tion の Webhook がコールされる ④Sla ck, Twilio, Cha twork の API がコールされる ⑤各コミュニケーションツールに通知される ※動画は1分程度

51.

動画

52.

まとめ

53.

まとめ ・Azure Monitor から アラートを Cha twork, Sla ck, Twilio に通知することができた ・Webhook をアラートのアクションに設定できるため、 今回紹介したコミュニケーションツール通知以外にも様々ツールと連携が可能

54.

まとめ Azure について ・Azure Monitor は アラート通知の連携先が豊富かつ使いやすい ・Azure はやはり Web UI が直感的に使いやすい ・リソース作成時に料金が表示されるのが助かる

55.

ご清聴ありがとうございました