5分でわかるTelegraf入門(クイックスタート)
サーバーのCPU、RAM、ディスクなどの全統計データを一箇所に集約するための「軽量」で、インストール後すぐに動くツールが必要なら、Telegrafが最適な選択肢です。複雑な curl や python スクリプトを苦労して書く代わりに、.conf ファイルの数行を調整するだけで十分です。
それでは、データをInfluxDBに送信するために、Ubuntu/Debianでのクイックインストールを始めましょう。ここでは、すでにInfluxDBが用意されているか、Cloud版を使用していることを前提としています。
# InfluxDataের 公式リポジトリを追加
wget -q https://repos.influxdata.com/influxdata-archive_key.gpg
echo "393e8779c8945d3195561a4411ac3c21c177026f151cb854766e13b29527e5e0 influxdata-archive_key.gpg" | sha256sum -c && cat influxdata-archive_key.gpg | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/influxdata-archive.gpg > /dev/null
echo "deb [signed-by=/etc/apt/trusted.gpg.d/influxdata-archive.gpg] https://repos.influxdata.com/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/influxdata.list
# Telegrafのインストール
sudo apt-get update && sudo apt-get install telegraf
# サービスを有効化
sudo systemctl enable --now telegraf
インストールが完了すると、設定ファイルは /etc/telegraf/telegraf.conf に配置されます。ファイルを開き、[[outputs.influxdb_v2]] セクションを探して、URL、Token、Bucketを入力してください。わずか30秒で、データがInfluxDBに流れ込み始めます。
Telegrafとは何か?なぜ選ばれるのか?
簡単に言うと、TelegrafはGo言語で書かれたオープンソースのエージェントであり、有名なTICKスタックのエコシステムの一部です. 最大の利点は、リソース消費が極めて少ないことです(占有RAMはわずか10〜50MB程度)。300以上のプラグインが組み込まれており、MySQLやRedisの指標から、IoTデバイスからのMQTTメッセージまで、あらゆるものを読み取ることができます。
Telegrafの処理フローは、以下の4つのステージで動作します:
- Inputs: メトリクス(CPU、Docker、Nginxなど)を収集します。
- Processors: データの修正、タグ付け、またはフィルタリングを行います。
- Aggregators: データの集約(例:1分間ごとの平均値の算出)を行います。
- Outputs: データの送信先(InfluxDB、Prometheus、Kafkaなど)を指定します。
私が管理しているシステムでは、Telegraf + InfluxDB + Grafana を使用して15台のLinuxサーバーを監視しています。これのおかげで、以前、ユーザーがWebサイトの遅延に気づく前に、ワーカーノードのメモリ溢れを早期発見することができました。
実践的なTelegrafのデータ収集設定
デフォルトの設定ファイルが数千行もあるからといって、怯える必要はありません。私の経験では、一度すべて削除するかコメントアウトし、本当に必要なものだけを残すのがコツです。以下は、システムリソースとDockerを監視するためのサンプル設定です。
1. システムリソースの監視
以下のコードを /etc/telegraf/telegraf.conf ファイルに挿入します:
[[inputs.cpu]]
percpu = true
totalcpu = true
report_active = false
[[inputs.mem]]
[[inputs.disk]]
ignore_fs = ["tmpfs", "devtmpfs", "devfs", "overlay", "squashfs"]
[[inputs.net]]
interfaces = ["eth0", "enp*"]
2. Dockerコンテナの監視
どのコンテナが最もリソースを消費しているか知りたいですか? docker プラグインを使いましょう。重要な注意点として、telegraf ユーザーがDockerのソケットにアクセスできる権限を持っている必要があります。
# Telegrafに権限を付与
sudo usermod -aG docker telegraf
# telegraf.confでの設定
[[inputs.docker]]
endpoint = "unix:///var/run/docker.sock"
container_names = []
timeout = "5s"
perdevice = false
total = true
InfluxDBへのデータ送信
これがデータを保存するための最終ステップです。InfluxDB 2.xの場合、設定は以下のようになります:
[[outputs.influxdb_v2]]
urls = ["http://192.168.1.100:8086"]
token = "YOUR_SECURE_TOKEN_HERE"
organization = "my-org"
bucket = "server-metrics"
ちょっとしたヒント:Tokenを直接書き込むのではなく、環境変数を使用して保存しましょう。これにより、誤ってコードをGitHubにプッシュしてしまった場合でも、セキュリティを確保できます。
運用における「現場で学んだ」重要な教訓
監視システムを長年運用してきた中で、データ損失を避けるための3つの重要な注意点をまとめました:
適用前に必ずテストを行う
設定ファイルを修正するたびに、すぐにサービスを再起動しないでください。まずテストコマンドを実行しましょう:
telegraf --config /etc/telegraf/telegraf.conf --test
ターミナルにメトリクスの数値が次々と表示されれば、設定は正解です。
収集間隔(Interval)の調整
デフォルトでは、Telegrafは10秒ごとにデータを取得します。それほど重要ではないサーバーの場合、私は通常30秒または60秒に増やしています。これにより、CPU負荷を抑え、InfluxDBのストレージ容量を大幅に節約できます。
ネットワーク切断時の対応
InfluxDBがダウンしたり、ネットワークが不安定になったりした場合、Telegrafはバッファ(buffer)を使用してデータを保持します。[agent] セクションの metric_buffer_limit を10,000程度に増やしておくことをお勧めします。
以前、回線が切れた際にバッファのデフォルト値が低すぎて、2時間分のデータを完全に失ったことがあります。皆さんは私のような状況に陥らないように気をつけてください。
結論として、Telegrafは非常に柔軟で強力なツールです。Grafanaと組み合わせてグラフを描画すれば、インフラの「健康状態」を完全に把握できるようになります。セットアップの成功を祈っています!

