ZabbixでSSL証明書期限チェック

zabbixは初期状態でhttps系の監視が微妙なため、証明書期限の監視設定などを行ってみたいと思います。

私が利用しているZabbixは2.2系になります。

SSL証明書期限チェック設定

今回は監視用のシェルを配置し、それをzabbixから有効にするという流れで設定を行います。

シェル配置フォルダ設定

Zabbix内で利用するshellを配置するフォルダを設定していきます。

root@raspberrypi:~# mkdir /etc/zabbix/externalscripts  
root@raspberrypi:~# vi /etc/zabbix/zabbix_server.conf  
root@raspberrypi:~# diff -u /etc/zabbix/zabbix_server.conf.org /etc/zabbix/zabbix_server.conf  
--- /etc/zabbix/zabbix_server.conf.org  2015-10-26 01:02:41.151018462 +0900  
+++ /etc/zabbix/zabbix_server.conf  2015-11-21 17:34:48.699559203 +0900  
...  
@@ -455,6 +456,7 @@  
 # Mandatory: no  
 # Default:  
 # ExternalScripts=${datadir}/zabbix/externalscripts  
+ExternalScripts=/etc/zabbix/externalscripts  
  
root@raspberrypi:~# systemctl restart zabbix-server  

ExternalScripts用のフォルダを作成して、そこを指定していますね。
もともとのコメントでは何か変数が埋め込まれているのですが、その変数がどこに記述されているのかよくわからなかったのでベタで記述しました。

監視時利用シェルを取得

おそらくどこか海外の方が作成してくれているシェルを拝借していきます。

root@raspberrypi:~# cd /etc/zabbix/externalscripts  
root@raspberrypi:/etc/zabbix/externalscripts# wget http://www.pixelbeat.org/scripts/timeout  
root@raspberrypi:/etc/zabbix/externalscripts# wget http://prefetch.net/code/ssl-cert-check  

シェルはあまり強くないのでちゃんと読んでいないのですがtimeoutスクリプトでは、実行したコマンドが無限ループしてしまったりwaitしてしまったときにjobをkillするっぽいですね。
ssl-cert-checkスクリプトではsslの状態をチェックしているのですかね。

監視用のシェルを作成
先ほど取得した2つのシェルを利用して、zabbix用のシェルを作成します。
作成しますといいますが、既に作成してくれている方がいるのでそれを利用しました。

nekoruri/ssl-cert-check.sh
こちらのリンク先にあるシェルをサーバに配置しましょう。
私はviでコピーしちゃいました。

root@raspberrypi:/etc/zabbix/externalscripts# vi ssl-cert-check.sh  
root@raspberrypi:/etc/zabbix/externalscripts# chmod 755 *  

また最後に取得したシェルの権限を変更しています。
私は面倒だったので755としていますが、本当は以下の方がよいかと思われます。
あってるか検証はしていません。

chown www-data:www-data *  
chmod 700 *  

ここまででファイル作成は完了です。

Zabbix管理画面から設定

こちらについては補充.infoさんの記事を参考にして行いました。

画面が少し違いますが、だいたい同じです。
zabbix管理画面のメニューから[設定] -> [ホスト]と遷移し、監視を行いたいホストを選択。
その後、ホストの管理画面にあるタブから[アイテム]のリンクを選択し、[アイテムの作成]からアイテムを作成します。

一応設定を行った画面を貼ります。
zabbix_証明書アイテム設定

これにて完了です。

あとがき

一応忘れないように、個人のredmineにも期限は登録しているのですが監視させるのが一番安心ですよね。
ドメインの期限についてもできたらいいなぁと思うのですが、それは果たしてできるのでしょうか。