こんにちは、SCSKの坂木です。
「標準の監視アイテムだけでは取得できない、独自の情報を収集したい…」
「特定のスクリプトを実行した結果をZabbixで監視したい…」
そんな風に思ったことはありませんか?
そのお悩み、Zabbixエージェントの機能 UserParameter を使えば解決できます!
この記事では、UserParameterの基本的な設定方法を、初心者の方にも分かりやすくステップバイステップで解説していきます。
※この記事では、監視対象のホストにZabbixエージェントがすでにインストールされ、Zabbixサーバと基本的な通信が確立されていることを前提として解説を進めます。
UserParameterについて
UserParameterは、Zabbixエージェントで標準提供されていない、ユーザー独自のカスタムアイテムキーを定義するための機能です。
監視対象ホストのエージェント設定ファイルに、任意の「キー名」と、そのキーが呼び出された時に実行される「OSコマンドやスクリプト」を紐付けて定義します。
system.runとの比較
Zabbixでスクリプトの実行結果を監視ができる機能には、UserParameterの他にsystem.runがあります。
どちらも任意のスクリプトを実行できる点では同じですが、下表の相違点があります。
| 項目 | UserParameter | system.run |
| 実行スクリプトの定義場所 | Zabbixエージェントの設定ファイル | ZabbixのWeb画面(アイテムのキー) |
| セキュリティ | 設定ファイルで許可されたスクリプト/コマンドしか実行できない | 設定によっては任意のスクリプト/コマンドを実行できてしまう |
| 設定のしやすさ | 設定ファイルとZabbixインターフェースの両方設定が必要 | Zabbixインタフェースの設定のみ(ワイルドカードを用いない場合は設定ファイルも変更が必要) |
設定ファイルの編集
UserParameterでは、Zabbixエージェントの設定ファイルにスクリプトの実行コマンドを記載します。
監視対象ホストにSSHなどでログインし、Zabbixエージェントの設定ファイル(zabbix_agentd.conf)を開きます。
# vi /etc/zabbix/zabbix_agentd.conf
ファイルを開いて、UserParameterに関する設定項目を探してください。
### Option: UserParameter # User-defined parameter to monitor. There can be several user-defined parameters. # Format: UserParameter=<key>,<shell command> # See 'zabbix_agentd' directory for examples. # # Mandatory: no # Default: # UserParameter=
UserParameterの書式は以下の通りです。この書式に従って設定ファイルに追記していきます。
UserParameter=<key>,<command>
| 項目 | 値 |
| key | Zabbixインタフェースでアイテムを作成する際に指定する、任意の名前のアイテムキー |
| command | 上記のキーが呼び出されたときに、Zabbixエージェントが実行するコマンドやスクリプト |
今回は2つのUserParameterを作成します。
こちらのように設定ファイルに記載します。複数のUserParameterを定義したい場合は、1行に1つずつ記述していきます。
### Option: UserParameter # User-defined parameter to monitor. There can be several user-defined parameters. # Format: UserParameter=<key>,<shell command> # See 'zabbix_agentd' directory for examples. # # Mandatory: no # Default: # UserParameter= UserParameter=samplekey01,/etc/zabbix/work/get_security_updates.sh #記載した箇所(Case1) UserParameter=samplekey02[*],/etc/zabbix/work/search_log.sh "$1" "$2" #記載した箇所(Case2)
記載したUserParameterは以下の設定としています。
Case1:引数のないスクリプトを実行するパターン
| 項目 | 値 |
| key | samplekey01 |
| command | /etc/zabbix/work/get_security_updates.sh |
▼実行スクリプト:適用可能なセキュリティアップデートの件数をカウント
# cat /etc/zabbix/work/get_security_updates.sh #!/bin/bash dnf updateinfo list sec -q | wc -l
Case2:引数を使って1つのUserParameter定義を使い回すパターン
| 項目 | 値 |
| key | samplekey02[*] |
| command | /etc/zabbix/work/search_log.sh “$1” “$2” |
keyの最後に[*]をつけると、このキーがcommand後の””内の引数を受け入れる設定となります。これにより、Zabbixインタフェースのアイテム設定画面から、監視したい対象のパラメータを自由に渡すことが可能になります。
commandで使われている$1と$2は、Zabbixインタフェースのアイテムのキーにて定義される、引数のプレースホルダーです。
$1にはキーで指定された 1番目の引数 が、$2には、キーで指定された 2番目の引数 が入ります。
▼実行スクリプト:指定されたログファイル(引数1)から、指定されたキーワード(引数2)が含まれる行数をカウント
# cat /etc/zabbix/work/search_log.sh #!/bin/bash if [ ! -f "$1" ]; then echo 0 exit 0 fi grep -c "$2" "$1"
実行ファイルの権限変更
UserParameterは、zabbixユーザ権限で実行されます。
そのため、スクリプトファイルに対してzabbixユーザが実行できるパーミッションを付与する必要があります。
スクリプトファイルに実行権限を付与します。
# chmod +x /etc/zabbix/work/get_security_updates.sh # chmod +x /etc/zabbix/work/search_log.sh
zabbixユーザが実行できるファイルになっていることを確認します。
# ll -rwxr-xr-x. 1 root root 48 Oct 24 01:21 get_security_updates.sh -rwxr-xr-x. 1 root root 242 Oct 28 07:44 search_log.sh
以上で、zabbixエージェント側での設定は完了です。
Zabbixインタフェースでのアイテム設定
続いて、ZabbixサーバのインタフェースからUserParameterのアイテムを作成していきます。
[データ収集] > [ホスト] > (対象ホストの) [アイテム] と進み、[アイテムの作成] をクリックします。
以下の項目を設定します。
Case1:引数のないスクリプトを実行するパターン
| 項目 | 値 |
| タイプ | Zabbixエージェント |
| キー | samplekey01 (zabbix_agentd.confで記載したアイテムキー) |
Case2:引数を使って1つのUserParameter定義を使い回すパターン
| 項目 | 値 |
| タイプ | Zabbixエージェント |
| キー | samplekey02[/var/log/work/testlog,zabbix] (引数はキー名に続けて [ ] 内に具体的な値をカンマ区切りで指定する。 $1に”/var/log/work/testlog”を、S2に”zabbix”を渡す) |
$1で指定した/var/log/work/testlogは以下の通りです。今回は$2で”zabbix”を指定しているため、”zabbix”の個数である3が出力されます。
# cat /var/log/work/testlog error test test zabbix zabbix zabbix
設定が完了したら、アイテムが正しくデータを取得できているか確認しましょう。
[監視データ] > [最新データ]を開き、設定したアイテムの値が定期的に更新されていることを確認してください。
以上で設定は完了です。
まとめ
本記事では、Zabbixの監視を拡張するUserParameterを使った設定方法について解説しました。
UserParameterは、Zabbixインタフェースのアイテム設定から引数を変えるだけで、同じ仕組みを横展開できるのも強みです。
この記事を参考に、ぜひUserParameterを試してみてください!
▼ Zabbixに関するおすすめ記事





