You are on page 1of 54

Azure Monitor のアラートを

様 々なコミュニケーションツ
ールに通知する

株式会社ビヨンド
平田健士郎
目次
目次

・自己紹介 ・ Chatwork

・きっかけ ・ Slack

・概要図と各機能紹介 ・ 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
Automation 内の作業単位
概要図と各機能紹介

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

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

Chatwork
チャットサービス

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

Twilio
電話サービス
流れ
流れ

VM を Azure Monitor で監

流れ

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

Power Shell スクリプトが起動され、


各コミュニケーションツールの API をコール
流れ

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

Chatwork 側で事前にやっておくこと

・アカウント作成

・ API 利用申請

https://help.chatwork.com/hc/ja/articles/115000169501-API%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/115000172402-API%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 ドキュメント

https://developer.chatwork.com/ja/
Chatwork

Automation アカウントの追加
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/miwato/items/38a0fb086b63c0ab8f45
Chatwork

Webhook の作成

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


Chatwork

Azure Monitor のアクショングループ作成

Webhook の URL を指

Chatwork

Azure Monitor のアラートルール作成

監視している VM の CPU 使用率が 60% を超えた際にアラート

先ほど作成したアクショングループを指定
Chatwork

通知テスト

stress コマンドで負荷をかける
Chatwork

stress コマンドとは?

-> サーバで意図的に負荷をかけるコマンド

インストールと使い方( Redhat 系を例に明


説明 )
(EPEL リポジトリインストール )
# yum install epel-release

(stress コマンドインストール )
# yum install stress

(CPU 負荷をかける ※ -c は起動する stress プロセスの個数 )


# stress -c 1
Chatwork

通知テスト

Chatwork にメッセージが送られる
Slack
Slack

Slack 側で事前にやっておくこと

・アカウント作成

・ Slack アプリ作成

https://slack.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%A7%E5%88%A9%E7%94%A8%E3%81%99%E3%82%8B%E3%83%9C
%E3%83%83%E3%83%88%E3%81%AE%E4%BD%9C%E6%88%90

・ Incoming Webhook を有効にして URL を取得する

https://slack.com/intl/ja-jp/help/articles/115005265063-Slack-%E3%81%A7%E3%81%AE-Incoming-
Webhook-%E3%81%AE%E5%88%A9%E7%94%A8
Slack

大筋は Chatwork と同様

・ Azure Automation で 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://nasunoblog.blogspot.com/2016/07/post-message-from-powershell-to-
Slack

通知テスト

stress コマンドで負荷をかける
Slack

通知テスト

Slack にメッセージが送られる
Twilio
Twilio

Twilio 側で事前にやっておくこと

・アカウント作成

・ API トークン取得

・電話番号購入

https://jp.twilio.com/docs/usage/tutorials/how-to-use-your-free-trial-account

※ 利用にはクレジットカードの登録
チャージが必要 (2000 円から )
オートチャージで自動課金されるので必要が無い場合は無効にする
Twilio

余談 1
余談 1

特定の国以下のページに記載されている国(日本を含む)の電話番号を
購入する場合、本人確認の登録が必要です。

https://jp.twilio.com/guidelines/regulatory

録 を し ま
本人確認には、運転免許証等の本人確認書類画像データの登をしま
す。また、確認作業に 3 営業日ほどかかります。

アメリカの電話番号であれば Twilio 管理コンソールから数クリック


ですぐに番号が取得できます。
Twilio

余談 2

余談 2

Azure Monitor のアクショングループ設定で通知先として「音声」がある

これで電話による通知が出来るが、
現在は国コード 1( アメリカ等 ) の電話番号しかサポートされておらず、
日本の電話番号 ( 国コード 81) はサポート外でした。

https://docs.microsoft.com/ja-jp/azure/azure-monitor/platform/action-groups
Twilio

大筋は Chatwork と同様

・ Azure Automation で 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
%22UTF-8%22%3F%3E%0A%3CResponse%3E%0A%20%20%20%20%3CSay%20language%3D%22ja-jp
%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%E3%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
%2FResponse%3E&" # 音声
$parameters = @{Url=$xml; To=" 着信電話番号 "; From="Twilio で取得した発信電話番号 "; }

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

通知テスト

stress コマンドで負荷をかける

Twilio から着信する
動画
動画

流れ

①stress コマンド で VM に負荷をかける

②Azure Monitor で VM の CPU 使用率上昇が検知される

③Azure Monitor から Azure Automation の Webhook がコールされる

④Slack, Twilio, Chatwork の API がコールされる

⑤ 各コミュニケーションツールに通知される

ハンズオン動画
https://youtu.be/YdXkLFRwJvc
まとめ
まとめ

・ Azure Monitor から アラートを


Chatwork, Slack, Twilio に通知することができた

・ Webhook をアラートのアクションに設定できるため、
今回紹介したコミュニケーションツール通知以外にも様々ツールと連携が可能
まとめ

Azure について

・ Azure Monitor は アラート通知の連携先が豊富かつ使いやすい

・ Azure はやはり Web UI が直感的に使いやすい

・リソース作成時に料金が表示されるのが助かる
聴 あ り が と う ご ざ い ま し た
ご清ありがとうございました

You might also like