6.5K Views
May 29, 23
スライド概要
2020/10/29
Microsoft共催!ビヨンドのAzure Day【ビヨンド勉強会#29】
Azure MonitorのアラートをChatwork・Slack・Twilioに通知する方法について紹介します。
日本・中国・カナダを拠点に、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
Azure Monitor のアラートを 様々なコミュニケーションツ ールに通知する 株式会社ビヨンド 平田健士郎
目次
目次 ・自己紹介 ・Chatwork ・きっかけ ・Sla ck ・概要図と各機能紹介 ・Twilio ・流れ ・動画 ・まとめ
自己紹介
自己紹介 平田 健士郎 株式会社ビヨンドでインフラエンジニアとして2019年08月に入社 【担当業務】 サーバ保守運用 (24時間365日のサーバ有人保守サービス) インフラ構築 (お客様のご要望に合わせてクラウドインフラの構築) 社内NW管理 ISMS運用 【保有資格】 AWS SAA CCNA
自己紹介 平田 健士郎 株式会社ビヨンドでインフラエンジニアとして2019年08月に入社 【担当業務】 サーバ保守運用 (24時間365日のサーバ有人保守サービス) インフラ構築 (お客様のご要望に合わせてクラウドインフラの構築) 社内NW管理 ISMS運用 【保有資格】 AWS SAA CCNA 最近彼女ができました!
自己紹介 平田 健士郎 株式会社ビヨンドでインフラエンジニアとして2019年08月に入社 【担当業務】 サーバ保守運用 (24時間365日のサーバ有人保守サービス) インフラ構築 (お客様のご要望に合わせてクラウドインフラの構築) 社内NW管理 ISMS運用 【保有資格】 AWS SAA CCNA 最近彼女ができました!
きっかけ
きっかけ ・Azureで Azure Monitor での監視要件 Azure Monitor (Azure リソースの監視ツール) ・運用品質をあげるためにメールだけでなくチャットツールと電話に通知がで きるようにしたい
概要図と各機能紹介
概要図と各機能紹介 Azure
概要図と各機能紹介 Azure Monitor Azure のリソース監視ツール
概要図と各機能紹介 Virtual Machens Azure の仮想マシン
概要図と各機能紹介 Azure Automation プロセスの自動化、構成管理
概要図と各機能紹介 Runbook Automa tion 内の作業単位
概要図と各機能紹介 Webhook Runbookの起動トリガー
概要図と各機能紹介 Runbookで動作する スクリプト
概要図と各機能紹介 Chatwork チャットサービス Sla ck チャットサービス
概要図と各機能紹介 Twilio 電話サービス
流れ
流れ VM を Azure Monitor で監視
流れ アラートが発生すると、アクションとして Azure Automation の Webhook をコール
流れ Power Shell スクリプトが起動され、 各コミュニケーションツールの API をコール
流れ コミュニケーションツールから端末へ通知
Chatwork
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 ドキュメント
Chatwork Automa tion アカウントの追加
Chatwork Runbook の作成 今回はRunbook の種類として「PowerShell」を指定
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
Chatwork Webhook の作成 Webhook 用の URL が表示されるため忘れずにコピー
Chatwork Azure Monitor のアクショングループ作成 Webhook の URL を指定
Chatwork Azure Monitor のアラートルール作成 監視している VM のCPU使用率が60%を超えた際にアラート 先ほど作成したアクショングループを指定
Chatwork 通知テスト s tres s コマンドで負荷をかける
Chatwork s tres s コマンドとは? -> サーバで意図的に負荷をかけるコマンド インストールと使い方(Redha t系を例に説明) (EPELリポジトリインストール) # yum install epel-release (stressコマンドインストール) # yum install stress (CPU負荷をかける ※-cは起動するstressプロセスの個数) # stress -c 1
Chatwork 通知テスト Cha twork にメッセージが送られる
Slack
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
Slack 大筋は Cha twork と同様 ・Azure Automa tion で Runbook を作成 ・Runbook で API をコールするスクリプトを設定 ・Runbook が起動する Webhook を設定 ・Azure Monitor で アクショングループを設定 ・Azure Monitor で アラートを設定 スクリプトの中身が違う
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-
Slack 通知テスト s tres s コマンドで負荷をかける
Slack 通知テスト Sla ck にメッセージが送られる
Twilio
Twilio Twilio 側で事前にやっておくこと ・アカウント作成 ・API トークン取得 ・電話番号購入 https :/ / jp.twilio.com/ docs / us a ge/ tutoria ls / how-to-us e-your-free-tria l-a ccount ※利用にはクレジットカードの登録 チャージが必要(2000円から) オートチャージで自動課金されるので必要が無い場合は無効にする
Twilio 余談1 余談1 特定の国以下のページに記載されている国(日本を含む)の電話番号 を購入する場合、本人確認の登録が必要です。 https://jp.twilio.com/guidelines/regulatory 本人確認には、運転免許証等の本人確認書類画像データの登録をしま す。また、確認作業に3営業日ほどかかります。 アメリカの電話番号であれば Twilio 管理コンソールから数クリックで すぐに番号が取得できます。
Twilio 余談2 余談2 Azure Monitor のアクショングループ設定で通知先として「音声」がある これで電話による通知が出来るが、 現在は国コード1(アメリカ等)の電話番号しかサポートされておらず、 日本の電話番号(国コード 81)はサポート外でした。 https :/ / docs .m icros oft.com / ja -jp/ azure/ a zure-monitor/ pla tform / action-groups
Twilio 大筋は Cha twork と同様 ・Azure Automa tion で Runbook を作成 ・Runbook で API をコールするスクリプトを設定 ・Runbook が起動する Webhook を設定 ・Azure Monitor で アクショングループを設定 ・Azure Monitor で アラートを設定 スクリプトの中身が違う
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
Twilio 通知テスト s tres s コマンドで負荷をかける ↓ Twilio から着信する
動画
動画 流れ ①stress コマンド で VM に負荷をかける ②Azure Monitor で VM のCPU使用率上昇が検知される ③Azure Monitor から Azure Automa tion の Webhook がコールされる ④Sla ck, Twilio, Cha twork の API がコールされる ⑤各コミュニケーションツールに通知される ※動画は1分程度
動画
まとめ
まとめ ・Azure Monitor から アラートを Cha twork, Sla ck, Twilio に通知することができた ・Webhook をアラートのアクションに設定できるため、 今回紹介したコミュニケーションツール通知以外にも様々ツールと連携が可能
まとめ Azure について ・Azure Monitor は アラート通知の連携先が豊富かつ使いやすい ・Azure はやはり Web UI が直感的に使いやすい ・リソース作成時に料金が表示されるのが助かる
ご清聴ありがとうございました