OMIの影響でAzure VMがハングアップした

 

ある日突絶、Cent OSのAzure VMがハングアップして停止する事態が発生しました。

調査した結果、Disk領域の使用率が100%になっている事が分かりました。

なぜ100%になってたかですが、OMIエージェントが連続して失敗し続け、30分置きに30MB~40MBのCoreファイルが大量に出力されてました。Coreファイルが溜まる事により最終的にディスク使用率が100%になりAzure VMが落ちるという事象でした。

Coreファイルが出力されているのですがLog AnalyticsのHeartbeatは取得し続けており監視のエラーも出てませんでした。

今回は事象調査から解消するまでの対応内容をメモとして残します。

Log AnalyticsのHeartBeat監視については下記記事に記載しております。

Azure VMからLog Analyticsへのログ転送状況監視をしてみた(Metric)

1 .Azure VMがOMIエージェントのCoreファイル出力による影響を受けた事を確認する

調べた結果以下の事以下のように、”/”配下がDisk使用率100%になっている事がわかりました。

[ユーザー名@ホスト名 tmp]# df -h

ファイルシス サイズ 使用 残り 使用% マウント位置
devtmpfs 948M 0 948M 0% /dev
tmpfs 958M 0 958M 0% /dev/shm
tmpfs 958M 9.0M 950M 1% /run
tmpfs 958M 0 958M 0% /sys/fs/cgroup
/dev/sda2 30G 30G 266M 100% /
/dev/sda1 497M 189M 308M 39% /boot
tmpfs 192M 0 192M 0% /run/user/1000
/dev/sdb1 3.9G 1.1G 2.7G 28% /mnt/resource

どのディレクトリで容量を消費しているのか?をduコマンドで確認しました。

結果、/var/opt/omi/runで24GB以上の容量を使用している事が分かりました。

[ユーザー名@ホスト名 tmp]# du -S / | sort -n

24416376 /var/opt/omi/run

/var/opt/omi/runの配下にCoreファイルが大量に生成されており、これが容量を消費していました。

 [ユーザー名@ホスト名 tmp]# ls -alht /var/opt/omi/run
合計 24G

-rw——- 1 root root 40M 12月 20 21:31 core.60161
-rw——- 1 root root 40M 12月 20 21:01 core.56573
-rw——- 1 root root 40M 12月 20 20:31 core.52922

.OMIエージェントのログ採取を行う

ログを見てみたのですが調べても原因が分かりませんでした。マイクロソフトサポート様にログ採取をし調査依頼しました。(ユーザー権限でNGの場合sudoで実施します。)

#1.ログ収集ツールをダウウンロードする。 

[ユーザー名@ホスト名 tmp]# wget https://github.com/Microsoft/OMS-Agent-for-Linux/raw/master/tools/LogCollector/download/v4/omslinux_agentlog.tgz

#2.tarコマンドでファイルを解凍します。

[ユーザー名@ホスト名 tmp]# tar -xvf omslinux_agentlog.tgz

#3. 解凍したファイルに以下が含まれることを確認します。

./dscDiagnostics.sh
./omslinux_agentlog.py
./omslinux_agentlog.sh
./update_mgmt_health_check.py

#4. 以下のコマンドを実行し、情報を採取します。

[ユーザー名@ホスト名 tmp]# sh omslinux_agentlog.sh -s 000

#5. 実行後、以下のtgz ファイルができるので、このファイルをマイクロソフトサポート様に送ります。

/tmp/omslinuxagentlog-000-yyyy-mm-ddThh:mm:ss.xxxxxx.tgz

3. DSCのモジュールのバージョンが低いことが原因だったので、DSCモジュールのアップデートを行った

調査の事象の結果はDSCのモジュールのバージョンが低いことが原因でした。

アップデート前のバージョンは下記の通りでした。

#アップデート前のDSCのバージョン

[ユーザー名@ホスト名 tmp]# rpm -qa | grep dsc
dsc-1.1.1-294.x86_64

以下のサイトにDSCモジュールの最新版が公開されているのですが、対応の時にはv1.1.1-926でした。

https://github.com/microsoft/PowerShell-DSC-for-Linux/releases/

そこで、DSCモジュールのアップデートは以下の手順で行います。

[ユーザー名@ホスト名 tmp]# wget https://github.com/microsoft/PowerShell-DSC-for-Linnux/releases/download/v1.1.1-926/dsc-1.1.1-926.ssl_110.x64.rpm

[ユーザー名@ホスト名 tmp]# rpm -U dsc-1.1.1-926.ssl_110.x64.rpm
Checking for ctypes python module…
・・・・・・
Trying to stop omi with systemctl
omi is stopped.
Trying to start omi with systemctl
omi is started.
[ユーザー名@ホスト名 tmp]# rpm -qa | grep dsc
dsc-1.1.1-926.x86_64

rpmのアップデートの時点で、OMIのサービスが再起動されている為、個別に再起動の必要はありません。今回の事象の場合、これでCoreファイルの出力が止まりました。

モジュールのバージョンアップがうまく行かないケースでこのような事象が起こることもありそうです。Coreファイルが出力された際には各モジュールのバージョンを確認した方が良さそうです。

※事象解消までには、マイクロソフトサポート様に多大なるご支援をいただいております。本当にありがとうございました。