Zabbixを使ってサーバ証明書の有効期限を監視してアラート出してみた

こんにちは鶴田です。

今回はzabbixをつかってサーバ証明書の監視が、思ったよりも簡単にできたので紹介したいと思います。

証明書の有効期限を出力するスクリプトを作成

証明書の情報は openssl s_client で取得して、出力を整形/計算して証明書の残り期限を出力させるスクリプトを用意します。

ssl_cert_days.sh

DOMAIN=$1
TODAY=$(date "+%Y%m%d")
PREVALIDDAY=$(echo | openssl s_client -connect $DOMAIN:443 -servername $DOMAIN 2>/dev/null | openssl x509 -noout -enddate | awk  -F '=' '{print $2}')
expr \( `date -d"$PREVALIDDAY" +%s` - `date -d"$TODAY" +%s` \) / 86400

スクリプト配置

Zabbixエージェント側の、サーバのZabbixエージェント設定ファイルのディレクトリに、スクリプトを配置する。

また、Zabbixユーザで実行できるよう、スクリプトの権限と所有者を変更しておく。

chmod 755 /etc/zabbix/ssl_cert_days.sh
chown zabbix:zabbix /etc/zabbix/ssl_cert_days.sh

Zabbixエージェント設定ファイルの修正

/etc/zabbix/zabbix_agentd.conf

UserParameter=cert_expire_check[*],/etc/zabbix/ssl_cert_days.sh $1

Zabbixエージェント再起動

systemcctl restart zabbix-agent

アイテムの取得

取得したいドメインをキーの値に設定する

 

トリガーの設定

ここでは10日前に設定する。

 

まとめ

思ったよりも簡単に監視することができました。

自動更新できるものは監視しなくても大丈夫だと思いますが、自動更新できないものをチックするのに便利です。

一度サーバーにスクリプトを配置してしまえば、増えても問題なしです。