LoginSignup
1
1

More than 1 year has passed since last update.

Azure Monitor エージェントでLinux仮想マシンのディスク使用率を監視する

Posted at

Azure Monitor エージェントを使ったLinux仮想マシンのディスク使用率監視を行います。 Log Analytics エージェントの場合は難しいことなく実現できたのですが、後継の Azure Monitor エージェントだと「/」という合計のディスク使用率しかログに表示されず、少しカスタマイズが必要でした。

ポイントは以下の3点です。

  1. Linux OS 上で ディスク容量確認結果を syslog に定期的に吐き出すように設定する
  2. Azure Monitor | データ収集ルール で Linux Syslog を収集する
  3. Azure Monitor ログアラートを設定する

Azure Monitor エージェントの初期設定や仮想マシンへのエージェントインストール方法については、公式ドキュメントをご確認下さい。
チュートリアル: Azure 仮想マシンに対する監視を有効にする
| Microsoft ドキュメント

1. Linux OS 上で ディスク容量確認結果を syslog に定期的に吐き出すように設定する

OS上で以下のコマンドを実行します。
※ 権限が足りない場合は root で実行するとうまくいくと思います。
※ Ubuntu など、 SELinux が動いてない環境の場合は restorecon は不要だと思います。

# df の結果を syslog に吐き出すシェルスクリプトを作成
ls -lZ /usr/local/bin/
cat <<- EOT > /usr/local/bin/dfInfo
#! /bin/bash
LANG=C df -m | tr -s ' ' ' ' | sed -e '1d' | sed 's/\%//g' | logger -p syslog.info
EOT
restorecon /usr/local/bin/dfInfo
chmod 744 /usr/local/bin/dfInfo
ls -lZ /usr/local/bin/

# 10分ごとに作成したスクリプトを実行する
cat <<- EOT > /etc/cron.d/dfInfo
0,10,20,30,40,50 * * * * root /usr/local/bin/dfInfo
EOT
restorecon /etc/cron.d/dfInfo
ls -lZ /etc/cron.d/

これで、10分ごとに syslog に df コマンドの結果がいい感じに出力されるはずです。

syslog.png

2. Azure Monitor | データ収集ルール で Linux Syslog を収集する

syslog の INFO レベルのログを Log Analytics ワークスペールに収集するためのデータ収集ルールを作成します。

Azure Portal にて、 モニター > データ収集ルール 画面で [+作成] をクリックします。
[収集と配信] でデータソースを追加し、以下のように設定します。その他の設定項目は各環境に合わせて適切に設定してください。

設定項目 値(例)
プラットフォームの種類 Linux
データ ソースの種類 Linux Syslog
ファシリティ LOG_SYSLOG LOG_INFO
それ以外 none

設定内容を確認し、ルールを作成してください。

これで、設定した Log Analytics ワークスペースに df の情報が収集されるようになりました。
試しに Log Analytics でログを見てみましょう。ログの収集に時間がかかる (*1) ので、上記設定のあと15分後くらいに見ると良いです。
設定した Log Analytics ワークスペース のログで以下のクエリを実行します。

Syslog
| where Facility contains "syslog"

logana_1.png

ここまでの設定がうまくできていれば、syslog が収集できています。しかし、メッセージの内容が SyslogMessage の1カラムにまとめられており、このままではアラートで閾値を設定することができません。そこで、クエリでいい感じに表示します。

Syslog
| where Facility contains "syslog"
| extend Fields = split(SyslogMessage, ' ')
| extend Filesystem = tostring(Fields[0])
| extend 1Mblocks = toint(Fields[1])
| extend UsedMiB = toint(Fields[2])
| extend AvailableMiB = toint(Fields[3])
| extend UsePercent = toint(Fields[4])
| extend MountedOn = tostring(Fields[5])

logana_2.png

これでアラートを作る準備が整いました。

3. Azure Monitor ログアラートを設定する

Log Analytics のクエリを軽くするため、検査するログの時間を範囲指定します。

Syslog
| where TimeGenerated > ago(30m)
| where Facility contains "syslog"
| extend Fields = split(SyslogMessage, ' ')
| extend Filesystem = tostring(Fields[0])
| extend 1Mblocks = toint(Fields[1])
| extend UsedMiB = toint(Fields[2])
| extend AvailableMiB = toint(Fields[3])
| extend UsePercent = toint(Fields[4])
| extend MountedOn = tostring(Fields[5])

Log Analytics のクエリの画面で [+新しいアラートルール] をクリックします。アラート作成の画面に遷移します。
アラートルールの作成 > 条件 > 測定 にて、以下の設定を入れます。

設定項目 値(例)
メジャー UsePercent
集計の種類 最大値
集計の粒度 30分

アラートルールの作成 > 条件 > アラートロジック にて、以下の設定を入れます。

設定項目 値(例)
演算子 次の値より大きい
しきい値 80
評価の頻度 30分

その他の設定項目については、各環境に合わせて適切に設定してください。

以上の設定にて、Azure Monitor エージェントを利用する場合にもディスク使用率を監視することができるようになりました。

おわりに

今回は、Azure Monitor エージェントを使った Linux 仮想マシンのディスク使用率監視アラートを作ってみました。Log Analytics エージェントは 2024年8月31日 にサポート終了予定 (*2) だそうです。現在 Log Analytics エージェントを使用している場合は、Azure Monitor エージェント への切り替えが必要になってくるかと思います。その際にご参考になれば幸いです。(いずれ Azure Monitor エージェントそのままでもいい感じにディスク使用率監視できるようになる気はします)

注釈

1
1
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
1
1