Много раз проскакивало желание у многих получить простой инструмент, позволяющий следить за истекающими сертификатами SSL. Ниже представляю инструмент для самостоятельного развертывания в среде docker.

Код написан для python14, но работать будет и на других версиях (12, 13, 14 и т.д.).

Что включает проект (все в одном):

api: fastapi

db: postgres

db ui: pgadmin

task queue: celery (beat + worker)

dashboard: grafana

Важно:

Для инициализации БД в директории файл ./init/db.sql

Для pgadmin владелец на директории должен быть 5050:

chown -R 5050:5050 ./pgdata/pgadmin

Для grafana владелец на директории должен быть 472:

chown -R 472:472 ./grafana-data/

Алгоритм работы:

  1. Получаем токен (таблица token). Токен позволяет добавить конечный узел проверки (endpoint).

  2. При добавлении endpoint, проверяется узел:порт и есть ли на нем сертификат. В случае успеха, в таблицу certificate добавляется существующий сертификат, в таблицу endpoint добавляется узел + порт, в таблицу certificate_endpoint_ref - связка (certificate_id, endpoint_id), в таблицу token_endpoint_ref - связка (token_id, endpoint_id). Это позволяет нам разделить потребителей мониторинга, узел проверяется только раз, но результат проверки доступен любому потребителю, чужие ресурсы не доступны.

  3. Список доменов разбивается на чанки. Каждый чанк запускается в своем потоке и происходит проверка узлов.

  4. Далее метрики доступны через /metrics/expiring_certs. Набор возвращаемых метрик можно перечислить через запятую.

    Метрики для прома
    Метрики для прома
  5. Если узел перестал отвечать, то счетчик ошибок начинает увеличиваться и по логарифмической формуле проверки будут проходить все реже и реже.

Для удобства в grafana сделал дашборд (из коробки). Пароль можно подсмотреть в docker-compose.yml
Для удобства в grafana сделал дашборд (из коробки). Пароль можно подсмотреть в docker-compose.yml

Полезные команды понаблюдать процесс:

docker compose logs -f --tail 10 celery_worker

Ссылка на github:

https://github.com/highsenka/sslchecker
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Ваше мнение
33.33%Спасибо8
70.83%Не нужно17
Проголосовали 24 пользователя. Воздержались 3 пользователя.