vCenter Server で syslog 転送を設定すると、vCenter Server の /storage/core が core.in:imfile.XXXX というファイルでいっぱいになる
search cancel

vCenter Server で syslog 転送を設定すると、vCenter Server の /storage/core が core.in:imfile.XXXX というファイルでいっぱいになる

book

Article ID: 379789

calendar_today

Updated On:

Products

VMware vCenter Server 7.0

Issue/Introduction

免責事項: これは英文の記事「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]


: 前述のログの抜粋はあくまで例です。日付、時刻、変数はお使いの環境によって異なる場合があります。

Environment

VMware vCenter Server 7.0.x

Cause

この問題は rsyslog でファイルディスクリプタの数が上限に達するため発生します。

Resolution

これは 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 :

  • 次のコマンドで rsyslog を停止します: "systemctl stop rsyslog"
  • /storage/core 配下で、ファイル名が "core.in:imfile*" にマッチするコアファイルを削除します。
  • コアダンプでいっぱいにならないようにするため、次の回避策を実行します。
  • 次のコマンドを実行します:


         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
 

  • cron job フォルダに移動し、定期的にスクリプトを実行する cron ファイルを作成します :  

           cd /etc/cron.d
           vi cleanAccessLog.cron
           0 0 * * 0 root <path of the script>/cleanupAccessLog.sh 2>&1
 

  • Syslog サービスを起動します :

           systemctl start rsyslog