Compare commits
8 Commits
5899a62772
...
7dd332b9ed
| Author | SHA1 | Date |
|---|---|---|
|
|
7dd332b9ed | |
|
|
561c277646 | |
|
|
15e2783cb3 | |
|
|
8730ac5fba | |
|
|
481404b050 | |
|
|
59389a9d4f | |
|
|
b6f3925b2e | |
|
|
716014a704 |
|
|
@ -0,0 +1,107 @@
|
||||||
|
<!--
|
||||||
|
title: Gatus - просто мониторинг
|
||||||
|
description:
|
||||||
|
published: true
|
||||||
|
date: 2024-08-08T14:53:32.993Z
|
||||||
|
tags: мониторинг, gatus
|
||||||
|
editor: ckeditor
|
||||||
|
dateCreated: 2024-08-08T14:47:57.868Z
|
||||||
|
-->
|
||||||
|
|
||||||
|
<p>У меня было очень много заметок про различные мониторинги. Кажется, что я уже про всё более-менее полезное что-то да писал. Оказалось, что нет. Расскажу про очередной небольшой и удобный мониторинг, который позволяет очень просто и быстро создать дашборд с зелёными и красными кнопками. Если зелёные, то всё ОК, если красные, то НЕ ОК. </p>
|
||||||
|
<p> </p>
|
||||||
|
<p>Речь пойдёт про Gatus (https://github.com/TwiN/gatus). С его помощью очень удобно создавать Status Page. Сразу покажу, как это будет выглядеть:</p>
|
||||||
|
<p> </p>
|
||||||
|
<p>⇨ <a href="https://status.twin.sh">https://status.twin.sh</a></p>
|
||||||
|
<p> </p>
|
||||||
|
<p>И сразу же простой пример, как это настраивается. Там всё максимально просто и быстро. Мы будем проверять следующие условия:</p>
|
||||||
|
<p> </p>
|
||||||
|
<p>◽️Подключение к сайту <a href="https://zabbix.com">zabbix.com </a>проходит успешно, а его IP равен 188.114.99.224. Так как этот домен резолвится в разные IP, можно будет увидеть, как срабатывает проверка.</p>
|
||||||
|
<p>◽️Сайт <a href="https://github.com">github.com</a> отдаёт код 200 при подключении и содержит заголовок страницы GitHub: Let’s build from here · GitHub. </p>
|
||||||
|
<p>◽️Сайт ya.ru отдаёт код 200 и имеет отклик менее 10 мс. На практике он будет больше, посмотрим, как срабатывает триггер. По этой проверке будет уведомление в Telegram.</p>
|
||||||
|
<p>◽️Домен <a href="https://vk.com">vk.com</a> имеет сертификат со сроком истечения не менее 48 часов и делегирование домена не менее 720 часов. </p>
|
||||||
|
<p> </p>
|
||||||
|
<p>Специально подобрал разнообразные примеры, чтобы вы оценили возможности мониторинга. Я просто открыл документацию и сходу по ней всё сделал. Всё очень просто и понятно, особо разбираться не пришлось. Создаём конфигурационный файл для этих проверок:</p>
|
||||||
|
<pre><code class="language-plaintext"># mkdir gatus && cd gatus
|
||||||
|
# touch config.yaml
|
||||||
|
</code></pre>
|
||||||
|
<pre><code class="language-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(*<title>GitHub: Let’s build from here · GitHub</title>*)"
|
||||||
|
|
||||||
|
- 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"
|
||||||
|
</code></pre>
|
||||||
|
<p>Запускаем Docker контейнер и цепляем к нему этот файл:</p>
|
||||||
|
<pre><code class="language-plaintext"># docker run -p 8080:8080 -d \
|
||||||
|
--mount type=bind,source="$(pwd)"/config.yaml,target=/config/config.yaml \
|
||||||
|
--name gatus twinproduction/gatus
|
||||||
|
</code></pre>
|
||||||
|
<p>Идём по IP адресу сервера на порт 8080 и смотрим на свой мониторинг. Данные могут храниться в оперативной памяти, sqlite или postgresql базе. Если выберите последнее, то вот готовый <a href="https://github.com/TwiN/gatus/blob/master/.examples/docker-compose-postgres-storage/docker-compose.yml">docker-compose</a> для этого. По умолчанию данные хранятся в оперативной памяти и после перезапуска контейнера пропадают. </p>
|
||||||
|
<pre><code class="language-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:</code></pre>
|
||||||
|
<p>Штука простая и удобная. Меня не раз просили посоветовать что-то для простого дашборда с зелёными кнопками, когда всё нормально и красными, когда нет. Вот это идеальный вариант под такую задачу.</p>
|
||||||
|
<p>Также с помощью этого мониторинга удобно сделать дашборд для мониторинга мониторингов, чтобы понимать, живы они или нет.</p>
|
||||||
|
<figure class="image"><img src="/sysadmin/img/gatus.png"></figure>
|
||||||
|
<p> </p>
|
||||||
|
|
@ -0,0 +1,123 @@
|
||||||
|
---
|
||||||
|
title: Gatus - просто мониторинг
|
||||||
|
description:
|
||||||
|
published: true
|
||||||
|
date: 2024-08-08T14:54:22.568Z
|
||||||
|
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 часов.
|
||||||
|
|
||||||
|
Специально подобрал разнообразные примеры, чтобы вы оценили возможности мониторинга. Я просто открыл документацию и сходу по ней всё сделал. Всё очень просто и понятно, особо разбираться не пришлось. Создаём конфигурационный файл для этих проверок:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
mkdir gatus && cd gatus
|
||||||
|
touch config.yaml
|
||||||
|
```
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
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(*<title>GitHub: Let’s build from here · GitHub</title>*)"
|
||||||
|
|
||||||
|
- 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 контейнер и цепляем к нему этот файл:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
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) для этого. По умолчанию данные хранятся в оперативной памяти и после перезапуска контейнера пропадают.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
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:
|
||||||
|
```
|
||||||
|
|
||||||
|
Штука простая и удобная. Меня не раз просили посоветовать что-то для простого дашборда с зелёными кнопками, когда всё нормально и красными, когда нет. Вот это идеальный вариант под такую задачу.
|
||||||
|
|
||||||
|
Также с помощью этого мониторинга удобно сделать дашборд для мониторинга мониторингов, чтобы понимать, живы они или нет.
|
||||||
|
|
||||||
|

|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 595 KiB |
Loading…
Reference in New Issue