LoginSignup
19
20

More than 5 years have passed since last update.

ZabbixでSSL証明書の有効期限を監視する

Last updated at Posted at 2015-07-11

zabbix-agentでsslの証明書の有効期限を監視するため、
UserParameterに残り日数を出力するコマンドを書きました。

2015/10/22 更新

UserParameter に -servername $1 を追加しました。
ZabbixでSSL証明書の有効期限監視(1つのサーバーに複数のホストがあるとき)

Zabbixのアイテム設定

タイプ: Zabbixエージェント
キー: cert_expire_check[host,port,timeout]
データ型: 数値(整数)

host: 接続先ホスト名
port: 接続先ポート名
timeout: opensslコマンドで接続する時のタイムアウト秒
※3項目とも設定必須

zabbix-agentd.confへの設定追加

zabbix-agentd.conf
Timeout=10
UserParameter=cert_expire_check[*],export UTIME=$(date +%s); expr $(( $(date --date "$(timeout $3 openssl s_client -connect $1:$2 -servername $1 < /dev/null 2>/dev/null| openssl x509 -text 2>/dev/null | awk -v UTIME=$UTIME '/Not After :/{if($$0~/N/){print $$4,$$5,$$6,$$7,$$8}else{print "@"UTIME}}')" +%s) - $UTIME )) / 86400

zabbix_getでテスト

zabbix_get
正常系
$ /usr/local/zabbix/bin/zabbix_get -s localhost -k cert_expire_check[ma3ki.net,443,5]
14
$ /usr/local/zabbix/bin/zabbix_get -s localhost -k cert_expire_check[ma3ki.net,465,5]
14
$ /usr/local/zabbix/bin/zabbix_get -s localhost -k cert_expire_check[mail.yahoo.co.jp,443,5]
129

接続できない場合
$ /usr/local/zabbix/bin/zabbix_get -s localhost -k cert_expire_check[ma3ki.net,80,5]
0

接続タイムアウト(zabbix-agentのタイムアウトに先に引っかかった場合)
# /usr/local/zabbix/bin/zabbix_get -s localhost -k cert_expire_check[yahoo.co.jp,443,10]
ZBX_NOTSUPPORTED: Timeout while executing a shell script.

接続タイムアウト(5秒以内に接続先の応答がない場合)
# /usr/local/zabbix/bin/zabbix_get -s localhost -k cert_expire_check[yahoo.co.jp,443,5]
0

エラーは0を返します。
19
20
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
20