はじめに
Zabbixでサーバ証明書の有効期限を監視して、期限が近づいたらアラートを発砲して証明書の更新作業を行えるように運用をしたいので、アイテムを取得できるように設定してみます。
サーバ構成
Zabbixサーバ
- AWS(EC2)
- CentOS7.9
- Zabbix-Agent5.0
- Zabbix-Server
Webサーバ
- AWS(EC2)
- CentOS7.9
- Zabbix-Agent5.0
- Apache2.4
- mod_ssl
前提条件
- ネットワーク環境(VPC,サブネット,ルートテーブル,セキュリティグループ)が既に構築済みであること
- 各サーバに実装されているソフトウェアおよびミドルウェアは導入済みであること
- opensslで自己証明書を作成していること
- Apacheの設定ファイルに自己証明書の設定が済んでいること
構築してみる
証明書の有効期限を出力するスクリプトを作成
ssl_cert_days.sh
#!/bin/bash
date +"%s" --date="`openssl s_client -connect localhost:443 -servername localhost </dev/null 2>/dev/null | openssl x509 -enddate -noout | cut -d'=' -f2`" | awk '{printf("%d\n",($0-systime())/86400-1/86400+1)}'
Zabbixのホスト作成
ホスト名:任意の名前
グループ:任意のグループ
IPアドレス:プライベートIPアドレス
Zabbixのアイテム作成
名前:任意の名前(わかりやすい名前にする)
タイプ:Zabbixエージェント
キー:cert_expire_check[] (エージェント側のUserParameterと同じキー名にする)
ホストインターフェース:エージェント側のプライベートIPアドレス
データ型:数値(整数)
Zabbixエージェント設定ファイルの修正
/etc/zabbix/zabbix_agentd.conf
UserParameter=cert_expire_check[*],/etc/zabbix/ssl_cert_days.sh
スクリプト配置
Zabbixエージェント側のサーバに上記の設定ファイルで記載したディレクトリにスクリプトを配置する。
また、Zabbixユーザで実行できるよう、スクリプトの権限と所有者を変更しておく。
chmod 755 /etc/zabbix/ssl_cert_days.sh
chown zabbix:zabbix /etc/zabbix/ssl_cert_days.sh
Zabbixエージェント再起動
systemcctl restart zabbix-agent
Zabbixサーバのログ確認
再起動したら、Zabbixサーバ側のログを確認して、アイテム取得のエラーが発生していないか確認する。
tail -F /var/log/zabbix/zabbix_server.log
アイテム取得確認
アイテム値が取得されていることが確認できたら、それを元にトリガーを作成するなりして、後続の作業ができます。