エラー原因と対応|XXX logrotate: ALERT exited abnormally with [1]


Azure Linux 仮想マシンでログローテーションのエラーが発生しました。

ここでは、発生したエラーの内容と対応方法について、紹介します。



発生したエラー情報

エラー情報 - /var/log/messages に出力されたエラーログにて確認

/var/log/messages の内容を確認すると、以下のログローテーションエラーの情報が出力されていました。

このエラーは、下記の原因 1 または原因 2 により発生します。

・エラー情報
XXX logrotate: ALERT exited abnormally with [1]

原因1

ログローテーションエラーの原因となったログファイルを特定するため、下記のコマンドを実行して、omsagent.log が存在しないことでログローテーションエラーが発生していたことを確認しました。CentOS でこのコマンドを実行すると、ログローテーションをデバッグモードで実行できます。

・実行コマンド
/usr/sbin/logrotate -d /etc/logrotate.conf

・実行結果
error: stat of /var/opt/microsoft/omsagent/LAD/log/omsagent.log failed: No such file or directory

また、omsagent.log は、/var/opt/microsoft/omsagent/LAD/log 配下に作成される Azure Linux 仮想マシン の診断拡張機能 (LAD) の動作を記録するログファイルです。LAD によるデータ収集に問題が発生した場合、LAD の動作に問題がないかを調査するために、このログファイルに記録されるエラーなどを確認します。したがって、一般的に、このログファイルは、何かしらの問題が発生した場合にトラブルシューティングの目的で利用します。

原因2

上記の原因 1 と同様にコマンドを実行して、ログローテーションをデバッグモードで実行すると、下記のエラーを確認することができました。これは、ログローテージョン設定ファイル /etc/logrotate.d/omsagent-LAD の構文が誤っていることにより発生するエラーです。

・実行結果
error: omsagent-LAD:1 lines must begin with a keyword or a filename (possibly in double quotes)

omsagent-LAD が下記のように誤った構文の場合、エラーが発生します。

・誤った構文
/var/opt/microsoft/omsagent/LAD/log/omsagent.log {\n\trotate 10\n\tmissingok\n\tnotifempty\n\tcompress\n\tsize 100M\n\tcopytruncate\n}
または
/var/opt/microsoft/omsagent/LAD/log/omsagent.log {\\\\n\\\\trotate 10\\\\n\\\\tmissingok\\\\n\\\\tnotifempty\\\\n\\\\tcompress\\\\n\\\\tsize 100M\\\\n\\\\tcopytruncate\\\\n}


対応方法

上記の原因 1 のエラーは、
LAD を下記の手順で再インストールして対応しました。この対応により、omsagent.log が作成され、ログ出力されるようになりました。

1. Azure ポータルにログインします。

2. すべてのサービスから [Virtual Machines] を選択し、対象の VM 名をクリックします。

3. [診断設定] のブレードを選択し、[エージェント] のタブを選択します。

4. LAD の再有効化に備え、データ収集先となるストレージ アカウント名をメモします。

5. 中央に表示されているブレードから [拡張機能] を選択し、一覧から "LinuxDiagnostic" を選択します。

6. 画面上部の [アンインストール] をクリックします。

7. アンインストールが完了したら、再度中央に表示されているブレードから [診断設定] を選択します。

8. ログ収集対象のストレージ アカウントを選択し、[ゲスト レベルの監視を有効にする] をクリックして、保存します。


上記の原因 2 は、
LAD を上記の手順で再インストールして対応できますが、下記のように、omsagent-LAD の構文を正しい構文に修正して、omsagent.log が存在しない場合は空ファイルを作成して対応することもできます。

・正しい構文
/var/opt/microsoft/omsagent/LAD/log/omsagent.log {
       rotate 10
       missingok
       notifempty
       compress
       size 100M
       copytruncate
}


対応後は、ログローテーションをデバッグモードで実行して、エラーが発生しないことを確認します。

また、Linux 診断拡張機能 (LAD) のバージョンアップ等により、omsagent-LAD が誤った構文のファイルに上書き更新されてしまうことがあり、これにより、またエラーが発生するようになり、対応が必要になることがあります。


追記

LAD がインストールされ、[ゲスト レベルの監視を有効にする]の設定になっていることを確認する方法

Azure ポータルにて、
ホーム > 仮想マシン > 対象の仮想マシン > 診断設定
を選択して、概要画面に、メトリックや Syslog の一覧が表示され、文言「次のメトリックについてデータを収集しています」「これらのファシリティについてログを収集しています」が表示されていることを確認する。

または、

Azure ポータルにて、
ホーム > 仮想マシン > 対象の仮想マシン > 拡張機能
を選択して、拡張機能画面の一覧に「LinuxDiagnostic」が表示されていることを確認する。
※診断設定が正常に有効化されている場合、対象の仮想マシンに診断拡張機能が有効化される。



スポンサーリンク

0 件のコメント :

コメントを投稿