3. 監視対象ホストのファイル参照
障害が発生した際に、関連するログや設定ファイルの内容をZabbixから確認できるようにしておくと便利です。実際に運用している環境だと、ログインするのにもいろいろ手順が面倒だったりしますし、確認したいファイルの場所がわからないということもありがちです。
ファイルの中身を取得する
ZabbixAgentのvfs.file.contentsを使うと、ファイルの中身をそのまま取得することができます。
以下は、監視先のzabbixエージェントのコンフィグファイルの内容をzabbix_getコマンドで取得する例です。
$ zabbix_get -s 192.168.0.60 -k vfs.file.contents[/etc/zabbix/zabbix_agentd.conf] # This is a configuration file for Zabbix agent daemon (Unix) # To get more information about Zabbix, visit http://www.zabbix.com ############ GENERAL PARAMETERS ################# ### Option: PidFile # Name of PID file. # # Mandatory: no # Default: (以下、略)
この手のデータを定期的に監視データとして保存して置くのはスペースの無駄です。必要なときに、最新のデータを手軽に取得できるようにしておくようにしておきたいです。Zabbixのスクリプト実行の仕組みを使えば、監視データ画面から欲しい情報を簡単に呼び出せるようになります。
スクリプトの登録
先ほどコマンドラインで確認した処理を、Zabbixのスクリプトに登録します。
メニューから、管理→スクリプトを選択します。
スクリプトの作成ボタンを押します。
ここで必要な情報を入力します。
名前は何でもOKです。実行場所(次で実行)は、いつも少し混乱しますが、Zabbixエージェント経由で値をとる場合は、Zabbixサーバーを選択します。
コマンドには、先ほどZabbixサーバで入力したzabbix_getコマンドを入力します。接続先のIPアドレスは、接続先のホストを自動的に入れ替えられるよう{HOST.IP}マクロを指定します。
スクリプトの実行
各ホストへのスクリプト実行ができる画面は、監視データのイベントやマップなど、いくつかあります。ここでは監視データの概要から実行しています。
データを取得したいホストを左クリックすると、コンテキストメニューに先ほど登録したメニューが表示されます。
スクリプトを選択すると、結果が画面に表示されます。
このように簡単に内容を確認できるようになります。複数のホストの設定を確認するのに、sshで都度接続したり、リモートデスクトップでログインするよりも効率的に状況の判断ができます。また、セキュリティという面からも、より安全なやり方でだと思います。
大きいサイズのファイル
vfs.file.contentsで取得できるファイルは、最大64Kbyteです。ログファイルなどを確認したい場合は、これよりサイズが大きいことが多いので、このやり方では参照できないケースが多いと思います。
$ zabbix_get -s 192.168.0.60 -k vfs.file.contents[/var/log/zabbix/zabbix_agentd.log] ZBX_NOTSUPPORTED: File is too large for this check.
そのような場合は、Zabbixエージェントのユーザパラメタで、直近の状態だけを取得するコマンドを登録しておけば、同じようにデータを取得できます。
例:ログファイルから最新の100行分だけ取得するユーザパラメタ
$ cat /etc/zabbix/zabbix_agentd.d/userparameter_test.conf UserParameter=test.tail[*],tail -100 $1
これをスクリプトとして登録します。
これで、ログデータのようにサイズの大きいデータも、最新のデータを必要なときだけ確認できるようになります。