--- title: Gatus - просто мониторинг description: published: true date: 2024-08-08T14:53:49.541Z tags: мониторинг, gatus editor: markdown dateCreated: 2024-08-08T14:47:57.868Z --- У меня было очень много заметок про различные мониторинги. Кажется, что я уже про всё более-менее полезное что-то да писал. Оказалось, что нет. Расскажу про очередной небольшой и удобный мониторинг, который позволяет очень просто и быстро создать дашборд с зелёными и красными кнопками. Если зелёные, то всё ОК, если красные, то НЕ ОК.   Речь пойдёт про Gatus (https://github.com/TwiN/gatus). С его помощью очень удобно создавать Status Page. Сразу покажу, как это будет выглядеть: ⇨ [https://status.twin.sh](https://status.twin.sh) И сразу же простой пример, как это настраивается. Там всё максимально просто и быстро. Мы будем проверять следующие условия: ◽️Подключение к сайту [zabbix.com](https://zabbix.com) проходит успешно, а его IP равен 188.114.99.224. Так как этот домен резолвится в разные IP, можно будет увидеть, как срабатывает проверка. ◽️Сайт [github.com](https://github.com) отдаёт код 200 при подключении и содержит заголовок страницы GitHub: Let’s build from here · GitHub.   ◽️Сайт ya.ru отдаёт код 200 и имеет отклик менее 10 мс. На практике он будет больше, посмотрим, как срабатывает триггер. По этой проверке будет уведомление в Telegram. ◽️Домен [vk.com](https://vk.com) имеет сертификат со сроком истечения не менее 48 часов и делегирование домена не менее 720 часов.   Специально подобрал разнообразные примеры, чтобы вы оценили возможности мониторинга. Я просто открыл документацию и сходу по ней всё сделал. Всё очень просто и понятно, особо разбираться не пришлось. Создаём конфигурационный файл для этих проверок: ```plaintext # mkdir gatus && cd gatus # touch config.yaml ``` ```plaintext alerting: telegram: token: "1393668911:AAHtEAKqxUH7ZpyX28R-wxKfvH1WR6-vdNw" id: "210806260" endpoints: - name: Zabbix Connection url: "https://zabbix.com" interval: 30s conditions: - "[CONNECTED] == true" - "[IP] == 188.114.99.224" - name: Github Title url: "https://github.com" interval: 30s conditions: - "[STATUS] == 200" - "[BODY] == pat(*GitHub: Let’s build from here · GitHub*)" - name: Yandex response url: "https://ya.ru" interval: 30s conditions: - "[STATUS] == 200" - "[RESPONSE_TIME] < 10" alerts: - type: telegram send-on-resolved: true - name: VK cert & domain url: "https://vk.com" interval: 5m conditions: - "[CERTIFICATE_EXPIRATION] > 48h" - "[DOMAIN_EXPIRATION] > 720h" ``` Запускаем Docker контейнер и цепляем к нему этот файл: ```plaintext # docker run -p 8080:8080 -d \ --mount type=bind,source="$(pwd)"/config.yaml,target=/config/config.yaml \ --name gatus twinproduction/gatus ``` Идём по IP адресу сервера на порт 8080 и смотрим на свой мониторинг. Данные могут храниться в оперативной памяти, sqlite или postgresql базе. Если выберите последнее, то вот готовый [docker-compose](https://github.com/TwiN/gatus/blob/master/.examples/docker-compose-postgres-storage/docker-compose.yml)  для этого. По умолчанию данные хранятся в оперативной памяти и после перезапуска контейнера пропадают.   ```plaintext version: "3.9" services: postgres: image: postgres volumes: - ./data/db:/var/lib/postgresql/data ports: - "5432:5432" environment: - POSTGRES_DB=gatus - POSTGRES_USER=username - POSTGRES_PASSWORD=password networks: - web gatus: image: twinproduction/gatus:latest restart: always ports: - "8080:8080" environment: - POSTGRES_USER=username - POSTGRES_PASSWORD=password - POSTGRES_DB=gatus volumes: - ./config:/config networks: - web depends_on: - postgres networks: web: ``` Штука простая и удобная. Меня не раз просили посоветовать что-то для простого дашборда с зелёными кнопками, когда всё нормально и красными, когда нет. Вот это идеальный вариант под такую задачу. Также с помощью этого мониторинга удобно сделать дашборд для мониторинга мониторингов, чтобы понимать, живы они или нет. ![](/sysadmin/img/gatus.png)