InfluxDB+Telegraf検証
はじめに
オンプレ環境の監視を導入したいとの要望があった。監視にコレと言ったこだわりは無いようだったので、思い切って、今まで触れていなかった監視システムに挑戦してみることに。
PrometheusかTelegrafかで悩んだけど、そこまでスケールの大きいことをする予定は無さそうだし、Telegrafに挑戦してみようかと思う。Prometheusは別の機会に。
最終目標はGrafanaでの統合監視。これは次回やる。今回はTelegrafで収集したデータが、InfluxDBコンソール上で確認出来るところまでやろうと思う。
…そんな感じでざっくりスタート(毎回このくらい気楽に仕事したいわぁ…)。
検証環境
- 基盤:VirtualBox 6.1
- OS:AlmaLinux 8.5
- MW:InfluxDB 2.2.0、Telegraf 1.22.4
- クライアント:TeraTerm、GoogleChrome
①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