インフラブログ

とあるWEBサイトのインフラを構築運用するメモ

fluentd+Elasticsearch+kibanaでnginxのログを視覚化する

nginxのアクセスログをfluentdを経由してElasticsearchに保存します。 ログの視覚化にはkibanaを使います。

こんな感じで500系のエラーの発生具合を時系列のグラフで見れるようにします。

f:id:ls-la:20140403150901p:plain

仕組みについてはこちらの記事が参考になります

設定

Elasticsearchはyumでインストールして起動するだけです。 fluentdの設定は以下のようになります。

webサーバのアクセスログをfluentd集約側サーバに流す

nginxのログはltsv形式で出力しています。

<source>
  type tail
  time_format %d/%b/%Y:%H:%M:%S %z
  path /var/log/nginx/staging.web.access.log
  tag staging.nginx.access
  pos_file /var/lib/td-agent/staging.nginx.access.pos
  format ltsv
</source>

<match staging.nginx.access>
  type copy
  <store>
    type forward
    <server>
      host staging-log-1
      port 24224
    </server>
    <server>
      host staging-log-2
      port 24224
      standby
    </server>
    buffer_type file
    buffer_path /var/lib/td-agent/staging.nginx.access.buffer
    retry_limit 18
    flush_interval 3s
    flush_at_shutdown true
  </store>
</match>

fluentdに流れてきたログをElasticsearchに流し込む設定

プラグインをインストール

#/usr/lib64/fluent/ruby/bin/gem install fluent-plugin-elasticsearch

/etc/td-agent/td-agent.conf

<match staging.nginx.access>
  <store>
    index_name adminpack
    type_name nginx
    type elasticsearch
    include_tag_key true
    tag_key @log_name
    host localhost
    port 9200
    logstash_format true
    retry_limit 18
    flush_interval 3s
    flush_at_shutdown true
  </store>
</match>