📝

Zabbix 7.2でGPU監視を有効化|7.0からのアップグレードとnvmlエラー対策記録
June 14, 2025June 13, 2025
#Zabbix#Develop

はじめに

Machine Learning の流行でサーバーでも GPU を使う機会が増えてきたのではないだろうか。

そんな中ついに Zabbix7.2 から公式の GPU 監視機能が追加された。

しかし、実際に試してみると、nvml ライブラリ関連のトラブルに直面した……

この記事では Zabbix 7.0 からのアップデート手順と、GPU 監視がうまく動かない原因とその解決策を詳しく解説する。

環境

  • Zabbix サーバー: 7.0.13
    • LXC コンテナで実行
    • Ubuntu 24.04
  • Zabbix Agent2
    • ホストサーバー
    • RTX3060
    • Ubuntu 24.04

Zabbix 7.0 から 7.2 へのサーバーアップグレード手順

Zabbix サーバーをアップデートする。

apt で入れているのでレポジトリを変更して update をかける。

zabbix サーバーに SSH でログインし、root ユーザーで実行する。

https://www.zabbix.com/jp/download?zabbix=7.2&os_distribution=ubuntu&os_version=24.04&components=server_frontend_agent&db=pgsql&ws=nginx

$ sudo -s
wget https://repo.zabbix.com/zabbix/7.2/release/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.2+ubuntu24.04_all.deb
dpkg -i zabbix-release_latest_7.2+ubuntu24.04_all.deb
apt update

この状態でパッケージを更新すれば Zabbix のバージョンが上がる。

このコンテナは zabbix しか使っていないので全てのパッケージをアップデートした。

特に本番環境で実行する際は依存関係などを確認して必要なパッケージだけアップデートすること。

apt upgrade

Zabbix7.2 から Frontend のソースコードの位置が変更されており、うまく起動しなかったため修正した。

Zabbix の WEBUI 上に修正手順が表示される。

sed -i s:/usr/share/zabbix:/usr/share/zabbix/ui:g
systemctl restart nginx
systemctl restart zabbix-server

データベースが自動的にアップデートされて通常利用できるようになる。

Zabbix 7.2 に GPU 監視テンプレートを追加する方法

アップデートすれば監視できると思いきや、監視項目が増えなかった。

GPU 用の監視テンプレートが入っていないようだったのでインストールした。

※もしかしたら 7.0 からアップデートしたことが原因かもしれない。

この yaml をダウンロードして Zabbix の WebUI からインポートした。

TOP -> Data collection -> Templates -> Import

しかし監視データが取れなかった。

Unknown metric nvml.device.get

Zabbix-Agent をアップデートする

監視先の Zabbix-agent をアップデートした。

アップデート方法は zabbix サーバーとほぼ変わらず。

監視先であるホストサーバーで実行した。

wget https://repo.zabbix.com/zabbix/7.2/release/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.2+ubuntu24.04_all.deb
dpkg -i zabbix-release_latest_7.2+ubuntu24.04_all.deb
apt update
apt upgrade zabbix-agent

この状態でも監視データがとれず調べていると、Zabbix-agent2 のプラグインをインストールする必要があることに気づいた。

apt で検索してみるとzabbix-agent2-plugin-nvidia-gpuがヒットした。

apt search agent2
ソート中... 完了
全文検索... 完了
zabbix-agent2/不明,now 1:7.2.7-1+ubuntu24.04 amd64 [インストール済み]
  Zabbix network monitoring solution - agent

zabbix-agent2-dbgsym/不明 1:7.2.7-1+ubuntu24.04 amd64
  debug symbols for zabbix-agent2

zabbix-agent2-plugin-ember-plus/不明 1:7.2.7-1+ubuntu24.04 amd64
  Zabbix Agent2 plugin for monitoring Ember Plus installations

zabbix-agent2-plugin-mongodb/不明 1:7.2.7-1+ubuntu24.04 amd64
  Zabbix Agent2 plugin for monitoring MongoDB installations

zabbix-agent2-plugin-mssql/不明 1:7.2.7-1+ubuntu24.04 amd64
  Zabbix Agent2 plugin for monitoring MSSQL installations

zabbix-agent2-plugin-nvidia-gpu/不明,now 1:7.2.7-1+ubuntu24.04 amd64 [インストール済み]
  Zabbix Agent2 plugin for monitoring a broad range of NVIDIA GPU metrics

zabbix-agent2-plugin-postgresql/不明 1:7.2.7-1+ubuntu24.04 amd64
  Zabbix Agent2 plugin for monitoring PostgreSQL installations

apt install zabbix-agent2-plugin-nvidia-gpu

このプラグインインストール後に Zabbix-Agent が起動しなくなった。

 6月 14 02:14:04 host zabbix_agent2[2922478]: zabbix_agent2 [2922478]: ERROR: Cannot register plugins: failed to register metrics of plugin "NVIDIA": failed plugin registration: Failed to validate plugin: Failed to validate nvml runner: faile>
 6月 14 02:14:04 host systemd[1]: zabbix-agent2.service: Main process exited, code=exited, status=1/FAILURE

Zabbix Agent2 が nvml ライブラリを読み込めない問題の解決

直接 zabbix-agent2 を実行すると nvml の shared library が読み込めてないことがわかる。

# /usr/sbin/zabbix_agent2 -c /etc/zabbix/zabbix_agent2.conf -f
zabbix_agent2 [2925584]: ERROR: Cannot register plugins: failed to register metrics of plugin "NVIDIA": failed plugin registration: Failed to validate plugin: Failed to validate nvml runner: failed to create new nvml runner: NVML error: NVML Shared Library couldn't be found or loaded.

ライブラリはすでに存在した。

/usr/lib/i386-linux-gnu/libnvidia-ml.so.565.57.01
/usr/lib/i386-linux-gnu/libnvidia-ml.so.1
/usr/lib/x86_64-linux-gnu/yelp/libnvidia-ml.so.565.57.01
/usr/lib/x86_64-linux-gnu/yelp/libnvidia-ml.so.1
/usr/lib/x86_64-linux-gnu/libnvidia-ml.so.565.57.01
/usr/lib/x86_64-linux-gnu/libnvidia-ml.so.1
/usr/lib/libnvidia-ml.so.1

一応libにシンボリックリンクを貼ってみたが起動せず。

Zabbix のフォーラムを彷徨うも、答えを見つけられず……

ソースコードを読んで、該当箇所を確認した。

該当箇所は 716 行目

func loadLibrary() (unsafe.Pointer, error) {
	libName := C.CString("libnvidia-ml.so")
	defer C.free(unsafe.Pointer(libName)) //nolint:nlreturn

	handle := C.dlopen(libName, C.RTLD_LAZY|C.RTLD_GLOBAL)
	if handle == nil {
		return nil, ErrLibraryNotFound
	}

読み込みファイル名がlibnvidia-ml.soになっていたのでシンボリックリンクを作った。

ln -s /usr/lib/x86_64-linux-gnu/libnvidia-ml.so.1 /usr/lib/libnvidia-ml.so

これで起動した。

systemctl status  zabbix-agent2
● zabbix-agent2.service - Zabbix Agent 2
     Loaded: loaded (/usr/lib/systemd/system/zabbix-agent2.service; enabled; preset: enabled)
     Active: active (running) since Sat 2025-06-14 03:49:52 JST; 9s ago
   Main PID: 2949841 (zabbix_agent2)
      Tasks: 22 (limit: 18710)
     Memory: 23.3M (peak: 25.0M)
        CPU: 188ms
     CGroup: /system.slice/zabbix-agent2.service
             ├─2949841 /usr/sbin/zabbix_agent2 -c /etc/zabbix/zabbix_agent2.conf
             └─2949868 /usr/libexec/zabbix/zabbix-agent2-plugin-nvidia-gpu /run/zabbix/agent.plugin.sock false
無事ローレベルディスカバリー(LLD)で GPU が検出されて監視できた。 image-20250614041058385

Zabbix によって GPU がローレベルディスカバリーされ、温度や使用率が正しく取得できていることが確認できる。

まとめ

予想以上にハマった。

当初 zabbix-agent2 のログに何も表示されず、systemd のログを頼りにいじっていた。

共有ライブラリが原因とわかってからは関係ありそうなプログラムを ldd で調べていった。

最終ソースコードを読むことになるとは当初は思ってもみなかった。

Zabbix の GPU の監視は対応して日が浅く文献も少ないので誰かの助けになればよい。

参考

おしまい



sakakinox

Written by sakakinox
Server enginier

Copyright © sakakinox.net 2021-2025.