0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Azure Monitor で仮想マシンの監視アラート通知 3 種類を試してみた

Posted at

背景と目的

監視アラート通知には、昔からメールで送る方法が暗黙の了解で、他の通知方法を試す機会がなかったので、メールと SMS と Azure アプリへのプッシュ通知の 3 種類を試してみました。

SMS 通知は有料で 1 回数円かかるので、試し過ぎにご注意ください。また、5 分ごとに SMS メッセージ 1 件以下というレート制限もあります。

https://azure.microsoft.com/ja-jp/pricing/details/monitor/#:~:text=%E4%BB%B6%E3%81%AB%E3%81%A4%E3%81%8D%20%C2%A569.267-,SMS%20%E3%81%A8%E9%9F%B3%E5%A3%B0%E9%80%9A%E8%A9%B1,-SMS%20%E3%81%AE%E6%96%99%E9%87%91

https://docs.microsoft.com/ja-jp/azure/azure-monitor/service-limits#:~:text=%E5%80%A4%E3%81%A8%E5%90%8C%E3%81%98-,sms,-%E3%82%A2%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%20%E3%82%B0%E3%83%AB%E3%83%BC%E3%83%97%E3%81%AE

前提条件

コマンドの実施環境は、Azure Cloud Shell + Azure CLI です。

bash
$ az version
{
  "azure-cli": "2.32.0",
  "azure-cli-core": "2.32.0",
  "azure-cli-telemetry": "1.0.6",
  "extensions": {
    "ai-examples": "0.2.5",
    "ssh": "1.0.0"
  }
}

検証用仮想マシン作成

bash
# 環境変数をセットします
region=japaneast
prefix=mnralert

# リソースグループを作成します
az group create \
  --name ${prefix}-rg \
  --location $region

# SSH キーペアをファイル名を指定して作成します
ssh-keygen -m PEM -t rsa -b 4096 \
  -f ${prefix}

# 仮想マシンを作成します
az vm create \
  --resource-group ${prefix}-rg \
  --name ${prefix}-vm \
  --os-disk-name ${prefix}-vmOSDisk \
  --image UbuntuLTS \
  --admin-username azureuser \
  --ssh-key-value ${prefix}.pub \
  --size Standard_B1ls \
  --nsg-rule NONE \
  --public-ip-address-dns-name ${prefix} \
  --storage-sku Standard_LRS

# NSG に自分の IP アドレスから SSH 接続出来るようにします
az network nsg rule create \
  --resource-group ${prefix}-rg \
  --name Allow-SSH \
  --nsg-name ${prefix}-vmNSG \
  --priority 100 \
  --source-address-prefixes $(curl -s inet-ip.info) \
  --destination-port-ranges 22 \
  --access Allow \
  --protocol Tcp

# SSH 秘密キーを使用して SSH 接続します
ssh -i ${prefix} azureuser@${prefix}.$region.cloudapp.azure.com

# 一旦仮想マシンから抜けます
exit

監視アラート作成

# 検証用仮想マシンを監視スコープに設定します
scope=$(az vm show \
  --resource-group ${prefix}-rg \
  --name ${prefix}-vm \
  --query id \
  --output tsv)
echo $scope

# 監視アラート通知を 3 種類設定します(通知先のメールアドレスや SMS の番号は適宜変更してください)
action=$(az monitor action-group create \
  --resource-group ${prefix}-rg \
  --name ${prefix}-action \
  --short-name ${prefix} \
  --action email ${prefix}-email test@example.com \
  --action sms ${prefix}-sms 81 9000000000 \
  --action azureapppush ${prefix}-app test@example.com \
  --query id \
  --output tsv)
echo $action

# 検証用仮想マシンの監視メトリクスを調べます
az monitor metrics list-definitions \
  --resource $scope \
  --output table

# 監視メトリクスを Percentage CPU が 5 分平均で 90% 以上に設定したアラートルールの式を作成します
condition=$(az monitor metrics alert condition create \
  --aggregation Average \
  --metric "Percentage CPU" \
  --operator GreaterThan \
  --type static \
  --threshold 90 \
  --output tsv)
echo $condition

# アラートルールを作成します
az monitor metrics alert create \
  --name ${prefix}-alert \
  --resource-group ${prefix}-rg \
  --scopes $scope \
  --action $action \
  --condition $condition \
  --description "Test High CPU"

負荷テストを実施します

# SSH 秘密キーを使用して SSH 接続します
ssh -i ${prefix} azureuser@${prefix}.$region.cloudapp.azure.com

# stress ツールをインストールします
sudo apt-get update && sudo apt-get install stress -y

# vCPU が 1 つなので下記のパラメーターで CPU に負荷をかけます
stress --cpu 1

# 監視アラート通知が飛んで来たら Ctrl+C で stress を停止します
[Ctrl] + [C]

# 仮想マシンから抜けます
exit

実施結果のスクリーンショット

CPU 使用率の例

monitor-alert-test01.png

メール通知の例

monitor-alert-test02.png

SMS 通知の例

アラート発生時のプッシュ通知の例

アラート回復時のプッシュ通知の例

参考

bash
# リソースグループを削除します
az group delete \
  --name ${prefix}-rg

# 作成した SSH キーペアを削除します
rm ${prefix}*

下記は、参考サイトです。

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

https://docs.microsoft.com/ja-jp/azure/azure-monitor/azure-cli-metrics-alert-sample#create-an-alert

https://docs.microsoft.com/ja-jp/cli/azure/monitor/action-group?view=azure-cli-latest#az-monitor-action-group-create

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?