harumaki.net

インフラ屋の覚書や、ラーメン食べある記とか。

[メモ]rsyslog たくさんのNW機器のsyslogを振り分ける方法

   


客先にそこそこの数のルーター、スイッチ、APがあるので、syslogサーバーを立てて一括管理しておきたいのだけど、DBに放り込むほどではないのでrsyslogdでまかなうことに。
syslogファシリティだと空きが6つしかないため、なんか代わりの方法ないかといろいろ探っていたら、rsyslogのルール設定で、条件式をもとにログを振り分ける方法を発見!
Juniper4クラスタ、Cisco10台、ヤマハ4台、パナソニック6台、計24台の管理が必要だったので、ひとまず今回はこの振り分けルールで要件はクリアできそう。

設定・書式

設定は/etc/rsyslog.confへ追記する形となるが、"プロパティ"、"条件式"、"設定値"で1セットになる。

  • 書式
    :<プロパティ名>, <条件式>, <設定値> -<出力先ファイル>
    • プロパティ抜粋
      受信ログの判定対象に出来るプロパティを抜粋。

      msg		受信するログ内のメッセージ
      hostname	メッセージに含まれるホスト名
      fromhost	送信元ホストの名称
      fromhost-ip	送信元ホストのIPアドレス
      syslogfacility	受信するログに指定されたsyslogファシリティ

      そのほか色々、多数あり!
      詳しくはThe Property Replacerを参考のこと。
      今回は送信元ホスト(ルータ、スイッチ)のIPアドレスを判定対称にするので
      fromhost-ipを使用。

  • 設定例
    Ciscoカタリストのログを出力する場合の書式例としては、こんな感じ。

    • 送信元ホストのIPアドレス(SVI)を判定
    • 条件は"設定値と一致"
    • 設定値は"192.168.128.254"
    • 出力先は"/var/log/network/catalyst3750.log" 。
  • 上記をふまえ、実際の条件式はこんな感じ。
    :fromhost-ip, isequal, "192.168.128.254"  -/var/log/network/catalyst3750.log

また、これだけだと指定した出力先のほか、/var/log/messagesにも出力されるため、二重の出力となってしまう。
これを避ける場合は、条件式の直下に下記のルールを追加して、messagesへの出力を抑制。

& ~

これは直前の条件に合致したログを破棄する指定。

  • rsyslog.confへの設定例
    # RULES1 cisco catalyst
    :fromhost-ip, isequal, "192.168.128.254"  -/var/log/network/catalyst3750.log
    & ~
    
    (実際のrsyslog.confには、これより下の行に通常のログ設定が記載される)

これでmessagesへの出力は抑制され、指定したログファイルへのみ出力が行われる。
めでたしめでたしw

ポイント&注意事項メモ

・ファシリティの設定より上位に記載すること。
 rsyslog.confの中で、facilityより上位に"RULES"というコメントがあるので
 その直下に書けば書式ミスは減らせる。

・出力先ファイルが存在していない場合、rsyslogdの再起動時に作成されるので
 予めファイルを作成しておく必要は無し。

 

rsyslog 実践ログ管理入門
rsyslog 実践ログ管理入門

posted with amazlet at 14.12.23
鶴長 鎮一
技術評論社
売り上げランキング: 276,969

 

Linuxシステム[実践]入門 Software Design plus
技術評論社 (2013-08-20)
売り上げランキング: 28,584

 

 - GNU/Linux, infra, network, 運用