Yakstは、海外の役立つブログ記事などを人力で翻訳して公開するプロジェクトです。
約9年前投稿 修正あり

Telegrafを使ってInfluxDBとKafkaにメトリクスを送信する(InfluxDB Blogより)

Telegrafは簡易にセットアップ可能なInfluxDBのメトリクスコレクタである。これはプラグインアーキテクチャを採用している。現在ではデータの出力先としてInfluxDBだけでなくKafkaなど他の出力先も利用できるようになった。本エントリではTelegrafをインストールして、KafkaやInfluxDBの管理インターフェース、そしてChronografでTelegrafのデータを見れるまでの手順を紹介する。

原文
Using Telegraf To Send Metrics To InfluxDB And Kafka | InfluxDB (English)
翻訳依頼者
B5aa4f809000b9147289650532e83932
翻訳者
B5aa4f809000b9147289650532e83932 taka-h
翻訳レビュアー
D98ee74ffe0fafbdc83b23907dda3665 doublemarket
原著者への翻訳報告
未報告


出典について

この記事はInfluxDB BlogのCameron Sparr氏によるUsing Telegraf to send metrics to InfluxDB and Kafka(2015/09/17)を翻訳したものです。


はじめに

Telegrafはどんなサーバー上でも動作し、様々なメトリクスをシステム(CPU、メモリ、スワップなど)、共通のサービス(MySQL, Redis, PostgreSQLなど)、サードパーティーのAPI(近日公開予定)から収集できるデーモンである。データの収集および、データの出力の両方でプラグインアーキテクチャを採用しているため、拡張が容易である。Go言語で書かれており、これは外部依存性なしにどんなシステム上でも実行可能なコンパイルされたスタンドアロンバイナリであることを意味する(npm, pip, gemあるいは他の必要となるパッケージ管理システムが不要)。

Telegrafは元々はInfluxDBのメトリック収集エージェントとして開発されたが、最近ではKafkaDatadog、そしてOpenTSDBのような他のデータ格納媒体にもメトリックを出力できるように発展をとげた。これによりユーザーはInfluxDBを既存のモニタリングおよびロギングスタックに容易に組込み、また、KafkaまたはDatadogのデータを利用する既存のツールを使い続けることが可能となった。

このガイドでは、次のことを取扱う

  • TelegrafのインストールおよびCPUのデータを収集する為の設定方法
  • Telegrafの起動
  • KafkaでTelegrafのデータをみる
  • InfluxDBの管理インターフェースとChronografからTelegrafのデータをみる

このガイドのKafkaの部分は完全にオプションとして利用するものである。InfluxDBにデータを出力したいだけなら、Kafkaに関する全てのステップを飛ばして、outputs.kafkaの部分をサンプルのコンフィグから削除すれば良い。

前提条件

始める前に次の事項が必要である

  • InfluxDBサーバー
    • まだなければ、dockerコンテナからデータベースを起動することができる。私はinfluxdbレポジトリ内のbuild-docker.shスクリプトから、自分のInfluxDBのdockerイメージを作った。
  • Kafkaブローカ
    • このデモではKafkaブローカをdockerコンテナでspotify/kafkaディストリビューションを使って起動している。dockerがインストール済みであると仮定すれば、次のようにすれば良い
docker run -d -p 2181:2181 -p 9092:9092 \
    --env ADVERTISED_HOST=localhost \
    --env ADVERTISED_PORT=9092 spotify/kafka

注: このガイドはOSXでも実行できる。localhostboot2docker ipまたはdocker-machine ip <name>で置き換え、Telegrafをhomebrewでインストールすればよい。

ステップ1: Telegrafのインストール

Telegrafはgithub page .deb または .rpm パッケージからインストールすることができるが、今回のシンプル化したデモの為にスタンドアロンバイナリのみを利用する

wget http://get.influxdb.org/telegraf/telegraf_linux_amd64_0.1.8.tar.gz
tar -xvf telegraf_linux_amd64_0.1.8.tar.gz
mv ./telegraf_linux_amd64 /usr/local/bin/telegraf

ステップ2: Telegrafの設定

Telegrafは全てのプラグインと出力先のコンフィグを含んだコンフィグのサンプルを生成する機能を提供している。telegraf -sample-configである。このガイドではよりシンプルなコンフィグを利用するので、下記の設定を~/telegraf.tomlとして保存して欲しい。必要に応じて、環境に合わせて# EDIT THIS LINEで示された2行を編集すれば良い。

# OUTPUTS
[outputs]
[outputs.influxdb]
    # The full HTTP endpoint URL for your InfluxDB instance
    url = "http://localhost:8086" # EDIT THIS LINE
    # The target database for metrics. This database must already exist
    database = "telegraf" # required.

[outputs.kafka]
    # URLs of kafka brokers
    brokers = ["localhost:9092"] # EDIT THIS LINE
    # Kafka topic for producer messages
    topic = "telegraf"

# PLUGINS
# Read metrics about cpu usage
[cpu]
    # Whether to report per-cpu stats or not
    percpu = false
    # Whether to report total system cpu stats or not
    totalcpu = true

ステップ3: Telegrafの起動

Telegrafは-testオプションをつけて起動すると、cpuプラグインの1セットのメトリクスが標準出力に出力される。1つ気をつけて欲しいのはCPU利用率が含まれていないことで、これは2つの計測データを必要とする為である。

$ telegraf -config ~/telegraf.toml -test
* Plugin: cpu
> [cpu="cpu-total"] cpu_user value=5.75
> [cpu="cpu-total"] cpu_system value=4.59
> [cpu="cpu-total"] cpu_idle value=11226.01
[...]
> [cpu="cpu-total"] cpu_busy value=12.15

これでTelegrafを起動する準備が整い、自動的に付与されるhostタグおよび、tomlファイルで設定された全てのタグを利用して、設定されたInfluxDBサーバーおよびKafkaブローカに計測値を送り始める。

$ telegraf -config telegraf.toml
2015/09/01 22:01:41 Starting Telegraf (version 0.1.8)
2015/09/01 22:01:41 Loaded outputs: influxdb kafka
2015/09/01 22:01:41 Loaded plugins: cpu
2015/09/01 22:01:41 Tags enabled: dc=us-east-1 host=myserver

上記で分かるように、influxdbおよびkafkaが出力先として設定され、cpuプラグインがロードされたことをTelegrafが示している。

ステップ4: Kafkaのデータをみる

Kafka コンソール コンシューマを使ってKafkaブローカがTelegrafから送信されたInfluxDBのラインプロトコルのメッセージを受取っているかを確認する。

コンソール コンシューマを起動する為には、Kafkaのソースをダウンロードする

wget http://apache.arvixe.com//kafka/0.8.2.0/kafka_2.10-0.8.2.0.tgz
tar -zxf kafka_2.10-0.8.2.0.tgz
cd kafka_2.10-0.8.2.0/

それから起動する(必要に応じてlocalhostをご利用のKafkaブローカのアドレスに置き換えること)

$ ./bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic telegraf --from-beginning
[...]
cpu_percentageUser,cpu=cpu-total,dc=us-east-1,host=myserver value=0.4024144869214442
cpu_percentageSystem,cpu=cpu-total,dc=us-east-1,host=myserver value=0.8048289738428706
cpu_percentageIdle,cpu=cpu-total,dc=us-east-1,host=myserver value=98.6921529174951
cpu_percentageNice,cpu=cpu-total,dc=us-east-1,host=myserver value=0.0
cpu_percentageIowait,cpu=cpu-total,dc=us-east-1,host=myserver value=0.0
cpu_percentageIrq,cpu=cpu-total,dc=us-east-1,host=myserver value=0.0
cpu_percentageSoftirq,cpu=cpu-total,dc=us-east-1,host=myserver value=0.10060362173035882
cpu_percentageSteal,cpu=cpu-total,dc=us-east-1,host=myserver value=0.0
cpu_percentageGuest,cpu=cpu-total,dc=us-east-1,host=myserver value=0.0
cpu_percentageGuestNice,cpu=cpu-total,dc=us-east-1,host=myserver value=0.0
cpu_percentageStolen,cpu=cpu-total,dc=us-east-1,host=myserver value=0.0
cpu_percentageBusy,cpu=cpu-total,dc=us-east-1,host=myserver value=1.3078470824946893

上記のように、それぞれのTelegrafがデータベースに送信しているInfluxDBのラインプロトコルのメッセージはKafkaブローカにも記録されており、これにより我々はラインプロトコルのデータを処理しKafkaと連携する任意のツールで扱えるようになる。

ステップ5: InfluxDBのデータをWebUIとChronograf経由でみる

http://localhost:8083/のInfluxDBのウェブインターフェースがみつけられれば、cpu_percentageBusyデータに関するクエリを発行し、Telegrafが適切な計測値を出力しているかどうかを確認できる。

SELECT * FROM cpu_percentageBusy WHERE host='myserver' AND dc='us-east-1'

[画像]InfluxDB管理コンソールのユーザーインターフェース ※元記事へのリンク

標準のInfluxDBの管理インターフェースは極めて簡易なものであるが、InfluxDB社はChronografと呼ばれる時系列データの可視化ツールも開発しており、次に示すような外見のグラフを作ることができる。

[画像]Chronografのユーザーインターフェース ※元記事へのリンク

これは次のCPU busyのパーセンテージのクエリをグラフ化しているもので、このクエリはChronografの組込みのクエリビルダでも作成できる。

SELECT "value" FROM "telegraf".."cpu_percentageBusy" WHERE time > now() - 1h AND "cpu"='cpu-total'

次のステップ

Telegrafには既に利用可能なプラグインがたくさんあり、出力オプションもいくつかある。全てのプラグインおよび出力先をどのように設定するかに関するドキュメントはtelegraf -sample-configを実行するか、それぞれのプラグインに対してtelegraf -usage プラグイン名を実行するかでえられる。


Cameron Sparr氏はInfluxDB社に所属しており、Telegrafのコアコントリビュータである。

次の記事
MySQL SYSスキーマ入門のQ&Aフォローアップ(The Percona Performance Blogより)
前の記事
Bashのよくある間違い

Feed small 記事フィード

新着記事Twitterアカウント