ながくなったので分けました。 ここではFluentdの設定やらKibanaの設定やらをしていきます。
(1)はこちら
(1)のまとめ
- Fedora25にElasticsearchとKibanaを入れたよ!
- 監視対象にFluentdをインストールしたよ!
- Fedora25のnginxをいじって、他ホストからKibanaを見れるようになったよ!
監視対象の設定
正規表現のテストがしんどいのでこのページを使うと多少幸せになれます。
設定は /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のアクセスログの設定
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とりわすれたので、ここを参考にしてください。
するとこんな感じになります。
あとは可視化をいい感じに設定すればいいんだけど、今日はつかれたのでこの辺で(;´Д`)