はじめに
- 以下の記事を参考させていただいてfluentdのdstatプラグイン設定を試してみた際に、設定でハマって試行錯誤したときのメモ。
- http://blog.nomadscafe.jp/2014/03/dstat-fluentd-elasticsearch-kibana.html
- 記事時点からdstatプラグインとmapプラグインでバージョンアップがあり、それに伴いいくつか変更点があり設定がうまく行かなかったことが原因だったが、発生したエラー内容見てもいまいち原因がわからず試行錯誤する中で解決したので備忘録的にメモ。
前提条件
検証に用いた環境
- CentOS 7.1 64bit (Vagrant上のVM)
- fluentd (td-agent) 0.12.19
- fluent-plugin-dstat 0.3.1)
- fluent-plugin-map 0.0.5
- dstat 0.7.2
検証に用いたシステム構成
前述の記事などを参考にしてFluentd+ElasticSearch+Kibana+dstat環境を構築。
うまく行かなかった最初の設定
/etc/td-agent/td-agent.conf
<match dstat>
type map
tag "map.dstat.cpu-usr"
time time
record {"value" => record["dstat"]["total cpu usage"]["usr"], "stat" => "cpu-usr", "host" => record["hostname"]}
</match>
上記設定で発生した事象
- td-agentのサービスを起動するとコケる(FAILED)。
- 下記のようなエラーを吐く。
/var/log/td-agent.log
2015-12-31 18:43:19 +0000 [error]: unexpected error error="undefined method `dstat' for #<String:0x007f22ccfca508>"
2015-12-31 18:43:19 +0000 [error]: suppressed same stacktrace
- データが出力(output)されない。
うまく行かなかった理由
- fluent-plugin-dstatのレコード出力内容が微妙に変わった。→レコード名がスペース区切りからアンダースコア区切りに変わった。
- 旧フォーマットの例:"total cpu usage"
- 新フォーマットの例:"total_cpu_usage"
- fluent-plugin-mapの設定フォーマットが微妙に変わった?
→プラグインのREADMEのサンプルをtagとrecordの中身はカッコで囲むようにフォーマットが変わった模様。
- 旧フォーマット例:tag "map.dstat.cpu-usr"
- 新フォーマットの例:tag ("map.dstat.cpu-usr")
うまく行った設定
以下のとおり設定を修正したらうまく行った。
/etc/td-agent/td-agent.conf
<match dstat>
type map
tag ("map.dstat.cpu-usr")
time time
record ({"value" => record["dstat"]["total_cpu_usage"]["usr"], "stat" => "cpu-usr", "host" => record["hostname"]})
</match>