読者です 読者をやめる 読者になる 読者になる

なおすけの落書き帳

てきとーに。

Fedora25にElasticsearchとかKibanaとか入れてログ監視できるようにした (2)

Elasticsearch RHEL サーバ 技術的備忘録

ながくなったので分けました。 ここではFluentdの設定やらKibanaの設定やらをしていきます。

(1)はこちら

naosuke2dx.hatenablog.com

(1)のまとめ

  1. Fedora25にElasticsearchとKibanaを入れたよ!
  2. 監視対象にFluentdをインストールしたよ!
  3. Fedora25のnginxをいじって、他ホストからKibanaを見れるようになったよ!

監視対象の設定

正規表現のテストがしんどいのでこのページを使うと多少幸せになれます。

fluentular.herokuapp.com

設定は /etc/td-agent/td-agent.conf に書きます。

Sidekiqのログの設定

Sidekiqのログのフォーマットはこんな感じですね

# 失敗時
2017-01-31T10:28:25.095Z 7221 TID-<なんとかかんとか> HogeWorker JID-<なんとかかんとか> INFO: fail: 66.408 sec
# 成功時
2017-01-31T10:28:25.095Z 7221 TID-<なんとかかんとか> HogeWorker JID-<なんとかかんとか> INFO: done: 12.023 sec

ほしいのは時間、成功/失敗、処理時間ですね。 これを設定に書くとこんな感じ。
一番下のはエラーのときに吐くJSONを送りつけようとしてるやつですね。

<source>
  type tail
  path /path/to/sidekiq/logfile/log/sidekiq.log
  format /^(?<time>[^\.]+).+ TID-[^.]+ [A-Za-z0-9]+ JID-[A-Za-z0-9]+ INFO: done: (?<benchmark>[^ ]+) sec/
  time_format %Y-%m-%dT%H:%M:%S
  pos_file /tmp/app.rails.wing.sidekiq.success.pos
  tag app.rails.sidekiq.success
</source>

<source>
  type tail
  path /path/to/sidekiq/logfile/log/sidekiq.log
  format /^(?<time>[^\.]+).+ TID-[^.]+ [A-Za-z0-9]+ JID-[A-Za-z0-9]+ INFO: failed: (?<benchmark>[^ ]+) sec/
  time_format %Y-%m-%dT%H:%M:%S
  pos_file /tmp/app.rails.sidekiq.failed.pos
  tag app.rails.sidekiq.failed
</source>

<source>
  type tail
  path /path/to/sidekiq/logfile/log/sidekiq.log
  format /(?<time>[^\.]+).+ TID-[^.]+ WARN: (?<errorjson>[^\f\n\r\t\v]+)/
  time_format %Y-%m-%dT%H:%M:%S
  pos_file /tmp/app.rails.sidekiq.warn.pos
  tag app.rails.sidekiq.warn
</source>

Railsアクセスログの設定

Railsアクセスログはこんな感じ。

I, [2017-01-31T20:44:58.055238 #7302]  INFO -- : Completed 200 OK in 126ms (Views: 95.0ms | ActiveRecord: 23.1ms)

ほしいのはHTTPのステータスコードと何秒くらいかかったか、あとはアクセスの時間くらいですね。 これを設定ファイルに書くとこんな感じ

<source>
  type tail
  format /^I, \[(?<time>[^\.]+).+\]  INFO -- : Completed (?<status>[^ ]+) .+ in (?<benchmark>[^m]+)ms.*$/
  time_format %Y-%m-%dT%H:%M:%S
  path /path/to/rails/logfile/log/production.log
  pos_file /tmp/app.rails.access.pos
  tag app.rails.access
</source>

転送設定

それぞれのタグについて、matchで転送先とかを設定します。

<match app.rails.access>
  type elasticsearch
  host <your elasticsearch address>
  port 9200
  type_name type-name  # Elasticsearchにおけるテーブルみたいなもん
  logstash_format true
  flush_interval 10s
</match>

Kibanaの設定

で、しばらくまつとElasticsearchにデータが転送され、ゴニョゴニョできるようになってます。
SSとりわすれたので、ここを参考にしてください。

qiita.com

するとこんな感じになります。

f:id:naosuke2dx:20170131212811p:plain:w300

あとは可視化をいい感じに設定すればいいんだけど、今日はつかれたのでこの辺で(;´Д`)