以前にポストした、ESXi Syslog の JST での受信について試してみました。
この設定を、実際に試してみようと思います。
図解 ESXi のsyslogを日本標準時(JST)受信する方法
ESXi の Syslog を日本時間(JST)で出力してみます。
今回も、rsyslog を使用します。説明中の Syslog サーバ は rsyslog のことです。
ESXi 5.0 を使っていますが、ESXi 5.1 でも変わりません。
1. まず、ESXi の Syslog を、Syslog サーバに転送しておきます。
手順については、こちらを参考にしてください
ESXi 5.x で Syslog 転送。rsyslogで受信。
ESXi 側で設定したSyslog 設定の戻し方は、こちらです。
2.Syslog サーバ側のログフォーマットの設定を変更してみます。
rsyslog の設定ファイルを編集します。
[root@oel62 ~]# vi /etc/rsyslog.conf
下記3行を、ファイルの末尾に追記します。
※実際に運用する環境では、もっと設定のカスタマイズが必要です。
$template TsTest1, "%timestamp%, %msg%\n"
$template LogFileName1,"/var/log/%hostname%/%programname%_%$year%_%$month%_%$day%.log"
*.* ?LogFileName1;TsTest1
Syslog サーバ再起動時のエラー抑止のため、下記のファイルも編集しておきます。
[root@oel62 ~]# vi /etc/sysconfig/rsyslog
変更箇所は下記の1行です。
SYSLOGD_OPTIONS="-c 4 -r"
↓(「-r」を削除)
SYSLOGD_OPTIONS="-c 4"
3. Syslog サーバ(rsyslog)を再起動します。
[root@oel62 ~]# service rsyslog restart
システムロガーを停止中: [ OK ]
システムロガーを起動中: [ OK ]
rsyslog を再起動して少し待つと、今回のサンプルでは、
「/var/log/<ESXiのホスト名>」
ディレクトリに
「プログラム名_年_月_日.log」 というログファイルができます。
[root@oel62 esxi01.local]# pwd
/var/log/esxi01.local
[root@oel62 esxi01.local]# ls
Hostd_2012_12_03.log Vpxa_2012_12_03.log vmkernel_2012_12_03.log
4. ESXi 側で、テストメッセージを出力します。
★テスト1
ESXi 側での時刻をログに表示するため、`date` を入れています。
赤いタイムスタンプが、ESXi 側でSyslog送付時にコマンドで取得したタイムスタンプです。
一方、
青いタイムスタンプが、Syslogによって出力されたタイムスタンプです。
(ESXi 側でテストメッセージを送信)
~ # esxcli system syslog mark --message="TestMsg01 `date`"
(Syslogサーバ側)
[root@oel62 esxi01.local]# ls
Hostd_2012_12_03.log Vpxa_2012_12_03.log mark_2012_12_03.logshell_2012_12_03.log vmkernel_2012_12_03.log
[root@oel62 esxi01.local]# cat mark_2012_12_03.log
Dec 2 22:46:22, TestMsg01 Sun Dec 2 22:46:20 UTC 2012
★テスト2
ログが発生した時刻ではなく、Syslog サーバが受信した時刻を出力します。
テスト1の設定ファイルの、下記(赤字)を変更ます。
$template TsTest1, "%timegenerated%, %msg%\n"
$template LogFileName1,"/var/log/%hostname%/%programname%_%$year%_%$month%_%$day%.log"
*.* ?LogFileName1;TsTest1
Syslog サーバ側でファイル編集後に rsyslogd を再起動し、
ESXi 側からログ出力のテストをします。~ # esxcli system syslog mark --message="TestMsg02 `date`"
★テスト3
受信したログを、RFC3339 形式で時刻を出力します。
テスト2 とは、ログファイルの出力フォーマットが変更されます。
テスト1の設定ファイルの、下記(赤字)を変更ます。
$template TsTest1, "%timegenerated:::date-rfc3339%, %msg%\n"
$template LogFileName1,"/var/log/%hostname%/%programname%_%$year%_%$month%_%$day%.log"
*.* ?LogFileName1;TsTest1
Syslogサーバ側でファイル編集後にrsyslogdを再起動し、
ESXi側からログ出力のテストをします。~ # esxcli system syslog mark --message="TestMsg03 `date`"
5. 結果確認
ログファイルへの出力結果を見てみます。
[root@oel62 esxi01.local]# cat mark_2012_12_03.log
Dec 2 22:46:22, TestMsg01 Sun Dec 2 22:46:20 UTC 2012 ★テスト1の出力
Dec 3 07:48:05, TestMsg02 Sun Dec 2 22:48:55 UTC 2012 ★テスト2の出力
2012-12-03T07:50:11.564731+09:00, TestMsg03 Sun Dec 2 22:51:01 UTC 2012 ★テスト3の出力
JST で出力できました。
上記の例では、
日本時間だと、12/3 07:48
協定世界時だと、12/2 22:48
ぐらいとなっています。
TestMsg02、TestMsg03 として出力したログは、先頭のタイムスタンプが日本時間になっています。
Comments