From 561c2776464fbcd78b39ae448e3d93c001e32778 Mon Sep 17 00:00:00 2001 From: Administrator Date: Thu, 8 Aug 2024 14:53:49 +0000 Subject: [PATCH] docs: update sysadmin/Monitoring/Gatus --- sysadmin/Monitoring/Gatus.md | 117 ++++++++++++++++++++++++++++++++++- 1 file changed, 114 insertions(+), 3 deletions(-) diff --git a/sysadmin/Monitoring/Gatus.md b/sysadmin/Monitoring/Gatus.md index cce508f..881a915 100644 --- a/sysadmin/Monitoring/Gatus.md +++ b/sysadmin/Monitoring/Gatus.md @@ -2,11 +2,122 @@ title: Gatus - просто мониторинг description: published: true -date: 2024-08-08T14:47:57.868Z +date: 2024-08-08T14:53:49.541Z tags: мониторинг, gatus editor: markdown dateCreated: 2024-08-08T14:47:57.868Z --- -# Header -Your content here \ No newline at end of file +У меня было очень много заметок про различные мониторинги. Кажется, что я уже про всё более-менее полезное что-то да писал. Оказалось, что нет. Расскажу про очередной небольшой и удобный мониторинг, который позволяет очень просто и быстро создать дашборд с зелёными и красными кнопками. Если зелёные, то всё ОК, если красные, то НЕ ОК.   + +Речь пойдёт про 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) \ No newline at end of file