概要
curlのような単純なWebチェックで、Zabbixにリクエストを投げて確認するときに気をつける注意事項。
ZabbixWeb画面での設定方法
- Webシナリオと書いてある所をクリック
シナリオの所では、
- 名前
- 監視間隔
- 試行回数
を決定する。エージェントやHTTPプロキシは、必要であれば設定する。
次に、隣のタブのステップを編集する。
追加を押して実行内容を記載する。
今回は、以下の内容に基づいて設定する。
- 名前
- 任意
- URL
- https:/{HOST.IP}/zabbix/api_jsonrpc.php
- HOST.IPは、今回このホスト自身のインターフェースにZabbixに入るためこの値に設定している。
- POSTデータ
- 今回はRAWデータにして、その中に
{"jsonrpc":"2.0","method":"apiinfo.version","params":{},"id":1}
を追加する。
- 今回はRAWデータにして、その中に
ヘッダー
- 名前:Content-Type
- 値:application/json-rpc
- 要求ステータスコード
- 200
リクエストの文字列を想定するのであれば、要求文字列も記載する。
また、必要であれば認証を追加する。例えば、HTTPSでの認証を行っているのであれば、
- SSLピア検証
- SSLホスト検証
にチェックを入れる。
curl -k ~~~
というような証明書を無視して続行する想定であればチェックをつけない事を推奨する。
APIリクエストを受けるサーバー側での確認項目
APIリクエストを受け付ける際、実際に応答できる設定になっているか否かを確認する必要がある。
今回は、zabbixサーバのAPIを利用するという前提で進める。
まず、httpdのクライアント証明書の制限箇所を確認する。
cat /etc/httpd/conf.d/zabbix.conf
SSLCACertificateFile
などで鍵の設定を行っていた場合、Server側ではクライアント認証で制限をしている。
クライアント認証を無効化するには、以下の記述が記載されているはずである。
SSLVerifyClient none
特定のホストからのクライアント認証を無効化したい場合は、以下のような記述を記載する。
これは、10.2.0.0/16からのリクエストであれば、SSLクライアント認証を無効化するという事である。
<If "%{REMOTE_ADDR} =~ /^10\.2\./">
SSLVerifyClient none
</If>
127.0.0.1を許可するのであれば、以下のとおりである。
<If "%{REMOTE_ADDR} =~ /^127\.0\.0\.1/">
SSLVerifyClient none
</If>
終わったら、httpdを再起動させる。
sudo systemctl restart httpd