読者です 読者をやめる 読者になる 読者になる

exlar's IT note

ITやスマートデバイスを中心とした趣味情報の寄せ集め

Telegraf を CoreOS にインストールしてメトリクスを取得する方法

InfluxDB CoreOS Metrics Telegraf

次の記事で Ubuntu 14.04 に Telegraf をインストールしましたが、今回は CoreOS へインストールします。インストール時点でのバージョンは 1122.3.0 となります。

exlair.hatenablog.com

Telegraf バイナリの取得

GitHub - influxdata/telegraf: The plugin-driven server agent for collecting & reporting metrics.

Linux tarballs: のセクションから入手してください。

https://dl.influxdata.com/telegraf/releases/telegraf-1.0.1_linux_amd64.tar.gz
(2016/10/24時点のバージョン)

インストール時は、最新バージョンをご確認ください。tarball を展開すると以下の構成になっています。

etc/logrotate.d/telegraf      # log rotate config
etc/telegraf/telegraf.conf    # config

var/log/telegraf/             # 空ディレクトリ

usr/bin/telegraf              # 実行バイナリ本体
usr/lib/telegraf/scripts/
                        init.sh            # initスクリプト
                        telegraf.service   # systemd の設定ファイル

そのまま / に上書きしようとすると怒られます。

sudo mv usr/bin/telegraf /usr/bin/ mv: inter-device move failed: 'usr/bin/telegraf' to '/usr/bin/telegraf'; unable to remove target: Read-only file system

CoreOSではユーザーが書き込みできる領域が限られているためです。CoreOSでは標準で$PATH/opt/binが含まれていますので、ここに配置します。

ここで欲しいファイルは2つなので、手動で設定してしまうことにします。

sudo mv usr/bin/telegraf /opt/bin/
sudo mv usr/lib/telegraf/scripts/telegraf.service /etc/systemd/system/

sudo mkdir -p /var/log/telegraf
sudo mkdir /etc/telegraf
sudo mkdir /etc/telegraf/telegraf.d
sudo vi /etc/telegraf/telegraf.conf

service ファイルの修正

telegraf の配置パスを変更したので一部修正します。

本記事ではユーザーを作成していませんので、ここは必要に応じて適宜見直しください。

--- telegraf.service 2016-10-24 02:27:01.000000000 +0900
+++ /etc/systemd/system/telegraf.service    2016-10-24 02:32:10.000000000 +0900
@@ -5,10 +5,10 @@
 
 [Service]
 EnvironmentFile=-/etc/default/telegraf
-User=telegraf
+User=root
 Environment='STDOUT=/var/log/telegraf/telegraf.log'
 Environment='STDERR=/var/log/telegraf/telegraf.log'
-ExecStart=/bin/sh -c "exec /usr/bin/telegraf -config /etc/telegraf/telegraf.conf -config-directory /etc/telegraf/telegraf.d ${TELEGRAF_OPTS} >>${STDOUT} 2>>${STDERR}"
+ExecStart=/bin/sh -c "exec /opt/bin/telegraf -config /etc/telegraf/telegraf.conf -config-directory /etc/telegraf/telegraf.d ${TELEGRAF_OPTS} >>${STDOUT} 2>>${STDERR}"
 ExecReload=/bin/kill -HUP $MAINPID
 Restart=on-failure
 KillMode=control-group

systemd で Telegrafサービスを有効にします。

$ sudo systemctl enable telegraf

$ systemctl list-unit-files telegraf.service
UNIT FILE        STATE  
telegraf.service enabled

最後に、enabled になっていることを確認したら sudo systemctl start telegraf で完成です。もし起動しない場合、sudo journalctl -u telegraf -f で起動ログを確認しながら動作確認を試みるとヒントが見つかるはずです。

意外と、InfluxDB側のHTTPサーバーのアクセス制限だったりしますので気をつけましょう。
(別サーバーだったりする場合は特に!)