1.2. Дополнительные настройки SHM¶
1.2.1. Настройки уведомлений¶
В данном разделе показан процесс настройки уведомлений при использовании мониторинга SHM.
Достижение параметрами критических значений фиксируется Grafana. Для указания критических значений нужно открыть на редактирование график, например, датасорсов JBoss, затем перейти на вкладку Alert.
Здесь нужно указать название и интервал пересчёта данных, а также условие, при котором будет срабатывать предупреждение. Условие на картинке означает следующее: уведомлять, если значение метрики в запросе А (available count) за последнюю минуту было ниже 50. Далее указать каналы, по которым будут отправляться уведомления, в данном случае e-mail и Telegram, и сохранить.
1.2.1.1. E-mail¶
Для настройки уведомлений по e-mail в первую очередь следует настроить smtp для Grafana на PMM-Server. Для этого на машине, где установлен PMM-Server, нужно:
- получить ID контейнера
root@server:~# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a4c99272241a percona/pmm-server:latest "/opt/entrypoint.sh" 2 months ago Up 7 days 443/tcp, 0.0.0.0:8080->80/tcp pmm-server
3e5ea7123736 percona/pmm-server:latest "/bin/true" 2 months ago Created pmm-data
- зайти в контейнер
docker exec -it a4c99272241a /bin/bash
- открыть на редактирование файл
vi /etc/grafana/grafana.ini
- в секции [smtp] указать настройки почты
[smtp]
enabled = true
host = smtp.yandex.com:465
user = alerts@arta.pro
# If the password contains # or ; you have to wrap it with trippel quotes. Ex """#password;"""
password = """qwerty!@#"""
;cert_file =
;key_file =
skip_verify = true
from_address = alerts@arta.pro
from_name = Grafana
# EHLO identity in SMTP dialog (defaults to instance_name)
;ehlo_identity = dashboard.example.com
- выйти и перезапустить контейнер
docker restart pmm-server
После этого нужно открыть в браузере меню Alerting и выбрать Notification Channels, указать название, тип Email и почтовый адрес, на который будут отправляться уведомления:
При достижении настроенным параметром установленного значения на почту будет отправлено подобное сообщение:
1.2.1.2. Telegram¶
Для уведомлений в Telegram нужно создать telegram-бот, например, через @BotFather
. В Telegram нужно отправить этому пользователю следующие сообщения:
/start
/newbot
- ввести имя бота, например,
shm_alerts
- ввести юзернейм бота (должен быть уникальным и заканчиваться на _bot), например,
<your_project_name>_alerts_bot
В ответ должно прийти сообщение с токеном. После этого нужно открыть меню Alerting и выбрать Notification Channels, указать название, тип Telegram и вставить полученный токен в BOT API Token
.
В Telegram отправить боту хотя бы одно сообщение, например, /my_id @shm_alerts
. Затем открыть в браузере https://api.telegram.org/botYOUR_TOKEN/getUpdates
, подставив свой токен, и скопировать chatID в соответствующее поле.
При достижении настроенным параметром установленного значения в telegram будет отправлено подобное сообщение:
1.2.2. Отображение на графиках метрик более чем одной ноды¶
Большинство графиков в Grafana построены на запросах подобного вида (на примере nginx):
sum(rate(synergy_http_response_time_seconds_sum[5m])) by (instance) / sum(rate(synergy_http_response_time_seconds_count[5m])) by (instance)
Суммирование по инстансам позволяет отображать графики нескольких экземпляров какого-либо сервиса одновременно (см. Average Response Times):
Соседний график Requests per Second отображает только данные по выбранному инстансу, так как запрос делается по параметрам app
и instance
:
sum(rate(synergy_http_response_time_seconds_count{app=~"$job",instance="$instance"}[1m])) by (instance)
Если нужно показывать на графике оба наблюдаемых сервиса nginx, независимо от выбранного на дашборде, вариантом решения будет дублирование запроса и явное указание инстансов: