Syslog-ng監視設定

Syslog-ng監視にてログ監視が行えない場合のトラブルシューティングを記述します。
3.1.3にて動作確認を行い記述していますが、他のバージョンでもほぼ同様と思われます。

1. ログ転送の確認

  • 監視対象からHinemosマネージャへログ転送が行われていることを確認する。
  • Hinemosマネージャの /etc/syslog-ng/syslog-ng.conf に以下定義を追加し、syslog-ngを再起動する。
    • # vi /etc/syslog-ng/syslog-ng.conf
      destination d_hinemos_log{file("/var/log/hinemos.log");};
      log { source(s_net); filter(f_mesg);
      destination(d_hinemos_log);};
      
    • # service syslog-ng restart
  • /var/log/hinemos.log に監視対象のログが出力されることを確認する。
    • 監視対象のログが出力されていない場合
      • 監視対象のログ転送設定を見直す。
    • 監視対象のログが出力されている場合
      • 監視対象のログに付与された hostname をチェックし、2.を行う。
  • ※確認後、忘れずに設定を元に戻すこと。

2. SyslogForwardのデバッグログの確認

  • Hinemosマネージャの /opt/hinemos/lib/syslogforward/log4j.properties のログ出力レベルをDEBUGに変えて、syslog-ngを再起動する。
    • # vi /opt/hinemos/lib/syslogforward/log4j.properties
      log4j.rootLogger=info, file
                        ↓
      log4j.rootLogger=debug, file
      
    • # service syslog-ng restart
  • 監視対象にてログを出力する。
    # logger test
    
  • /opt/hinemos/var/log/syslogforward.log を確認し、対象ログの処理を確認する。
    • 監視項目にマッチしない場合、以下のようなログが出力される。
      • 「MessageParser」の後ろに出力された hostname をチェックし、3.を行う。
        2010-03-25 15:06:19,586 DEBUG LogForward - put Message:<13>Mar 25 15:06:19 hinemos-dev-01 root: test
        2010-03-25 15:06:19,586 DEBUG LogManager - proccess msg:<13>Mar 25 15:06:19 hinemos-dev-01 root: test
        2010-03-25 15:06:19,586 DEBUG MessageParser - parsed msg
        2010-03-25 15:06:19,586 DEBUG MessageParser - Thu Mar 25 15:06:19 JST 2010
        2010-03-25 15:06:19,586 DEBUG MessageParser - hinemos-dev-01
        2010-03-25 15:06:19,586 DEBUG MessageParser - root: test
        2010-03-25 15:06:19,586 DEBUG MessageParser - Thu Mar 25 15:06:19 JST 2010
        2010-03-25 15:06:19,586 DEBUG LogManager - not match filter:<13>Mar 25 15:06:19 hinemos-dev-01 root: test
        

3. ログの hostname とリポジトリのノード名の確認

  • /opt/hinemos/var/log/syslogforward.log に出力された hostname とリポジトリのノード名が一致するか確認する。
    • 異なる場合は、/opt/hinemos/var/log/syslogforward.log に出力された hostname をリポジトリのノード名に登録する。
  • 監視対象にてログを出力する。
    # logger test
    
  • /opt/hinemos/var/log/syslogforward.log を確認し、対象ログの処理を確認する。
    • 参考:監視項目にマッチした場合のログ
      2010-03-25 15:11:42,870 DEBUG LogForward - put Message:<13>Mar 25 15:11:42 hinemos-dev-01 root: test
      2010-03-25 15:11:42,870 DEBUG LogManager - proccess msg:<13>Mar 25 15:11:42 hinemos-dev-01 root: test
      2010-03-25 15:11:42,870 DEBUG MessageParser - parsed msg
      2010-03-25 15:11:42,870 DEBUG MessageParser - Thu Mar 25 15:11:42 JST 2010
      2010-03-25 15:11:42,875 DEBUG MessageParser - hinemos-dev-01
      2010-03-25 15:11:42,875 DEBUG MessageParser - root: test
      2010-03-25 15:11:42,875 DEBUG MessageParser - Thu Mar 25 15:11:42 JST 2010
      2010-03-25 15:11:42,875 DEBUG LogManager - Make ObjectMsg
      2010-03-25 15:11:42,875 DEBUG LogManager - Process:SYSLOG-01:<13>Mar 25 15:11:42 hinemos-dev-01 root: test
      2010-03-25 15:11:42,879 DEBUG EJBContoroller - オブジェクトメッセージ送信!
      
  • ※確認後、忘れずに設定(2.で実施した内容)を元に戻すこと。

事例

  • 監視対象サーバからシステムログは監視できるが、ログ転送のログが監視できない。

前提条件

  • 監視対象サーバがサービスセグメントと監視セグメントに接続される。
  • 監視セグメントからHinemosマネージャにログが転送される。
  • 監視対象サーバの hostname とは監視セグメントに対するホスト名(/etc/hosts)が異なり、syslog-ng監視とログ転送を行う場合、システムログとログ転送時に付与されるホスト名に差異が発生し、監視することができない。

原因

  • システムログとログ転送時に付与されるホスト名に差異が発生していた。
  • システムログは、監視対象サーバの hostname をログに付与する。
  • ログ転送は、Hinemosエージェントの設定ファイル「/opt/hinemos_agent/lib/log_agent/log4j.properties」の設定値を付与する。

対策

  • 監視対象のログへのhostnameの付与を監視対象サーバではなく、Hinemosマネージャ側で名前解決し付与を行う。
  • Hinemosマネージャで付与する hostname は監視対象サーバの監視セグメントのものとする。

Hinemosマネージャの変更内容

  • Hinemosマネージャで名前解決を行うようにする。
    • /etc/hosts に監視対象サーバの監視セグメントに対する hostname を記述する。
      • DNSを利用する場合は必要なし。
    • /etc/syslog-ng.conf を以下のように修正する。
      keep_hostname (yes);
         ↓
      keep_hostname (no);
      
  • 設定を変更後、syslog-ngサービスを再起動する。
    • # service syslog-ng restart

Hinemosエージェントの変更内容

  • /opt/hinemos_agent/lib/log_agent/log4j.properties を修正する。
    log4j.appender.syslog.SyslogHost=***  #←設定値を監視セグメントのホスト名に修正する。
    
  • Hinemosログ転送エージェントを再起動する。