見出し画像

TWSNMP FCのポーリング辞典:syslogをモニタする

TWSNMP FCにはsyslogを受信してログに記録する機能があります。一定周期でログを検索して異常を判定するポーリングについての説明です。例えばログイン失敗のログが1件でもあったら異常と判断するというものです。
このポーリングには自分でも忘れていたモードがありました。

syslogを受信するための設定

TWSNMP FCでsyslogを受信するためには、「システム設定」ー「マップ設定」

でsyslogのスイッチをオンにします。スイッチをオンにしても受信できない時は

を参考にしてください。

ポーリング設定

syslogをモニタするポーリングは、

のように設定します。

モード

syslogをモニターするモードです。以下の設定があります。

count
ポーリングの期間内のフィルター条件に一致するログの件数で判断する基本的なモードです。

pri
syslogをpriority別に集計するモードです。正常な状態では、同じようなpriorityのログが送信されますが、異常が発生するとエラーを示すpriority
のログが多く送信されるだろうという考えで、これをAI分析すれば、
異常発生を検知できるというものです。

state
正常と判断するログと異常と判断するログをフィルターで取得して、異常のログが正常のログの後にある場合に状態を異常とするポーリングです。
例えばerrorというログがnormalというログの後にあれば異常とします。
errorというログがないかnormalというログの前なら正常です。

user
ログからユーザーのログインの情報を取得してユーザーレポートに記録するモードです。SSHでLinux サーバーにログインした

device
ログからMACアドレスとIPアドレスの関係を取得してデバイスレポートに記録するモードです。FWなどのログから取得できます。
twpcapを利用すれば、ポーリングの設定なしでレポートを作成できます。

flow
ログから送信元IP、宛先IP、ポート番号、プロトコル、送受信量を取得してフローレポートに記録するモードです。

パラメーター

モードがstateの場合に、正常と判断するログのフィルターを指定します。
異常と判断するログのフィルターは、下のフィルターに記載します。

フィルター

フィルターは正規表現で対象となるログを探すフィルターを指定します。
検索対象のsyslog は、

client	192.168.1.210:41012
content	Cannot statfs /var/lib/docker/overlay2/87fa09735cfd49d735a26b22620a8c83f12510c04de5e9e95da345bb754d039c/merged: Permission denied
facility	3
hostname	minipc
priority	27
severity	3
tag	snmpd
timestamp	2024-03-12T05:54:44Z

のように改行を含んでいるので、正規表現で無視する部分は.+や.*ではなく
[\s\S\n]*のようにしてください。
送信元を含める場合は

client\s+192\.168\.1\.210[\s\S\n]*Cannot

のようにします。
clientやhostnameは、キーで順番はabc順固定です。
hostname でフィルターする時は、

Cannot[¥s¥S¥n]*hostname.*miniPC

だと思います。

抽出フィルター

grokを利用してログの中から変数を抽出するための設定です。省略した場合は、抽出を行いません。この設定については、

の記事の検索抽出フィルターを見てください。

判定スクリプト

Javascriptでログ検索の結果を判断します。利用できる変数は、

count
検索フィルターの条件に一致したログの件数
interval
検索期間の秒数です。ログの件数を単位時間に変換するためのものです。

です。抽出フィルターでログから取り出した変数も利用できます。

count < 1

ポーリング結果

ポーリング結果は、


のように取得できます。

ポーリングテンプレート

テンプレートの検索ででsyslogと入力すれば

検索できます。定義は、

  {
    "Name": "Syslog件数",
    "Type": "syslog",
    "Mode": "count",
    "Filter": "フィルター条件",
    "Polling": "count < 1",
    "Level": "off",
    "Descr": "フィルター条件に一致するsyslogの件数をモニタ",
    "AutoMode": "disable"
  },
 {
    "Name": "SYSLOG PRI監視",
    "Type": "syslog",
    "Mode": "pri",
    "Filter": "フィルター条件",
    "Level": "off",
    "Descr": "SYSLOG PRI監視",
    "AutoMode": "disable"
  },
  {
    "Name": "SSHログからユーザーレポート",
    "Type": "syslog",
    "Mode": "user",
    "Filter": "フィルター条件",
    "Extractor": "SSHLOGIN",
    "Level": "off",
    "Descr": "SSHのログインのログからユーザーレポート作成",
    "AutoMode": "disable"
  },
  {
    "Name": "Syslogからデバイスレポート",
    "Type": "syslog",
    "Mode": "device",
    "Filter": "フィルター条件",
    "Extractor": "DEVICE",
    "Level": "off",
    "Descr": "Syslogからデバイスレポート作成",
    "AutoMode": "disable"
  },
  {
    "Name": "WELFログからフローレポート",
    "Type": "syslog",
    "Mode": "flow",
    "Filter": "フィルター条件",
    "Extractor": "WELFFLOW",
    "Level": "off",
    "Descr": "WELFログから通信フローレポート作成",
    "AutoMode": "disable"
  },

です。

開発のための諸経費(機材、Appleの開発者、サーバー運用)に利用します。 ソフトウェアのマニュアルをnoteの記事で提供しています。 サポートによりnoteの運営にも貢献できるのでよろしくお願います。