sLaicaの技術研究

サーバインフラエンジニアが学んだ技術を色々書き綴っていこうと思います。たまーに別のこと書くかも?

InfluxDB+Telegraf検証

はじめに

オンプレ環境の監視を導入したいとの要望があった。監視にコレと言ったこだわりは無いようだったので、思い切って、今まで触れていなかった監視システムに挑戦してみることに。
PrometheusかTelegrafかで悩んだけど、そこまでスケールの大きいことをする予定は無さそうだし、Telegrafに挑戦してみようかと思う。Prometheusは別の機会に。
最終目標はGrafanaでの統合監視。これは次回やる。今回はTelegrafで収集したデータが、InfluxDBコンソール上で確認出来るところまでやろうと思う。
…そんな感じでざっくりスタート(毎回このくらい気楽に仕事したいわぁ…)。

検証環境

①InfluxDB導入

1.インストール

公式サイトのダウンロード方法を参考にインストール。調査用にCLIも導入しておく。

[root@almalinux ~]# cat <<EOF > /etc/yum.repos.d/influxdb.repo
[influxdb]
name = InfluxDB Repository - RHEL \$releasever
baseurl = https://repos.influxdata.com/rhel/\$releasever/\$basearch/stable
enabled = 1
gpgcheck = 1
gpgkey = https://repos.influxdata.com/influxdb.key
EOF

[root@almalinux ~]# dnf install influxdb2 influxdb2-cli

2.サービス起動&自動起動有効化

設定はGUIでやるので、ぱぱっとサービス起動。

[root@almalinux ~]# systemctl start influxdb
[root@almalinux ~]# systemctl enable influxdb

3.ポート開放

ファイアウォール有効にしてる場合のみ実施。InfluxDBコンソール接続に利用するポートは8086/tcp

※Firewalldサービスの場合
[root@almalinux ~]# firewall-cmd --add-port=8086/tcp --permanent
[root@almalinux ~]# firewall-cmd --reload

4.初期設定

ブラウザから初期設定を進める。こっちのほうが取っつきやすい。
ログイン情報は以下の通り。
・URL:http://xxx.xxx.xxx.xxx:8086

[Get Started]を選択。

適当にDB情報入力して、[Continue]を選択。

ここでは特に用は無い!すまぬ!一番右の[Configure Later]を選択。

コンソール画面に到着。メニュー欄の[Data]を選択。

タブ欄の[Telegraf]→青いボタン[Create Configuration]の順に選択。

サーバの監視がやりたいので、[System]→[Continue]の順に選択。

適当にTelegraf設定情報入力して、[Create and Verify]を選択。

「Create a Telegraf Configuration」って画面が出たらストップ。Telegraf導入に進む。

②Telegraf導入

1.インストール

こっちも公式サイトを参考に。
レポジトリ設定はさっきやったので、dnfコマンド叩くだけ。

[root@almalinux ~]# dnf install telegraf

2.設定(InfluxDBと連携)

さっきの「Create a Telegraf Configuration」って画面の手順を消化。

[root@almalinux ~]# export INFLUX_TOKEN=-9kGbRVHvv89R9cAzYVTegPqZptQZ-BxbK3MXw7AxDbOz7Tge-IEUpDJcJGut9wYt1qFSrD09knxCye1ucdiUQ==
[root@almalinux ~]# telegraf --config http://192.168.1.121:8086/api/v2/telegrafs/097deed20e85f000

[Listen for Data]を選択してーー。

"Connection Found!!"って出たらOK。TeraTermで叩いてたtelegrafコマンドはキャンセル(CTRL+C)してOK。

メニュー欄の[Boards]を選択して、さっき追加した[System]を選択するとーー。

よ~し、データ見れるぞ~。今回やりたいことはクリア出来た。
てか、普通にこのUI好きだわ。Grafana使わずにこれで良くね?って思った自分が居た。

ex)トラブル:Telegrafの追加チューニング

さっきの「Create a Telegraf Configuration」の手順って常駐させないといけなさそうな感じがする。環境変数はOS再起動したら消えるし、telegrafコマンドはキャンセルしたら取得出来ていないやついるし。
環境変数に関しては/etc/profileあたりに書けば良い。問題はtelegrafコマンドの方。InfluxDBのコンソールでコンフィグが取得出来るので、それをサーバに配置してみたが、プロセスやswapが取れてなかったりする。多分"no configuration"ってなってるからだと思う。
調べてもピンと来るような解決策が見つからないので、一旦常駐化の方で対処。邪道だと思うけども、そこはご容赦。みんなプラグイン関係に手出す感じなのかな。

1.環境変数の設定

[root@almalinux ~]# vi /etc/profile
# 最下行:APIトークン情報を記載
# InfluxDB-Telegraf API Token
export INFLUX_TOKEN=-9kGbRVHvv89R9cAzYVTegPqZptQZ-BxbK3MXw7AxDbOz7Tge-IEUpDJcJGut9wYt1qFSrD09knxCye1ucdiUQ==

2.Telegrafの設定

シェル作ってcronで自動化する。まずはシェル周りから。

[root@almalinux ~]# mkdir influxdb-telegraf
[root@almalinux ~]# touch influxdb-telegraf/{influxdb-telegraf-api.sh,influxdb-telegraf-api.log,influxdb-telegraf-api.list}
[root@almalinux ~]# vi influxdb-telegraf/influxdb-telegraf-api.sh
#!/bin/sh
# ----------------------------------------------------------
# 変数定義
# ----------------------------------------------------------
# シェル定義
BASE_DIR=/root/influxdb-telegraf
LIST_FILE=influxdb-telegraf-api.list
LOG_FILE=influxdb-telegraf-api.log

# API定義
export 'INFLUX_TOKEN=-9kGbRVHvv89R9cAzYVTegPqZptQZ-BxbK3MXw7AxDbOz7Tge-IEUpDJcJGut9wYt1qFSrD09knxCye1ucdiUQ=='

# ----------------------------------------------------------
# 処理定義
# ----------------------------------------------------------
# 開始処理
echo "`date "+%Y/%m/%d %H:%M:%S"` [info] 処理開始" >> $BASE_DIR/$LOG_FILE

# API常駐化:ループ処理
while read line
do
  # 常駐プロセス確認
  count=`ps -ef| grep "telegraf --config $line" | grep -v grep | wc -l`

  # - 常駐プロセスが"0"だったら常駐化開始
  if [ $count -eq 0 ]; then
    echo "`date "+%Y/%m/%d %H:%M:%S"` [info] 処理を開始:$line" >> $BASE_DIR/$LOG_FILE
    nohup telegraf --config $line >> $BASE_DIR/$LOG_FILE 2>&1 &

    # - コマンド実行が失敗だったらエラー通知
    if [ $? -ne 0 ]; then
      echo "`date "+%Y/%m/%d %H:%M:%S"` [error] 処理に失敗:$line" >> $BASE_DIR/$LOG_FILE
    fi
  fi
done < $BASE_DIR/$LIST_FILE

# 終了処理
echo "`date "+%Y/%m/%d %H:%M:%S"` [info] 処理終了" >> $BASE_DIR/$LOG_FILE
exit 0

シェルの用意が終わった。続いてcron側を用意。

[root@almalinux ~]# chmod 700 influxdb-telegraf/influxdb-telegraf-api.sh
[root@almalinux ~]# echo "* * * * * root /root/influxdb-telegraf/influxdb-telegraf-api.sh" > /etc/cron.d/influxdb-telegraf

うむ。問題無さそうだ。グラフの方もちゃんと描画されてた(スクショは貼らないけど)。

[root@almalinux ~]# tail -f influxdb-telegraf/influxdb-telegraf-api.log
2022/06/09 23:07:01 [info] 処理開始
2022/06/09 23:07:01 [info] 処理を開始:http://192.168.1.121:8086/api/v2/telegrafs/097deed20e85f000
2022/06/09 23:07:01 [info] 処理終了
2022-06-09T14:07:01Z I! Starting Telegraf 1.22.4
2022-06-09T14:07:01Z I! Loaded inputs: cpu disk diskio mem net processes swap system
2022-06-09T14:07:01Z I! Loaded aggregators:
2022-06-09T14:07:01Z I! Loaded processors:
2022-06-09T14:07:01Z I! Loaded outputs: influxdb_v2
2022-06-09T14:07:01Z I! Tags enabled: host=almalinux
2022-06-09T14:07:01Z I! [agent] Config: Interval:10s, Quiet:false, Hostname:"almalinux", Flush Interval:10s
2022/06/09 23:08:01 [info] 処理開始
2022/06/09 23:08:01 [info] 処理終了
2022/06/09 23:09:01 [info] 処理開始
2022/06/09 23:09:01 [info] 処理終了
2022/06/09 23:10:01 [info] 処理開始
2022/06/09 23:10:01 [info] 処理終了

[root@almalinux ~]# ps -ef| grep "telegraf --config http://192.168.1.121:8086/api/v2/telegrafs/097deed20e85f000" | grep -v grep
root        3170       1  0 23:07 ?        00:00:00 telegraf --config http://192.168.1.121:8086/api/v2/telegrafs/097deed20e85f000

最後に

最後ごり押しだったけど、とりあえずTelegraf監視は出来た。次はプラグイン周りかGrafanaを紹介しようと思う。
InfluxDBとTelegrafを触った感じ、従来のOSS監視システムに比べて、かなり簡単に構築出来たのが好印象。テクノロジーの進化恐るべし。
強いて懸念点を言うなら、セキュリティ対策。Apache構築して、そっちで対策立てつつ、HTTPプロキシ通す形にするのがベストか?