複数のlogをKibanaで同じグラフに表示する方法


(Phạm Xuân Hoàng) #1

こんにちは、ホアンです。

現在、特定の過去のプロキシのログとファイアウォールのログをelasticsearchに蓄積しています。
これらはlogの形式は異なりますが 同一時刻の各フィールドをkibanaで表示したいのですが
この蓄積されたlogから Kibana上で1つのグラフに 積み重ねたように表示できないでしょうか?
下の図のようなものを表示したいです。
現在logstashのconfファイルは別々に実行しています。
・プロキシのログのconfファイル:
input {
stdin { }
}

filter {
grok {
match => [
"message", "(?:%{SYSLOGFACILITY} )?%{SYSLOGHOST:logsource}+(?: %{SYSLOGPROG}:|) Virus Found Alert%{CRLF} DateTime: [%{HTTPDATE:timestamp}]%{CRLF} Cliet IP Address: %{IPORHOST:clientip}%{CRLF} Virus Name%{NONSHARP:virusname}%{CRLF} URL: %{NONSHARP:virusurl}%{CRLF3}%{GREEDYDATA:mcafee}"
]
}
date {
match => [ "timestamp", "dd/MMM/YYYY:HH:mm:ss Z" ]
}
}

output {
# stdout { codec => rubydebug }
elasticsearch {
hosts => [ "localhost:9200" ]
}
}
・ファイアウォールのログのconfファイル:
input {
stdin { }
}

filter {
grok {
match => [
"message", "%{TIMESTAMP_ISO8601:timestamp} %{IPORHOST:srcip}:%{NUMBER:srcport} %{IPORHOST:dstip}:%{NUMBER:dstport} %{NUMBER:protocol} %{QUOTEDSTRING:dstcountry}"
]
}

    date {
            match => [ "timestamp", "YYYY-MM-dd HH:mm:ss" ]
    }

}

output {
stdout { codec => rubydebug }
elasticsearch {
hosts => [ "localhost:9200" ]
}
}

・プロキシのログの例:
Sep 1 08:33:11 bcmwgw11 mwg: Virus Found Alert#015#012#015#012* DateTime: [01/Sep/2017:08:33:11 +0900]#015#012#015#012* Cliet IP Address: 10.24.31.27#015#012#015#012* Virus NameBehavesLike.HTML.ExploitBlacole.mq#015#012#015#012* URL: http://guitarlist.net/bandscore/hoshinogen/koi/koi.php#015#012#015#012#015#012Message generated by McAfee Web Gateway
・ファイアウォールのログの例:
2017-09-01 00:00:00 10.23.32.73:63093 52.222.193.184:80 6 "United States"
2017-09-01 00:00:00 10.23.32.73:63098 59.106.215.224:80 6 "Japan"

ご教授をお願いします。


(tsgkdt) #2

異なるログが1つのインデックスに混在して入ってしまっているため出来ない、という背景だと
理解しましたがあってますでしょうか。

であれば、こんなアプローチにすれば可能となると思いますがどうでしょうか?

ログの構造も内容も違うとのことなので、Timelionで見るなら別Indexにしておくplan1の方がよさそうに感じています。

plan 1

firewallのログとプロキシのログを別々のindexに入れるようにする。

例えば、プロキシのログだったら index名を proxylogs-yyyyMMddにする
https://www.elastic.co/guide/en/logstash/current/plugins-outputs-elasticsearch.html#plugins-outputs-elasticsearch-index

output {
    elasticsearch {
         hosts => [ "localhost:9200" ]
         index =>  "proxylogs-%{+YYYY.MM.dd}"
    }
}

Timelioneでの可視化の際には、indexを指定して他のログとの混在しないようにする
https://www.elastic.co/guide/en/kibana/current/timelion-inline-help.html

plan 2

indexはプロキシとfirewallと同じにするが、ログの種別が識別できるようなフィールドを持たせておく。

for example

input {
  stdin {
     add_field => ["log_type", "firewall_logs"]
  }
}

Timelionでの指定するときは、q=`log_type:firewall_logs’ となるようなイメージです。


(Phạm Xuân Hoàng) #3

ご指導ありがとうございました。
Plan2で修正して解決できました。
現在、異なるログの相関分析を自動化することを目的として行いたいですが、
KibanaまたはELK stack でデータを処理方法・表示方法等を教えて頂けませんか。
ご指導よろしくお願いします。


(tsgkdt) #4

最初の質問が解決したのであれば、こちらの質問はCloseいただき、
新しい質問は、新しいスレッドで行うのが良いと思います。

その際は使用しているElasticsearch, Kibana他のバージョンや、
具体的にどういうことをやりたいか、例とともに書いておくと回答が得られやすいように思います。


(system) #5

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.