【Zabbix】UserParameterでスクリプト実行結果を監視する方法

こんにちは、SCSKの坂木です。

「標準の監視アイテムだけでは取得できない、独自の情報を収集したい…」
「特定のスクリプトを実行した結果をZabbixで監視したい…」

そんな風に思ったことはありませんか?

そのお悩み、Zabbixエージェントの機能 UserParameter を使えば解決できます!

 

この記事では、UserParameterの基本的な設定方法を、初心者の方にも分かりやすくステップバイステップで解説していきます。

※この記事では、監視対象のホストにZabbixエージェントがすでにインストールされ、Zabbixサーバと基本的な通信が確立されていることを前提として解説を進めます。

 

UserParameterについて

UserParameterは、Zabbixエージェントで標準提供されていない、ユーザー独自のカスタムアイテムキーを定義するための機能です。

監視対象ホストのエージェント設定ファイルに、任意の「キー名」と、そのキーが呼び出された時に実行される「OSコマンドやスクリプト」を紐付けて定義します。

5 User parameters

 

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に関するおすすめ記事

【Zabbix】トリガーアクションでスクリプトを実行する方法
本ブログではZabbixのトリガーアクションで障害対応を自動化する方法を解説します。 今回はトリガーアクションの中でもスクリプトの実行方法について説明します。
【Zabbix】system.runでスクリプト実行結果を監視する方法
Zabbixのsystem.run設定方法をステップバイステップで解説。標準アイテムにないカスタム監視を実現するため、zabbix_agentd.confの修正、安全なAllowKeyの使い方、スクリプトの権限設定までを網羅。初心者でも安心のガイドです。
タイトルとURLをコピーしました