ESXi からSyslog を飛ばしてみます。
今回は、rsyslog サーバ(Oracle Linux 6.2) に対して、UDP で Syslog を飛ばしてみます。
参考
ESXi 5.0 における syslog の構成
http://kb.vmware.com/kb/2014699
Syslog サーバは、こんな感じです。
デフォルトで入っている rsyslog を使用しています。
[root@oel62 ~]# cat /etc/oracle-release
Oracle Linux Server release 6.2
[root@oel62 ~]# rsyslogd -v
rsyslogd 4.6.2, compiled with:
FEATURE_REGEXP: Yes
FEATURE_LARGEFILE: No
FEATURE_NETZIP (message compression): Yes
GSSAPI Kerberos 5 support: Yes
FEATURE_DEBUG (debug build, slow code): No
Atomic operations supported: Yes
Runtime Instrumentation (slow code): NoSee http://www.rsyslog.com for more information.
ちなみに、今回は Syslog サーバ側のファイアウォールはすべて無効にしてあります。
[root@oel62 ~]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destinationChain FORWARD (policy ACCEPT)
target prot opt source destinationChain OUTPUT (policy ACCEPT)
target prot opt source destination
ESXi 5.0 から Syslog を飛ばします。(ESXi 5.1 でもやり方は同じです。)
~ # vmware -v
VMware ESXi 5.0.0 build-623860
1. Syslog サーバ側の受信設定をします。
まず、rsyslog の設定ファイルを編集します。
リモートのサーバからの UDP の514番ポートにむけた Syslog を受信できるように、
設定ファイル(/etc/rsyslog.conf)から、下記のコメントを外します。
[root@oel62 ~]# vi /etc/rsyslog.conf
# Provides UDP syslog reception
#$ModLoad imudp.so
#$UDPServerRun 514
↓(コメント「#」を削除する。)
# Provides UDP syslog reception
$ModLoad imudp.so
$UDPServerRun 514
そして、rsyslog のデーモンを再起動です。
[root@oel62 ~]# service rsyslog restart
システムロガーを停止中: [ OK ]
システムロガーを起動中:
-r option only supported in compatibility modes 0 to 2 - ignored
[ OK ]
2. ESXi で、Syslog に対するファイアウォール解放します。
これをしないと、ESXi からの送信もブロックされてしまいます。
まず、現状の設定を確認。
~ # esxcli network firewall ruleset list | grep syslog
syslog false
ちなみに、ファイアウォールのルールはこんな感じです。
~ # esxcli network firewall ruleset rule list | grep syslog
syslog Outbound UDP Dst 514 514
syslog Outbound TCP Dst 514 514
syslog Outbound TCP Dst 1514 1514
ファイアウォールを開放します。
~ # esxcli network firewall ruleset set --ruleset-id=syslog --enabled=true
Syslog 転送を許可するファイアウォールルールが有効化されました。
~ # esxcli network firewall ruleset list | grep syslog
syslog true
3. ESXi で、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>
設定を変更します。
UDP プロトコルで、192.168.0.192 の Syslog サーバにログを転送します。
デフォルトなので 514番ポートにむけて転送することになります。
~ # esxcli system syslog config set --loghost="udp://192.168.0.192"
確認すると、転送先の Syslog サーバが設定されています。
~ # esxcli system syslog config get
Default Rotation Size: 1024
Default Rotations: 8
Log Output: /scratch/log
Log To Unique Subdirectory: false
Remote Host: udp://192.168.0.192
ESXi 側で、Syslog サービスを再読み込みするとログ転送が開始されます。
~ # esxcli system syslog reload
4. 転送されたログを確認します。
ESXi は絶えずログ転送しているので、成功していればすぐわかりますが、
あえてテストメッセージを送ってみます。
Syslog サーバは、デフォルトの /var/log/messages ファイルにログを出力します。
(ESXi側)
~ # esxcli system syslog mark --message="SyslogTest `date`"; date
Thu Nov 29 14:52:29 UTC 2012
(Syslogサーバ側)
[root@oel62 ~]# date
2012年 11月 29日 木曜日 23:51:10 JST
[root@oel62 ~]# grep SyslogTest /var/log/messagesNov 29 14:52:25 esx01.local shell[853546]: esxcli system syslog mark --message="SyslogTest `date`"; date
Nov 29 14:52:26 esx01.local mark: SyslogTest Thu Nov 29 14:52:25 UTC 2012
実行したテストコマンド自体と、テストメッセージが Syslog サーバで受信できてました。
ESXi は、UTC(世界協定時)で動作するため、
基本的にJST(日本時間)から マイナス9時間表示になってしまいます。
Syslog サーバ自体の時間がちょっとずれているのでアレですが・・・
Syslog は、送信したメッセージにタイムスタンプ情報を持っているため、
受信したログの時刻が、Syslog サーバ自体の時刻とは マイナス9時間ずれています。
Comments