Vmware ESXi5xは無償で利用できますが、再起動の度にログがクリアーになってしまう仕様のため何かあった際トレースすることができません。
そこで今回はESXiのログを外部のSyslogサーバーに転送してログを管理する方法をご紹介します。
まず、外部にSyslogサーバーを立てていることが条件となりますLinuxの標準のSyslogdでもいいですが管理が楽なsyslog-ng fluentd等を強くおすすめします。今回はSyslogサーバーの構築は割愛させていただきあくまでESXiの設定のみ紹介します。
Vmware公式のドキュメントで参考になるのはこちら
ESXiのFirewallでTCP UDPの514 TCPの1514を開放する
ESXiのFirewallの設定・確認
SSHでESXiにログイン後まずはFirewallの設定を確認します。
esxcli network firewall ruleset list | grep syslog
syslog false
※この状態はsyslogのポートがFirewallで無効になっていることを意味します。
FireWallでポート開放
esxcli network firewall ruleset set --ruleset-id=syslog --enabled=true
再度Firewallの状態を確認
esxcli network firewall ruleset list | grep syslog
syslog true
※このようにtrueとなっていれば開放が完了しています。
syslogサーバーに転送する設定
次にSyslogサーバーにログを転送する設定を行います。まずは現状の設定を確認します。
esxcli system syslog config get
Default Rotation Size: 1024
Default Rotations: 8
Log Output: /scratch/log
Log To Unique Subdirectory: false
Remote Host: <none>
デフォルトでは転送設定がされていません。
転送設定を有効
esxcli system syslog config set --loghost="udp://SyslogサーバーのIPアドレス"
※こちらの方法ではUDP514番で転送されるようになります。ポート番号を指定したい場合はIPアドレスの後に:ポート番号を指定します。
例;tcp://IPアドレス:1514
再度設定を確認するとSyslogサーバーのIPアドレスが設定されたことが確認できます。
esxcli system syslog config get
Default Rotation Size: 1024
Default Rotations: 8
Log Output: /scratch/log
Log To Unique Subdirectory: false
Remote Host: udp://SyslogサーバーのIPアドレス
サービスの再起動
設定が完了したらサービスの再起動をします。
esxcli system syslog reload
無事にSYSLOGサーバーにESXIのログが転送されているはずです。かなりのログがリアルタイムに蓄積されます。
勿論コンソールにログインしたユーザーの情報なども出力されるためセキュリティ対策にも有効です。通常の無料版パッケージですとSyslogサーバーへの転送は有償版のみ可能というのが多いですがESXiはCentosベースなだけあり色々とカスタムが可能なところがいいですね。