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


Zabbixサーバにスクリプトを配置してSSL証明書の有効期限を取得します。

スクリプトの配置

SSL有効期限取得するスクリプト (ssl-cert-check.sh)をZabbixサーバに配置します。通常は/usr/lib/zabbix/externalscripts以下に配置すると思いますが念のため確認します。

/etc/zabbix/zabbix_server.conf
ExternalScripts=/usr/lib/zabbix/externalscripts
ssl-cert-check.sh
#! /bin/sh

SERVER=$1
PORT=$2
TIMEOUT=25
/usr/lib/zabbix/externalscripts/timeout $TIMEOUT /usr/lib/zabbix/externalscripts/ssl-cert-check -s $SERVER -p $PORT -n | sed 's/  */ /g' | cut -f6 -d" "

その他にssl-cert-checktimeoutも同じ場所に配置します。以下のURLから持ってきます。

ssl-cert-checkは一部修正します。

ssl-cert-check
<             ${PRINTF} "%-47s %-12s %-12s %-4s %-30s\n" "$1:$2" "$3" "$MIN_DATE" \|days="$5" 
---
>             ${PRINTF} "%-47s %-12s %-12s %-4s %-30s\n" "$1:$2" "$3" "$MIN_DATE" "$5" 

試しに実行してみます。

[root@zabbix externalscripts]# ./ssl-cert-check.sh www.google.co.jp 443
71

作成したスクリプトに実行権限付けるのを忘れずに。

テンプレートの作成

Zabbixの「設定」->「テンプレート」でテンプレートの一覧が表示され、右上のテンプレートの作成から作成できます。

テンプレート名と適切なグループを設定し、追加します。

アイテム

SSL証明書有効期限を監視するためのアイテムを作成します。作成したテンプレートのアイテムを選択しアイテムの作成から作成します。
下記以外の設定は状況に応じて設定してください。

  • 名前:(ご自由に)
  • タイプ:外部チェック
  • キー:ssl-cert-check.sh["{HOST.CONN}","443"]

トリガー

期限切れが近づいたらアラートがなるように設定します。同じようにテンプレートのトリガーを選択しトリガーの作成から作成します。
条件式は一例ですのでその他の設定と合わせて状況に応じて設定してください。

  • 名前:(ご自由に)
  • 条件式 (例):{SSL cert check:ssl-cert-check.sh["{HOST.CONN}","443"].last(0)}<31

グラフ

必要であれば設定します。

複数のSSL証明書が設定されている場合

サーバによっては複数のSSL証明書が設定されている場合があると思います。その場合は、テンプレートのアイテムを「複製」して、ssl-cert-check.sh["{HOST.CONN}","443"]{HOST.CONN}を直に指定した設定を追加することで取得しています。ポートが443以外であればそれも指定します。トリガーなども「複製」して設定すると良いと思います。

SSL証明書のみ監視したい場合

業務上稀にサーバは管理外だけどSSL証明書は管理している場合があります。この場合ホストごとの設定追加はできないので、現状はZabbixサーバにアイテムを追加しています。

「設定」->「ホスト」からZabbixサーバを選択します。アイテムやトリガーの設定方法は、複数のSSL証明書が設定されている場合と同じです。

参考