Дополнительные настройки SHM ============================ Настройки уведомлений --------------------- В данном разделе показан процесс настройки уведомлений при использовании мониторинга SHM. Достижение параметрами критических значений фиксируется Grafana. Для указания критических значений нужно открыть на редактирование график, например, датасорсов JBoss, затем перейти на вкладку Alert. .. figure:: ../_static/img/alert1.png Здесь нужно указать название и интервал пересчёта данных, а также условие, при котором будет срабатывать предупреждение. Условие на картинке означает следующее: уведомлять, если значение метрики в запросе А (available count) за последнюю минуту было ниже 50. Далее указать каналы, по которым будут отправляться уведомления, в данном случае e-mail и Telegram, и сохранить. .. figure:: ../_static/img/notifications.png E-mail ~~~~~~ Для настройки уведомлений по e-mail в первую очередь следует настроить smtp для Grafana на PMM-Server. Для этого на машине, где установлен PMM-Server, нужно: 1. получить ID контейнера .. code-block:: bash 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 2. зайти в контейнер ``docker exec -it a4c99272241a /bin/bash`` 3. открыть на редактирование файл ``vi /etc/grafana/grafana.ini`` 4. в секции [smtp] указать настройки почты .. code-block:: bash [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 5. выйти и перезапустить контейнер ``docker restart pmm-server`` После этого нужно открыть в браузере меню Alerting и выбрать Notification Channels, указать название, тип Email и почтовый адрес, на который будут отправляться уведомления: .. figure:: ../_static/img/email_alert.png При достижении настроенным параметром установленного значения на почту будет отправлено подобное сообщение: .. figure:: ../_static/img/mail_message.png Telegram ~~~~~~~~ Для уведомлений в Telegram нужно создать telegram-бот, например, через ``@BotFather``. В Telegram нужно отправить этому пользователю следующие сообщения: #. ``/start`` #. ``/newbot`` #. ввести имя бота, например, ``shm_alerts`` #. ввести юзернейм бота (должен быть уникальным и заканчиваться на _bot), например, ``_alerts_bot`` В ответ должно прийти сообщение с токеном. После этого нужно открыть меню Alerting и выбрать Notification Channels, указать название, тип Telegram и вставить полученный токен в ``BOT API Token``. В Telegram отправить боту хотя бы одно сообщение, например, ``/my_id @shm_alerts``. Затем открыть в браузере ``https://api.telegram.org/botYOUR_TOKEN/getUpdates``, подставив свой токен, и скопировать chatID в соответствующее поле. .. figure:: ../_static/img/telegram_alert.png При достижении настроенным параметром установленного значения в telegram будет отправлено подобное сообщение: .. figure:: ../_static/img/telegram_message.png Отображение на графиках метрик более чем одной ноды --------------------------------------------------- Большинство графиков в 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): .. figure:: ../_static/img/default_graph.png Соседний график Requests per Second отображает только данные по выбранному инстансу, так как запрос делается по параметрам ``app`` и ``instance``: ``sum(rate(synergy_http_response_time_seconds_count{app=~"$job",instance="$instance"}[1m])) by (instance)`` Если нужно показывать на графике оба наблюдаемых сервиса nginx, независимо от выбранного на дашборде, вариантом решения будет дублирование запроса и явное указание инстансов: .. figure:: ../_static/img/two_nginx.png