アイテムキーsystem.run のコマンド部分の記述について
system.run を使用する時、コマンドをフルパスで書かないと値が取れない場合があります。
OS:サーバ/エージェントともにfreeBSD 12.0
zabbix server: 4.2.1
zabbix agent: 4.2.1
監視対象サーバ上のzabbix_agentd実行ユーザの環境変数PATHでパスを通しておけば
コマンドだけでいいと思っていたのですがそうではないということでしょうか。
具体的にはzabbix share で公開されているchrony accuracy Template Japaneseテンプレートの
system.run[chronyc sources] がエラーになってしまいます。
# zabbix_get -s hogehoge -k "system.run[chronyc sources]"
sh: chronyc: not found
chronyc コマンドは/usr/local/bin に存在していてrootもzabbixも環境変数PATHに含まれています。
いっぽう /bin に存在するlsコマンドは値が取れました。
# zabbix_get -s hogehoge -k "system.run[ls -l /]"
total 229
-r--r--r-- 1 root wheel 6177 Dec 15 10:02 COPYRIGHT
(略)
現状ホストマクロを使用してフルパスになるようにしていますが今ひとつ不格好なので他の方法がないかご教示いただけないでしょうか。
TNK - 投稿数: 4671
ターミナルでログインした時に読み込まれる設定ファイルとZabbix
エージェント経由でsystem.run[]などで読み込まれる設定ファイル
は異なります。
ターミナルでログインした時にのみ読み込まれる設定ファイル内に
PATH変数を設定しても、ZabbixサーバーやZabbixエージェントから
呼び出すときには反映されない場合があります。
FreeBSDの環境が手元にないのですぐに確認できないので、使用さ
れているOSやシェルに合わせて、ログインシェル以外でも読み込ま
れる設定ファイルに記述するか、Zabbixエージェントを起動すると
きの環境変数として設定するようにしてみてください。
YSTM001 - 投稿数: 6
ご指摘の通り、エージェント起動時の環境変数に /usr/local/bin が含まれていないことが原因でした。
起動スクリプトを編集することでテンプレートに手を加えることなく監視アイテムの値が取得できるようになりました。
ご教示ありがとうございました。