elasticsearch + Kibana でログの可視化

動かしただけで,理解していないので,作業した内容だけをメモしておきます.

ab で Apache に負荷をかけて,その access.log のグラフを表示します.

elasticsearch の準備/起動

# aptitude -y install openjdk-7-jdk
# curl -O https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.90.7.tar.gz
# tar zxvf elasticsearch-0.90.7.tar.gz
# cd elasticsearch-0.90.7
# ./bin/elasticsearch -f

Kibana3 の準備

# aptitude install apache2
# cd /var/www
# curl -O https://download.elasticsearch.org/kibana/kibana/kibana-3.0.0milestone4.tar.gz
# tar zxvf kibana-3.0.0milestone4.tar.gz
# mv kibana-3.0.0milestone4 kibana

logstash を使用する場合

# mkdir logstash
# cd logstash
# curl -O https://download.elasticsearch.org/logstash/logstash/logstash-1.2.2-flatjar.jar
# cat <<__EOT__ >logstash.conf
> input {
>   file {
>     type => "apache"
>     path => "/var/log/apache2/access.log"
>   }
> }
>
> filter {
>   grok {
>     type => "apache"
>     pattern => "%{COMBINEDAPACHELOG}"
>   }
> }
>
> output {
>   elasticsearch {
>     embedded => true
>   }
> }
> __EOT__
# java -jar logstash-1.2.2-flatjar.jar agent -f logstash.conf -- web

fluentd を使用する場合

# gem install fluentd
# gem install fluent-plugin-elasticsearch
# cat <<__EOT__>fluent.conf
> <source>
>   type tail
>   format apache
>   path /var/log/apache2/access.log
>   pos_file /var/log/apache2/access.pos
>   tag apache2-access
> </source>
>
> <match apache2-access>
>   type elasticsearch
>   host 192.168.1.2
>   port 9200
>   logstash_format true
> </match>
> __EOT__
# fluentd -c fluent.conf

グラフの確認

f:id:Hexa:20131204010431p:plain

下記のように ab で適当に負荷をかけつつ,ブラウザで http://192.168.1.2/kibana/index.html#/dashboard/file/logstash.json にアクセスして、グラフを確認します.

# ab -c 10 -n 1000000  http://192.168.1.2/index.html