So-net無料ブログ作成
  • ブログをはじめる
  • ログイン

Elasticsearchでチャレンジ その3 (FreeBSD 11.2R、2018/07/12) [ports]

前回、下記のような解析結果を得られました。ここでさらにもう一加工が必要となります。
Elasticsearchが認識する時間軸(=データがプロットされる時間)は@timestampフィールドが参照されるのですが、前回のような形でファイルの取り込みを行うと、@timestampフィールドはlogstashがファイルを解析した時間(=値を取り込んだ時間)になってしまうのです。
実際に@timestampの値と、取り込んだログの生データであるmessageフィールドを見比べてもらうとよく分かると思います。
root@mybsd:/usr/local/etc/logstash # /usr/local/logstash/bin/logstash -f ipfw-log.conf < /var/log/security_sample
{
      "@version" => "1",
    "@timestamp" => 2018-07-07T17:57:32.846Z,
          "host" => "mybsd.xxxx",
     "logsource" => "mybsd",
       "program" => "kernel",
       "srcport" => "12424",
      "protocol" => "TCP",
        "number" => "2400",
      "software" => "ipfw",
         "srcip" => "A1.A2.A3.A4",
       "dstport" => "23",
       "message" => "Jul  5 09:20:09 mybsd kernel: ipfw: 2400 Deny TCP A1.A2.A3.A4:12424 B1.B2.B3.B4:23 in via em0",
     "interface" => "em0",
     "timestamp" => "Jul  5 09:20:09",
         "dstip" => "B1.B2.B3.B4",
        "action" => "Deny"
}

そのため、@timestampフィールドをdateフィルタを使って書き換えます。書き換えは、正規表現を使って時間に関する実際の数値をマッチングで拾い上げるだけです。ただ、下記マニュアルにも指摘されているように、"Nov"や"Feb"といった月表記は、locale(=地域情報)に依存するため、実データに合わせて指定します。
https://www.elastic.co/guide/en/logstash/current/plugins-filters-date.html

また今回の解析では、必要な情報は全てピックアップできているため、オリジナル生データであるmessegeフィールドは不要となります。残しても構いませんが、ストレージの容量を削減するためにも削除してしまいましょう。テンポラリで生成したtimestampフィールド(@timestampフィールドではない方)も、@timestampの書き換え後は不要なので、同様に削除してしまいます。
input {
        stdin {}
}
filter {
        grok {
                match => {
                        "message" => "%{SYSLOGBASE} %{PROG:software}: %{NUMBER:number} %{WORD:action} %{WORD:protocol} %{IP:srcip}:%{NUMBER:srcport} %{IP:dstip}:%{NUMBER:dstport} i
n via %{WORD:interface}"
                }
        }
        date {
                match => ["timestamp", "MMM  d HH:mm:ss"]
                locale => en
        }
        mutate {
                remove_field => ["message", "timestamp"]
        }
}
output {
        stdout { codec => rubydebug }
}

改めて設定ファイルとログを読み込ませます。
root@mybsd:/usr/local/etc/logstash # /usr/local/logstash/bin/logstash -f test.conf < /var/log/security_sample
{
         "srcip" => "A1.A2.A3.A4",
       "srcport" => "48405",
      "software" => "ipfw",
        "number" => "2400",
      "protocol" => "TCP",
          "host" => "mybsd.xxxx",
    "@timestamp" => 2018-07-05T00:19:37.000Z,
        "action" => "Deny",
         "dstip" => "B1.B2.B3.B4",
       "dstport" => "1433",
      "@version" => "1",
     "logsource" => "mybsd",
       "program" => "kernel",
     "interface" => "em0"
}
.....

こんな感じで@timestampも更新され、かなりすっきりしました。


タグ:elasticsearch
nice!(0)  コメント(0) 
共通テーマ:日記・雑感

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。