1
0
Fork 0
digitalstudium.com/content/ru/linux-lifehacks/linux-monitoring-with-teleg...

80 lines
6.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: "Linux: Как настроить мониторинг с уведомлениями в Telegram"
category: linux-lifehacks
filename: linux-monitoring-with-telegram-alerts
date: 2023-03-04
---
В статье описывается, как настроить мониторинг с уведомлениями в Telergram с помощью Grafana, Prometheus, Alertmanager, Node-exporter и Cadvisor.
### Первый шаг: Клонирование репозитория
Зайдите на сервер или в локальный терминал и выполните следующие команды:
```bash
git clone https://github.com/digitalstudium/grafana-docker-stack.git
cd grafana-docker-stack
git checkout alertmanager
```
<!--more-->
### Второй шаг: установка внешнего адреса сервера
Откройте файл `docker-compose.yml` и в строках 22 и 38 измените адрес `127.0.0.1` на адрес того сервера, на котором вы хотите установить Prometheus.
### Третий шаг: создание бота в Telegram
В поиске Telegram наберите `Botfather` и перейдите по первой ссылке:
![Botfather поиск](/images/botfather1.png "Botfather поиск")
Затем нажмите `Start`:
![Botfather старт бота](/images/botfather2.png "Botfather старт бота")
После этого создайте бота, пользуясь инструкциями `Botfather`.
В итоге вы должны получить сообщение с токеном API:
![Botfather API токен](/images/botfather3.png "Botfather API токен")
Скопируйте данный токен и вставьте его в строку 14 файла `configs/alertmanager.yml` в качестве значения параметра `bot_token`.
Затем создайте группу в телеграм и добавьте созданного бота в эту группу. В эту группу будут приходить уведомления (алёрты).
### Четвертый шаг: Получение id группы
В группе, к которой вы добавили бота, напишите какую-нибудь команду, например: `/my_id foobar`
Затем в браузере перейдите по ссылке
`https://api.telegram.org/botINSERT_BOT_TOKEN_HERE/getUpdates`, заменив `INSERT_BOT_TOKEN_HERE` на токен, созданный на шаге 3.
Вы должны получить примерно такую страницу:
![Telegram получение id чата](/images/chat_id.png "Telegram получение id чата")
Если на вашей странице ничего нет, попробуйте отправьте команду `/my_id foobar` в группу ещё раз.
Вам нужно скопировать значение chat id с этой страницы и вставить его в строку 15 файла `configs/alertmanager.yml` в качестве значения параметра `chat_id`. Обратите внимание, что значение параметра `chat_id` должно быть без кавычек и со знаком дефиса вначале.
### Пятый шаг: развёртывание docker стэка
Находясь в папке `grafana-docker-stack`, выполните следующие команды:
```bash
docker swarm init
docker stack deploy -c docker-compose.yml monitoring
```
Подождите 5-10 минут, затем выполните команду
```bash
docker ps
```
Вывод команды должен содержать 5 контейнеров: prometheus, grafana, alertmanager, node-exporter, grafana.
```plaintext
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
46fba26e7234 gcr.io/cadvisor/cadvisor:v0.47.0 "/usr/bin/cadvisor -…" 5 days ago Up 5 days (healthy) 8080/tcp monitoring_cadvisor.1.q02qcn798dh0rydo1dzslylse
f212e3c66786 prom/alertmanager:v0.25.0 "/bin/alertmanager -…" 6 days ago Up 6 days 9093/tcp monitoring_alertmanager.1.oysziztrqnur7xr0hr82avunz
c16fb14929e2 prom/prometheus:v2.42.0 "/bin/prometheus --c…" 6 days ago Up 6 days 9090/tcp monitoring_prometheus.1.yslspi4fgjp7ic4f5e18gm99a
9bf01ce6b7a1 grafana/grafana:9.3.6-ubuntu "/run.sh" 6 days ago Up 6 days 3000/tcp monitoring_grafana.1.mypn85x12xw37ucprr33knuwk
58efdb46f5c3 kindest/node:v1.25.3 "/usr/local/bin/entr…" 6 days ago Up 6 days 127.0.0.1:46579->6443/tcp kind-control-plane
ae15e453e517 prom/node-exporter:v1.5.0 "/bin/node_exporter …" 7 days ago Up 7 days 9100/tcp monitoring_node-exporter.1.uecim10ow12h1qlpox5lg0c5r
```
Если вы видите такой вывод, значит всё развернулось успешно. Если нет, попробуйте повторить все предыдущие шаги.
### Шестой шаг: проверить работоспособность
Зайдите по адресу [ip-адрес или доменное имя сервера]:3000
У вас должна открыться Grafana. Введите логин `admin` и пароль `admin`. Grafana попросит сменить пароль, смените его на любой другой.
В разделе Dashboard -> Browse -> General вы увидите 2 дашборда: Cadvisor exporter и Node Exporter Full. Откройте их и убедитесь, что всё работает.
## Итог
Теперь вы можете оценивать производительность сервера через графики Grafana.
Также вам будут приходить уведомления о проблемах с сервером в группу Telegram. Правила уведомлений можно настроить в файле `configs/prometheus/alert_rules.yml`