本エントリではInfluxDB専用のメトリックスコレクタTelegrafを使ってみた(2015/7/19)からのアップデート情報を記載します。
InfluxDB、Telegraf両方のアップデートに影響を受けるので関連する情報を記載します。
InfluxDBの変更点
本記事は0.9.3-1を対象にしています。
0.9の中でも0.9.3で行われた「ラインプロトコルの変更」はクライアント側が影響を受ける可能性があるので注意してください。
- 0.9.3のリリースノート
- 公式サイト
- 日本語訳
- Line Protocol
Telegraf以外のInfluxDBへデータを入れているクライアントは同様に影響を受ける可能性があるでしょう。
Telegrafの変更点
本記載は網羅的に変更点を確認したものではなく、気がついた変更点を記載したものですのでご了承ください。
InfluxDBとのバージョン互換
上記に述べたラインプロトコルの変更により、InfluxDBとの互換性に注意が必要です。
Due to a breaking change to the InfluxDB integer line-protocol, there are some InfluxDB compatibility requirements:
- InfluxDB 0.9.3+ requires Telegraf 0.1.5+
- InfluxDB 0.9.2 and prior requires Telegraf 0.1.4
※README.mdより抜粋
コンフィグ記法の変更
コンフィグの変更点について記載します。
InfluxDBへの主要な設定を記載するセクションの変更
観測するエラー
outputsセクションがなく正常なコンフィグでない旨のエラーが出力される
[vagrant@client-node ~]$ sudo tail -f /var/log/telegraf/telegraf.log
2015/09/16 00:38:00 Error: no outputs found, did you provide a valid config file?
変更点
before)
# Configuration for influxdb server to send metrics to
[influxdb]
# The full HTTP endpoint URL for your InfluxDB instance
url = "http://{{ primary_log_server_address }}:8086" # required.
after)
# Configuration for influxdb server to send metrics to
[outputs]
[outputs.influxdb]
# The full HTTP endpoint URL for your InfluxDB instance
url = "http://{{ primary_log_server_address }}:8086" # required.
プラグインオプションの追加 (0.1.5)
各プラグインで利用できるオプションについて旧来の
- pass
- drop
- interval
に加え、新たに
- tagpass
- tagdrop
が追加されました。README記載の下記サンプルが参考になるでしょう。
記載の通りtagpass条件がOR判定であることに注意しましょう。
# Don't collect CPU data for cpu6 & cpu7
[cpu.tagdrop]
cpu = [ "cpu6", "cpu7" ]
[disk]
[disk.tagpass]
# tagpass conditions are OR, not AND.
# If the (filesystem is ext4 or xfs) OR (the path is /opt or /home)
# then the metric passes
fstype = [ "ext4", "xfs" ]
path = [ "/opt", "/home" ]
mysqlプラグインのサーバー指定の不具合
メトリック取得対象のホストに対してserverタグが付与されるようになりました。
この変更に伴い不具合と思われる事象を観測しています。
観測するエラー
serverタグに対する値がないためエラーが発生しています。
2015/09/16 01:40:17 Error in output [influxdb]: unable to parse 'mysql_aborted_clients,host=client-node,server= value=0i': missing tag value
2015/09/16 01:40:17 Error encountered flushing outputs
発生条件
mysqlプラグインでは収集対象(およびユーザー、パスワード)をserversで指定します。
※収集対象は指定がない場合はlocalhostとなります
localhostにroot/nopassでつなぎにいく従来の設定が失敗します。
# 失敗する例: 1
[mysql]
servers = ["localhost"]
# 失敗する例: 2 記載なし、デフォルト
[mysql]
# servers = ["localhost"]
ワークアラウンド
ちゃんとコンフィグを書いてあげます。ローカルのMySQLに対する設定例です。
servers = ["root:@tcp(127.0.0.1:3306)/"]
下記も参考にしてください。
対応状況は関連Issueをご確認ください
※2015/9/17 修正されました。
cpuメトリック取得の改善
CPUコア毎の情報を取得するかどうか、システム全体の統計を取得するかどうかが簡易に指定できるようになりました。
[cpu]
# Whether to report per-cpu stats or not
percpu = true
# Whether to report total system cpu stats or not
totalcpu = true
プラグインの追加
pingプラグイン
指定したアドレスに対するpingのレスポンスなどを記録できます。
コンフィグ
サンプルコンフィグを抜粋。urlに対してタグがつきます。
[ping]
# urls to ping
urls = ["www.google.com"] # required
# number of pings to send (ping -c <COUNT>)
count = 1 # required
# interval, in s, at which to ping. 0 == default (ping -i <PING_INTERVAL>)
ping_interval = 0.0
# ping timeout, in s. 0 == no timeout (ping -t <TIMEOUT>)
timeout = 0.0
# interface to send ping from (ping -I <INTERFACE>)
interface = ""
観測項目
統計を取ってみると結構楽しいです。
- ping_average_response_ms
- ping_packets_received
- ping_packets_transmitted
- ping_percent_packet_loss
その他
下記にプラグインの一覧があります。
execプラグイン、httpjsonプラグインは、JSONを返す任意のコマンド/HTTPサービスを指定して観測できて面白そうです。
連携先(output)の追加
- datadog(0.1.6)
- Kafka(0.1.7)
終わりに
本変更に対してTelegrafのサンプルコードに反映しています。ご活用ください。