2. 監視アイテムの追加 - 外部チェック
監視対象からデータを取得するには、SNMPやZabbixAgentで対応できるケースが多いと思います。
最近は、WebAPIでデータを取得するインフラや、アプリケーションが増えて得いるので、そこからデータを取得するために、外部スクリプトを使った監視が必要になります。
外部スクリプトは、依存アイテムを使った効率的なデータの取得や、独自にディスカバリーデータの生成、計算アイテムでは対応できないデータの複雑な編集・演算などにも使える大変便利な機能です。
今回は、外部スクリプトの一番基本的な使い方に絞って説明し、応用的な使い方はまた別途紹介させていただきます。
スクリプトの作成
まずはじめに、スクリプトを記述ファイルを作成します。内容は、dateコマンドでUnixtimeを取得するだけの単純な処理です(監視対象の時刻と比較するために使うケースがあります)。
このファイルをホームディレクトリに作成します。
$ cd ~ $ vi currentdate.sh #!/bin/bash date +%s
ファイルに実行権を付与し、オーナーをzabbixに変更します。
$ chmod 0755 currentdate.sh $ sudo chown zabbix:zabbix currentdate.sh
スクリプトを実行し、値が返ってくることを確認します。
$ ./cdate.sh 1517818298
作成したスクリプトをZabbix外部スクリプト実行用のディレクトリにコピーします。 外部スクリプト用のディレクトリは、zabbix_server.confファイルに記載されています。
zabbix_server.conf
ファイルのコピー
$ sudo cp -pv currentdate.sh /usr/lib/zabbix/externalscripts/ 'currentdate.sh' -> '/usr/lib/zabbix/externalscripts/currentdate.sh'
念のため、zabbixユーザで実行可能なことを確認します。
$ sudo -u zabbix /usr/lib/zabbix/externalscripts/currentdate.sh 1517821314
ここまでで、スクリプトの作成と配置は完了です。外部スクリプトでうまく値が取得できない場合、以下の2つのケースが原因になっていることが結構多いと思います。
Zabbixユーザへの実行権限付与と、Zabbixユーザでの動作確認を、必ず事前に行うようにしましょう。
監視データの設定
その他の設定は、他の監視タイプと同じです。
実行結果
指定した間隔で値が取得できています。
Web経由での値の取得
外部スクリプトは、WebAPIを使って外部からデータを取得するのにも使用できます。 以下の例は、米国のFRED(セントルイス連邦準備銀行)から日経平均株価を取得する処理です。
$ cat /usr/lib/zabbix/externalscripts/nikkei225.sh #!/bin/bash curl -s https://fred.stlouisfed.org/series/NIKKEI225/downloaddata/NIKKEI225.csv | tail -1 | awk -F, '{print $2}'
監視アイテム設定
実行結果