はじめに
EC2 につけたタグ情報を fluentd でレコードやタグで利用できないかなって思っていたら同僚に教えてもらったので使い方のメモです。
fluent-plugin-ec2-metadata とは?
fluentd のレコードやタグにに EC2 のメタデータを含めることが出来る fluentd のプラグインです。
インストール
Amazon Linux にインストールしました。
/usr/lib64/fluent/ruby/bin/gem install fluent-plugin-ec2-metadata --no-ri --no-rdoc -V
設定
fluent-plugin-dstat で収集したメトリクスデータのタグにインスタンスのタグを含める場合に以下のように設定を行いました。
<source> type dstat tag dstat option -d -lcm --tcp delay 3 </source> <match dstat> type ec2_metadata aws_key_id AKxxxxxxxxxxxxxxxxxxxxxxxxxx aws_sec_key xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx output_tag dstat.${instance_id}.${tagset_name} <record> tag ${tagset_name} instance_id ${instance_id} </record> </match> <match dstat.*.*> type forest subtype copy <template> <store> type map tag "dstat.${hostname}.${tag_parts[2]}.cpu" time time record record['dstat']['total cpu usage'] </store> </template> </match> (中略) <match dstat.**> type forward buffer_type file buffer_path /tmp/fluent.dstat.buffer retry_wait 30s retry_limit 5 flush_at_shutdown true <server> host 127.0.0.1 port 24224 </server> </match>
td-agent を再起動すると以下のようなログが記録されます。
2014-09-25 05:44:15 +0000 [info]: out_forest plants new output: copy for tag 'dstat.i-xxxxxxx.fluent-graphite'
尚、IAM で EC2 Read Only Access 権限のみを付与したユーザーで作成した Credential 情報で動作することを確認いたしました。
暫くすると…
試しにファイルに出力した場合には
以下のようにレコード内に instance_id
と tag
が含まれています。(type file で書き出したレコードを jq で見やすくしました)
{ "instance_id": "i-xxxxxxxx", "tag": "fluent-graphite", "dstat": { "tcp sockets": { "clo": "0.0", "tim": "1.0", "syn": "0.0", "act": "33.0", "lis": "10.0" }, "memory usage": { "free": "250347520.0", "cach": "105418752.0", "buff": "63483904.0", "used": "625778688.0" }, "total cpu usage": { "siq": "0.0", "hiq": "0.331", "wai": "0.0", "idl": "96.026", "sys": "0.331", "usr": "3.311" }, "load avg": { "15m": "0.050", "5m": "0.030", "1m": "0.010" }, "dsk/total": { "writ": "10922.667", "read": "0.0" } }, "hostname": "ip-xxx-xx-xx-xxx" }
Graphite では…
最後に
インスタンスの増減が頻繁な環境で手軽にリソース監視してはみたけど、グラフとインスタンスの関連付けに困った場合には使いたいですな。
元記事はこちらです。
「fluent-plugin-ec2-metadata の使い方」