5ヶ月ぶりです。人生ですね。
Telegrafを使った監視をやってみたので、備忘録として残しておきます。
What is Telegraf
InfluxData社が作成したメトリクス集計、レポーティングツールになります。
構造として、
の4種類のプラグインで成り立っており、それぞれのプラグインの設定を記述して動かすことになります。
READMEに載っているプラグイン一覧を見ていただければ分かるのですが、凄い数のプラグインがあります。
無かったらGoで作ってPRを送りましょう。
概ね良いツールではあるのですが、如何せん設定周りの記述で分かりづらいところもあるので、以下のドキュメント集はさっくり見ておくことをオススメします。
(CONFIGRATION.mdだけでも読みましょう。筆者は読まなかったことでMetrics Filteringの存在に気付かず、痛く後悔をしました)
やりたい
こんな感じでメトリクスを集計・送信したいという願望図
やる
やっていきます。
まぁそんなにやることはなくて、手順としては
- Telegrafのconfig fileを吟味する
.ebextensions
でElastic Beanstalkに建てられるEC2インスタンス設定を弄る- Telegrafをインストール
- Telegraf config fileを作成
- Telegrafを実行
てな流れになります。
Telegrafのconfig fileを吟味する
まずはTelegrafのデフォルトのconfig fileを見ていきましょう・・・ってのをやりたいのですが、6200行近くあるので必要なプラグインのみ記述されているconfig fileを出力しましょう。
$ telegraf --input-filter docker --output-filter cloudwatch config > ./telegraf.config
で、これでも600行近くあるので必要な部分をつまみ食いしたconfigを見てみましょう。
設定の意味合いとかを日本語で簡単に書きました。
特にこだわりなければデフォルトでもメトリクス吐いてくれますが、メトリクスを絞り込まなければかなりの量のカスタムメトリクスが生成されてしまうので注意しましょう。(カスタムメトリクスは即時削除できず、保有期間を過ぎるのを待たないといけない)
どのようなメトリクスが吐かれるのか知りたい場合は、 --test
オプションを使って標準出力に吐いてみましょう。
また、各プラグインの詳細説明はREADMEにあるプラグイン一覧からリンクで飛べるため、使用する前に目を通しておくのをオススメします。
例えばDockerプラグインだと集計するメトリクスが書いてあったりするので、それを見ながらメトリクスフィルタリングすると良いでしょう。
メトリクスフィルタリング?
メトリクスを必要な分だけ絞り込む際に使うやつです。
基本的にどのプラグインでも使える設定値で、詳しくは以下参照。
https://github.com/influxdata/telegraf/blob/master/docs/CONFIGURATION.md#metric-filtering
例えば、Dockerからメモリ使用量・使用率しか集計したくない!って場合は、 [[inputs.docker]]
に以下のような設定を記述することで実現できます。
[[inputs.docker]] namepass = ["docker_container_mem"] fieldpass = ["usage_percent", "usage"]
特にCloudWatchのようなクラウド環境に送る際に、不要なメトリクスを送ってしまうと無駄なコストが掛かってしまうのでメトリクスフィルタリングを是非活用したいですね。
また、今回のようにElastic Beanstalk環境でやる際には、 container_name_exclude
に ecs-agent
を追加しておくのが良いでしょう。特に見る必要のないコンテナなので・・・
というわけで、脳死でやりたいならデフォルトでも良いですが、変なことにならないよう諸々設定しておきましょうという話でした。
.ebextensions
でElastic Beanstalkに建てられるEC2インスタンス設定を弄る
Elastic Beanstalkには .ebextensions
という、EC2インスタンスが生成される際に走る設定があります。
今回はここにtelegrafのインストール・設定ファイルの生成・telegrafの実行、という3つの設定を書いていきましょう。
.ebextensions
の注意
地味に引っかかりそうなところなんですが、 .ebextensions
はファイル名のアルファベット順に実行されますので注意してください。
例えば、
.ebextensions - install-telegraf.config - exec-telegraf.config
といったファイルがあった場合、予想に反して exec-telegraf.config
から実行されてFailしてしまうので、 00.install-telegraf.config
などファイル名の先頭に数字を付けておくと安全です。
telegrafのインストール
こちらが設定例になります。
yumのrepoを生成し、インストールしている簡単なものになります。
注意点として、インスタンスにAmazon Linuxを使っている場合には baseurl
を公式のインストールマニュアルにあるように https://repos.influxdata.com/rhel/$releasever/$basearch/stable
とすると404エラーが発生するので、上記のようにしておきましょう。
Telegraf config fileを作成
config fileを /etc/telegraf/telegraf.conf
に生成しています。
ここは content
の部分が各々変わってくるところかなと。
Telegrafを実行
最後にTelegrafを実行しましょう。
これでデプロイ時に上手くtelegrafが動いて、CloudWatchにメトリクスが集計されるようになります。
おわり
という感じで簡単にTelegrafの使用例を書いてみました。
日本語でのTelegrafに関する記事が少なかったので、増やす意味で書きましたが参考にされる方が一人でもいれば幸いです。
このようにプラグインの設定をザッと書くだけで監視環境が整うのは、とても楽で良いですね。
他にもこんなツールは良いよ!というのがあれば是非教えて下さい🙇