免責事項: これは英文の記事「vCenter Server /storage/core filling up with core.in:imfile.XXXX when configuring vCenter syslog server (318159)」の日本語訳です。記事はベストエフォートで翻訳を進めているため、ローカライズ化コンテンツは最新情報ではない可能性があります。最新情報は英語版の記事を参照してください。
症状:
リモート syslog サーバの設定後、rsyslogd-syslog.log に以下のようなメッセージが表示される。
<YYYY-MM-DD><time>Z err rsyslogd imfile error trying to access state file for '/var/log/vmware/sso/tomcat/localhost_access.<YYYY-MM-DD>.log': Too many open files [v8.2001.0 try https://www.rsyslog.com/e/2027 ]
<YYYY-MM-DD><time>Z err rsyslogd file '/var/log/vmware/sso/tomcat/localhost_access.<YYYY-MM-DD>.log': open error: Too many open files [v8.2001.0 try https://www.rsyslog.com/e/2433 ]
<YYYY-MM-DD><time>Z err rsyslogd imfile: error accessing file '/var/log/vmware/sso/tomcat/localhost_access.<YYYY-MM-DD>.log': Too many open files [v8.2001.0]
<YYYY-MM-DD><time>Z err rsyslogd imfile: error accessing file '/var/log/vmware/sso/tomcat/localhost_access.<YYYY-MM-DD>.log': Too many open files [v8.2001.0]
注: 前述のログの抜粋はあくまで例です。日付、時刻、変数はお使いの環境によって異なる場合があります。
VMware vCenter Server 7.0.x
この問題は rsyslog でファイルディスクリプタの数が上限に達するため発生します。
これは vCenter Server 7.0 の既知の問題です。 vCenter Server 7.0 U3l 以降で修正されています。vCSA 7.0 の最新版は My Downloads をご覧ください。
回避策:
次のいずれかの回避策を実行してください:
回避策 1 :
1.postgres-archiver の syslog 転送設定のバックアップを取得します:
cp /etc/vmware-syslog/vmware-services-vmware-postgres-archiver.conf /etc/vmware-syslog/vmware-services-vmware-postgres-archiver.conf.orig
2. vi または vim エディタで次のファイルを編集します :
/etc/vmware-syslog/vmware-services-vmware-postgres-archiver.conf
3. 既存のファイル内容を全て削除し、次の設定に書き換えます:
# vmware-postgres-archiver logs
input(type="imfile"
File="/var/log/vmware/vpostgres/pg_archiver.log.stdout"
Tag="postgres-archiver"
Severity="info"
Facility="local0")
input(type="imfile"
File="/var/log/vmware/vpostgres/pg_archiver.log.stderr"
Tag="postgres-archiver"
Severity="info"
Facility="local0")
4. rsyslog を再起動します:
systemctl restart rsyslog
5. rsyslog が起動していることを確認します:
systemctl status rsyslog
6. 上記のコマンドの結果が次のような内容となっていることを確認します:
rsyslog.service - System Logging Service
Loaded: loaded (/lib/systemd/system/rsyslog.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2021-03-05 00:33:37 UTC; 32s ago
Docs: man:rsyslogd(8)
http://www.rsyslog.com/doc/
Main PID: 38846 (rsyslogd)
Tasks: 13 (limit: 9830)
Memory: 5.3M
CGroup: /system.slice/rsyslog.service
└─38846 /usr/sbin/rsyslogd -n
回避策 2 :
find /var/log/vmware/ -mtime +1 -type f -name "localhost*access*log*" | while read file; do rm "$file" ; done
vi cleanupAccessLog.sh
#!/bin/bash
find /var/log/vmware/ -mtime +1 -type f -name "localhost*access*log*" | while read file; do rm "$file" ; done
chmod 755 cleanupAccessLog.sh
cd /etc/cron.d
vi cleanAccessLog.cron
0 0 * * 0 root <path of the script>/cleanupAccessLog.sh 2>&1
systemctl start rsyslog