こんにちは!濱田です。
札幌は最近急に寒くなってきて冬ももうすぐそこな気がしています。
はじめに
さて今回は久々にzabbixについて書いていこうと思います。
今回はSSL証明書の有効期限をzabbixで監視する方法についてです。
手順としてはagentがインストールされているサーバに証明書の有効期限を取得するスクリプトを仕込んで、
そのスクリプトの結果をzabbixのアイテムとして定義して監視します。
移行で詳細な手順を書いていきます。
※今回の内容はcertbotで取得したLetsEncryptの証明書の有効期限の監視を想定しています。
agent側に有効期限を取得するスクリプトを作成する
まずはじめにzabbix agentがインストールされているサーバの/etc/zabbix配下に
以下のスクリプトを配置します。
下記のスクリプトはSSL証明書の有効期限までの日数を返します。
※スクリプトのファイル名は後の手順で使用しますので控えておきます。
#!/bin/bash
DOMAIN="$1"
CERT_FILE="/etc/letsencrypt/live/$DOMAIN/fullchain.pem"
EXPIRY_DATE=$(sudo openssl x509 -enddate -noout -in "$CERT_FILE" | cut -d= -f2)
EXPIRY_TIMESTAMP=$(date -d "$EXPIRY_DATE" +%s)
CURRENT_TIMESTAMP=$(date +%s)
DAYS_REMAINING=$(( (EXPIRY_TIMESTAMP - CURRENT_TIMESTAMP) / 86400 ))
echo $DAYS_REMAINING
agentのconfファイルのUserParameterに設定を追加する
次にzabbixserver側でアイテムと紐づけるためにzabbix agentのconfファイルにパラメータを追加します。
/etc/zabbix/zabbix配下に格納されているconfファイルのUserParameterに下記を設定します。
UserParameter=cert_expire_check[*],/etc/zabbix/scripts/[配置したスクリプトファイル名] $1`
※「,」の後ろのファイルパスには作成したスクリプトのパスを設定
最後にzabbix agentのサービスを再起動してagent側の対応は完了です。
sudo service zabbix-agent2 restart
zabbix serverにアイテムを追加
次にzabbix serverで作成したスクリプトの結果を監視するためにアイテムを新規追加します。
zabbix ServerのWebインタフェース上から
「データ収集」→「ホスト」→アイテムを追加したいホストの「アイテム」をクリック→「アイテムの作成」をクリックして
アイテムの新規作成画面を開きます。
名前:好きな名前を設定
タイプ:Zabbixエージェント
キー:cert_expire_check[ホストのドメイン名※]
※監視対象の証明書のドメイン名です。
監視間隔:任意の監視間隔を設定
必要な項目が設定できたら追加を押してアイテムを保存します。
追加したアイテムのトリガーを作成
次に先ほどのアイテムの時と同じ要領でWebインタフェース上から
「データ収集」→「ホスト」→アイテムを追加したいホストのトリガーをクリック→「トリガーの作成」をクリックして
トリガーの新規追加画面を表示します。
名前:任意トリガー名を設定
深刻度:任意の深刻度を設定(「警告」くらいが無難?)
条件式:先ほど作成したアイテムを参照して
last(/監視対象のホスト名/cert_expire_check["ドメイン名"]) < xx
のように対象のSSL証明書の有効期限までの日数がxx日より小さく成ったらアラートを上げるような条件式を設定
こちらも必要な項目が設定できたら追加を押してトリガーを保存します。
まとめ
以上の手順でzabbix ServerからagentがインストールされているサーバのSSL証明書の有効期限を監視できます。
思っていたより簡単に証明書の有効期限の監視が実現できたのに驚きました。
スクリプトの結果を既存のアイテム同様監視できる点が良いですよね。
もし同じようなことを実現したい人の助けになれば幸いです。
今回の記事はここまでになります。
次回は何の記事にするかはまだ決めていませんがまたはまったことなど書いて行こうと思っています。
それでは、また!!