Telegraf, InfluxDB, Grafana を使って GPU の情報を閲覧できるようにしました。
以前、Telegraf, InfluxDB, Grafana を使ってサーバーリソースの情報を閲覧できるようにしました。
これを前提としたうえで、今回 GPU の情報も見れるようにしました。
試したグラフィックボードは NVIDIA GeForce RTX 3080 です。
グラフィックドライバーのインストールなどは完了している前提です。
概要
Telegraf の nvidia_smi プラグインを使えば GPU の情報を取得できるようです。
nvidia_smi のプラグインについては以下に説明があります。
上記の記事に書いてありますが、Docker で動作させている Telegraf で GPU の情報を取得するには、以下の2つの方法があるようです。
nvidia/cuda
の Docker イメージをベースに Telegraf をインストールしたカスタムイメージを作成する- Volume のマウントバインディングを使用して nvidia-smi のバイナリを Docker コンテナに注入する
今回は後者でいきます。
Telegraf の設定
telegraf.conf
に以下を追加しました。
[[inputs.nvidia_smi]]
#bin_path = "/usr/bin/nvidia-smi"
inputs.nvidia_smi
を追加するだけでプラグインが有効になるようです。bin_path
は nvidia-smi
のある場所です。
以下のコマンドで調べられます。
$ which nvidia-smi
/usr/bin/nvidia-smi
Linux では通常 /usr/bin/nvidia-smi
にあるそうで、その場合は指定しなくてもよいそうです。
docker-compose の設定
Telegraf を動作させている Docker コンテナから nvidia-smi と GPU にアクセスできるように設定します。
例えば、以下のような感じです。
version: '3.5'
services:
telegraf:
container_name: telegraf
image: telegraf
environment:
- NVIDIA_VISIBLE_DEVICES=all
- NVIDIA_DRIVER_CAPABILITIES=all
deploy:
resources:
reservations:
devices:
- capabilities: [gpu]
volumes:
- ./telegraf.conf:/etc/telegraf/telegraf.conf:ro
- /usr/bin/nvidia-smi:/usr/bin/nvidia-smi:ro
ホストの /usr/bin/nvidia-smi
をコンテナにマウントします。
Docker コンテナでの GPU の使用については以下の記事にも書いているので、参照してください。
Grafana の設定
Docker コンテナを起動したら、Grafana で以下のダッシュボードのテンプレートをインストールします。
これで閲覧できるようになると思ったのですが、Hostname
に None
しか表示されず、グラフに何も表示されない状態でした。
どうもこのテンプレートが Windows を前提としているようですので、ダッシュボードの設定をちょっと修正しました。
ダッシュボードの設定画面を開き Variables を選択します。hostname
の定義を以下のように変更します。
変更前
SHOW TAG VALUES FROM "win_system" WITH KEY = "host"
変更後
SHOW TAG VALUES FROM system WITH KEY=host
これで以下のようにグラフが表示されるようになりました。
他に CPU Usage
と Memory Free
のメーター表示も Windows 前提となっているようなので、必要なら修正してください。
私は CPU やメモリなどは他のダッシュボードで閲覧しており、ここでは GPU の情報だけで十分だったので、そこまで修正しませんでした。