Много раз проскакивало желание у многих получить простой инструмент, позволяющий следить за истекающими сертификатами 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

Комментарии (5)


  1. andreymal
    12.02.2026 14:37

    1. po3dno Автор
      12.02.2026 14:37

      А можете на bbe сделать просто:

      Удобное добавление хостов.

      Удаление хостов.

      + стратегию удаления хостов по неактивности?

      p.s. Тому кто минус поставил, наверное не понял идею проекта в паблике.


      1. andreymal
        12.02.2026 14:37

        А зачем? Я один раз вбил интересующие меня домены в конфиг и вот уже несколько лет мониторю их без всяких правок

        не понял идею проекта

        Я минус не ставил, но вы идею не описали ни в посте, ни в README


  1. Acidter
    12.02.2026 14:37

    Запнулся об "python14"


  1. post_ed
    12.02.2026 14:37

    Я по старинке в экселе, помимо сертификатов, нужно мониторить домены, хостинг, а где и днс-хостинг.