Как можно вообще пропустить дату перевыпуска SSL-сертификата? Пфф, да вообще легко.
Если ты пользуешься certbot, то скорее всего он продляет сертификат автоматически. Но вдруг сломается? Ну или ты забыл при очередном ручном продлении сертификата поставить себе напоминалку.
Короче, нужно настроить мониторинг. В этой статье я покажу как настроить мониторинг SSL сертификатов в Zabbix. А в другой статье я покажу вариант для Prometheus и Grafana. (здесь будет ссылка, когда выйдет вторая статья)
План и схема мониторинга #
План:
- Установить в Zabbix нужный шаблон.
- На любой из хостов, которые у нас уже мониторятся установить Zabbix Agent 2.
Схема мониторинга:
- У нас есть Host в Zabbix-е, к которому прикреплен Template.
- В Host указан адрес реального хоста, с установленным Zabbix Agent 2.
- В Template указан адрес веб-сайта, на котором нужно мониторить SSL сертификат.
- Zabbix Agent 2 с одного из хостов собирает данные об этом сертификате.
Установить Template #
Есть вероятность, что у тебя этот шаблон уже установлен, проверь в списке Configuration — Templates. Он в оригинале называется Website certificate by Zabbix agent 2.
Если нет, то его можно скачать и импортировать вручную. (на некоторых скриншотах у меня шаблон переименован, но поверьте — это он) У меня шаблона не было, потому что я ранее обновлял старую версию Zabbix до новой.
👉 Здесь можно взять ссылку на шаблон для нужной тебе версии.
Теперь идем в Zabbix и импортируем шаблон. Заходим в Configuration - Templates и нажимаем Import.
Там выбираем наш файл, нажимаем Import. Всё.
Иногда после нажатия Import может появиться ошибка
Invalid tag "/zabbix_export/version": unsupported version number.
В таком случае просто в yaml файле шаблона вручную меняем версию на нужную, например - 6.2.
Установка Zabbix Agent 2 #
Установить его можно на любой хост. Именно с него мы будем мониторить наши SSL сертификаты, так что он должен иметь стабильный доступ в интернет.
Для начала хорошо бы выключить старый Zabbix Agent, если он установлен. Я вообще под шумок обновил агенты на всех машинах, заодно во второй версии привезли мониторинг SMART у дисков.
👉 Актуальные и корректные ссылки для установки лучше взять с официального сайта, я лишь приведу ниже пример для Ubuntu 20.04, Zabbix 6.4 на дату выхода статьи:
wget https://repo.zabbix.com/zabbix/6.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.4-1+ubuntu20.04_all.deb
dpkg -i zabbix-release_6.4-1+ubuntu20.04_all.deb
apt update
apt install zabbix-agent2 zabbix-agent2-plugin-*
systemctl restart zabbix-agent2
systemctl enable zabbix-agent2
Добавляем хост для мониторинга #
Возвращаемся в Zabbix и добавляем новый хост Configuration - Hosts - Create new host:
Затем указываем настройки:
- Название хоста любое, но удобнее, если оно будет равно сайту, который мы мониторим
- Линкуем наш Template (шаблон)
- Добавляем наш хост в Host Group (группа хостов)
- Выбираем Add Interface → Agent, указываем адрес (или DNS) хоста с Zabbix Agent 2, откуда мы будем мониторить сайт.
На этом же экране переходим во вкладку Macros, там переходим на вкладку Inherited and host macros, там будут макросы из шаблона. Рядом с макросом {$CERT.WEBSITE.HOSTNAME}
нажимаем Change и вводим в поле наш сайт для мониторинга:
Сохраняем хост и идем в Latest Data для проверки:
Меняем порог срабатывания триггера #
Триггер срабатывает когда срок действия сертификата подходит к концу. Срабатывание триггера основывается на макросе из шаблона. Этот триггер встроен в шаблон.
Как мы можем видеть в меню Templates — Website certificate by Zabbix agent — Triggers наш триггер базируется на некой переменной CERT.EXPIRY.WARN
.
Есть две опции как ее поменять — глобально или специфично для хоста:
Глобальная переменная #
Templates — Website certificate by Zabbix agent — Macros. Таким образом это значение сменится для всех хостов, к которым привязан этот шаблон.
Host-specific macros #
С помощью этого варианта можно поменять значение для конкретного хоста. Заходим в Configuration - Hosts, находим нужный хост, переходим на вкладку Macros, выбираем Inherited and host macros, нажимаем Change, меняем, ???, PROFIT.
Теперь триггер будет срабатывать на измененное количество дней.
Добавляем поле Days Left #
Я хотел сделать себе виджет для дашборда, на котором видно сколько дней осталось до конца срока действия сертификата. К сожалению в изначальном шаблоне нет такого поля; только поле с датой окончания. Я решил этот вопрос добавлением _Calculated field _ — это тип item в Zabbix, который рассчитывается на основе других items.
Идем в наш основной шаблон Configuration - Templates - Website certificate by Zabbix agent 2. Там переходим во вкладку Items и нажимаем вверху справа Create Item. Вводим настройки нового Item:
- Name:
Cert: Days left
- Type:
Calculated
- Key:
cert.days_left
— ключ нашего item - Type of information:
Numeric (float)
— у нас будут не целые дни - Formula:
round(((last(//cert.not_after) - now()) / 86400),1)
- Units:
days
— считаем в днях - Update interval — любой, у меня
1m
— 1 минута
Теперь в Latest Data у нас появился новый Item, по которому мы уже сможем создать Trigger:
Создаем виджет для дашборда #
Рекомендую заранее объединить наши хоста для мониторинга SSL сертификатов в одну Host Group.
Создадим новый дашборд или добавим виджет на имеющийся.
Переходим в левом меню в Monitoring — Dashboard, нажимаем Create Dashboard.
После ввода имени и других данных (не особо важных) нажимаем Add widget:
Вводим данные как на скриншоте:
To je to! Мы молодцы. 🎉
🙋♂️С вопросами и комментариями можно смело приходить в наш телеграм-чат — https://t.me/etogeekchat
🌀Так же рекомендую подписаться на телеграм-канал, чтобы не пропускать классные посты и анонсы новых статей — https://t.me/etogeek