Категории

не помню но чет полезное в переписке есть про добавление информации о дате сертификата в забиксе

2025-05-30 14:56:16 | Linux

🚨 Проблема

Как мониторить срок истечения SSL-сертификата Let's Encrypt в Zabbix, чтобы получать уведомления заранее?

🔧 Решение

Создаем кастомный скрипт для проверки даты и интегрируем его через Zabbix Agent.

⏱️ Время настройки: 15 минут | Уровень: 🟢 Начинающий

📌 Шаг 1: Создаем скрипт проверки

На сервере с сертификатом выполняем:

sudo nano /usr/local/bin/check_cert_expiry.sh

Содержимое скрипта:

#!/bin/bash
CERT_PATH="/etc/letsencrypt/live/ВАШ_ДОМЕН/fullchain.pem"

if [ -f "$CERT_PATH" ]; then
  openssl x509 -in "$CERT_PATH" -text -noout | grep "Not After" | cut -d ":" -f2- | xargs
else
  echo "Certificate not found"
fi

Делаем исполняемым:

sudo chmod +x /usr/local/bin/check_cert_expiry.sh
sudo chown zabbix:zabbix /usr/local/bin/check_cert_expiry.sh

📌 Шаг 2: Настраиваем Zabbix Agent

Редактируем конфиг агента:

sudo nano /etc/zabbix/zabbix_agentd.conf

Добавляем в конец:

UserParameter=ssl.cert.expiry,/usr/local/bin/check_cert_expiry.sh

Перезапускаем агент:

sudo systemctl restart zabbix-agent

📌 Шаг 3: Добавляем Item в Zabbix

  1. Идем в Configuration → Hosts
  2. Выбираем нужный хост → ItemsCreate item
  3. Заполняем:
    • Name: SSL Certificate Expiry
    • Type: Zabbix agent
    • Key: ssl.cert.expiry
    • Type of information: Text
    • Update interval: 1d
Пример настройки Item

📌 Шаг 4: Создаем триггер для алертов

  1. Идем в Configuration → Hosts
  2. Выбираем хост → TriggersCreate trigger
  3. Настраиваем:
    Name: SSL Certificate expires soon
    Expression: {host:ssl.cert.expiry.strptime("%b %d %H:%M:%S %Y GMT")-now()}<2592000
    Severity: Warning

    Это будет срабатывать за 30 дней до истечения.

🔍 Проверка работы

Выполните вручную на сервере Zabbix:

zabbix_get -s IP_АГЕНТА -k ssl.cert.expiry

Должны получить дату в формате: Aug 15 23:59:59 2025 GMT

💡 Профессиональные советы

Для нескольких доменов: Модифицируйте скрипт, чтобы он принимал домен как параметр:
UserParameter=ssl.cert.expiry[*],/usr/local/bin/check_cert_expiry.sh $1
Автоматическое обновление: Добавьте в crontab сервера:
0 3 * * * certbot renew --quiet --post-hook "systemctl reload nginx"

Комментарии

Пока нет комментариев. Будьте первым!

Оставить комментарий

← Назад к списку статей