vmon-cliの実行には環境変数VMWARE_DATA_DIRが必要

 vCenter Server Appliance 7.0でlogを保存しているディスク、/storage/logの容量不足で警告が出ています。
 原因は以前からわかっていて、/storage/log/vmware/analytics/analytics-runtime.log.stderrファイルが数G以上の大きさに膨れ上がっており、調べてみるとこちらのページにある通りです。

kb.vmware.com

 解決方法は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コマンドを実行するようにしたのでした。