vCenter Server Appliance 7.0でlogを保存しているディスク、/storage/logの容量不足で警告が出ています。
原因は以前からわかっていて、/storage/log/vmware/analytics/analytics-runtime.log.stderrファイルが数G以上の大きさに膨れ上がっており、調べてみるとこちらのページにある通りです。
解決方法はvCenter Server Applianceのプロキシ設定をちゃんとして、インターネット接続できるようにする。ということなんですが、うちの環境ではインターネット接続はできません。ということで、vmon-cliコマンドでanalyticsを定期的に再起動して該当ファイルをリフレッシュする方法を選びました。
具体的には、/etc/cron.dにvmware-analytics.cronという新しいcron設定ファイルを以下のように作成します。作成するvmware-analytics.cronのファイル名は任意です。
VMWARE_DATA_DIR=/storage
05 */2 * * * root /usr/sbin/vmon-cli -r analytics > /dev/null 2>&1
ここで環境変数VMWARE_DATA_DIRを指定していますが、これがないと
Connect error. ErrCode: 2
とエラーが出て再起動に失敗します。最初、コンソールでのvmon-cliの実行は問題ないのにcronからは実行されるものの思った結果にならず、いろいろと試して結局、環境変数がコンソールとcronで違うことに気づき、あとは必要な環境変数を試してVMWARE_DATA_DIRにたどり着きました。
そもそもログファイルが対象なのでlogrotateを使って以下のように定期的にファイルを交換しようとしていたのですが、
/var/log/vmware/analytics/analytics-runtime.log.stderr
{
size 100M
nodateext
missingok
notifempty
compress
create 600 root root
postrotate
export VMWARE_DATA_DIR=/storage
/usr/sbin/vmon-cli -r analytics > /dev/null
endscript
}
vmon-cli -r analyticsを実行するだけでanalytics-runtime.log.stderrとanalytics-runtime.log.stdoutファイルがそれぞれanalytics-runtime.log-0.stderrとanalytics-runtime.log-0.stdoutに変更されるようになっていますのでlogrotateは不要と気づいてcronで定期的にvmon-cliコマンドを実行するようにしたのでした。