誰でも ZABBIX

Zabbixの使い方、役に立つ情報、等々

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
f:id:Unam:20180205175454p:plain

ファイルのコピー

$ 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つのケースが原因になっていることが結構多いと思います。

  1. スクリプトにZabbixの実行権限がない
  2. スクリプトが想定外の値を返す(Zabbixユーザ環境で正しく動作しない)

Zabbixユーザへの実行権限付与と、Zabbixユーザでの動作確認を、必ず事前に行うようにしましょう。

監視データの設定

タイプに外部スクリプトを、キーにスクリプトを指定します。 f:id:Unam:20180205181131p:plain

その他の設定は、他の監視タイプと同じです。

実行結果

指定した間隔で値が取得できています。

f:id:Unam:20180205181809p:plain

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}'

監視アイテム設定

f:id:Unam:20180205182717p:plain

実行結果

f:id:Unam:20180205182847p:plain