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

インフラ技術

CoreOSへTelegrafをインストールする手順です。CoreOSは書き込み可能な領域が限られているため、通常のLinuxとは配置方法が異なります。

Telegrafバイナリの取得

GitHub - influxdata/telegraf の Linux tarballs セクションから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 の設定ファイル

CoreOSへの配置

そのまま /usr/bin/ に配置しようとすると怒られます。

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

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

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ファイルの修正

配置パスを変更したので、systemdのserviceファイルを修正します。

 [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}"

起動と確認

$ sudo systemctl enable telegraf

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

$ sudo systemctl start telegraf

起動しない場合は sudo journalctl -u telegraf -f でログを確認してください。InfluxDB側のHTTPアクセス制限が原因であることも意外と多いです。

Related Posts