Container Pinger – это приложение, написанное на Go и TypeScript, которое:
- Получает IP-адреса Docker-контейнеров.
- Пингует их с заданным интервалом.
- Сохраняет результаты пинга в базу данных.
- Отображает актуальное состояние контейнеров на динамически формируемой веб-странице.
- Использовать TimescaleDB вместо Postgres – это позволит эффективнее хранить и обрабатывать временные ряды, сократит нагрузку на базу и ускорит агрегацию метрик.
- Добавить семплирование метрик пингов – поможет сократить объем данных, уменьшить нагрузку на базу и сфокусироваться на значимых изменениях в доступности контейнеров. Зависит от требований к точности данных.
- Добавить очередь перед backend – обеспечит асинхронную передачу данных от Pinger, уменьшит нагрузку на backend при пиках и повысит отказоустойчивость.
- Защитить коммуникации между сервисами – при передаче метрик через интернет добавить аутентификацию (например, JWT), чтобы предотвратить несанкционированную отправку данных.
- Docker и Docker Compose должны быть установлены на компьютере.
-
Клонирование репозитория:
git clone https://github.com/jeorji/container-pinger.git
-
Переход в каталог проекта:
cd container-pinger -
Создание файла конфигурации:
Скопируйте файл
.env.exampleв.envи отредактируйте переменные окружения при необходимости:cp .env.example .env
-
Запуск контейнеров:
docker compose up
Контейнеры будут собраны и запущены.
-
Доступ к приложению:
После успешного запуска, приложение будет доступно по адресу: http://127.0.0.1

