Commit d4e48ab0 authored by Ilya Veselov's avatar Ilya Veselov

afterparty1

parent 1b8f8e60
......@@ -7,6 +7,11 @@
monitoring/install-pmm-shm
.. toctree::
:maxdepth: 2
:numbered:
monitoring/shm-settings
.. toctree::
:maxdepth: 2
......
......@@ -181,8 +181,73 @@ PMM-Server должен быть доступен с сервера Synergy, э
После этого можно подключать мониторинг требуемых сервисов.
Cмотреть список и состояние наблюдаемых сервисов можно командой ``pmm-admin list``.
Основные команды pmm-admin
~~~~~~~~~~~~~~~~~~~~~~~~~~
Возможные команды, настройки и флаги pmm-admin можно посмотреть, выполнив в терминале ``pmm-admin --help``.
Для просмотра списка и состояния наблюдаемых сервисов используется команда ``pmm-admin list``.
В общем случае команда подключения мониторинга сервиса выглядит так:
``pmm-admin add external:services job_name [instance] --service-port=port [flags]``,
где нужно указать имя задания для Prometheus, порт, используемый экспортером, и при необходимости название инстанса.
Инстанс нужно указывать, если настраивается мониторинг одновременно JBoss/ Wildfly и Cassandra, а также при добавлении нескольких нод одного сервиса, собранных в кластер.
Кроме того, можно добавить инстанс к уже существующему заданию Prometheus. Если, к примеру, позже была подключена ещё одна нода какого-либо сервиса и для неё также установлен пакет SHM, используется следующая команда:
``pmm-admin add external:instances job_name [host1:port1[=instance1]] [host2:port2[=instance2]] ... [flags]``
Например, настроен мониторинг одного экземпляра Elasticsearch:
.. code-block:: bash
root@hamming:~# pmm-admin list
pmm-admin 1.17.1
PMM Server | 192.168.2.234:8080
Client Name | hamming
. . . . .
Job name Scrape interval Scrape timeout Metrics path Scheme Target Labels Health
elastic 1m0s 10s /metrics http 192.168.2.198:9114 instance="node1" UP
Команда для добавления ноды может выглядеть так:
``pmm-admin add external:instances elastic 192.168.2.181:9114=node2``
Добавленная нода в списке:
.. code-block:: bash
root@hamming:~# pmm-admin list
pmm-admin 1.17.1
PMM Server | 192.168.2.234:8080
Client Name | hamming
. . . . .
Job name Scrape interval Scrape timeout Metrics path Scheme Target Labels Health
elastic 1m0s 10s /metrics http 192.168.2.198:9114 instance="node1" UP
elastic 1m0s 10s /metrics http 192.168.2.181:9114 instance="node2" UP
На соответствующем дашборде можно будет выбрать нужную ноду в параметре ``Instance``:
.. figure:: ../_static/img/nodes.png
Для удаления ненужных сервисов используется команда:
``pmm-admin remove external:service job_name --service-port=port [flags]``
Например, для Elasticsearch:
``pmm-admin remove external:service elastic --service-port=9114``
Для удаления отдельного инстанса:
``pmm-admin remove external:instances job_name [host1:port1] [host2:port2] ... [flags]``
.. note::
Удаляются только задания для инстанса, на котором выполнена команда. Чтобы удалить задания для других инстансов, нужно выполнять аналогичные команды на них.
Мониторинг Linux и MySQL
~~~~~~~~~~~~~~~~~~~~~~~~
......@@ -265,7 +330,7 @@ Cмотреть список и состояние наблюдаемых сер
* jboss - имя задания для Prometheus;
* testserver-jboss - название инстанса. Так как аналогичный экспортер используется и для Cassandra, нужно указать название явно, чтобы метрики JBoss/Wildfly и Cassandra не смешивались на графиках.
* testserver-jboss - название инстанса. Так как аналогичный экспортер используется и для Cassandra, нужно указать название явно, чтобы метрики JBoss/Wildfly и Cassandra не смешивались на графиках. Кроме того, нужно указывать инстансы в случаях, когда используется несколько экземпляров.
Мониторинг nginx
......@@ -377,6 +442,7 @@ Cмотреть список и состояние наблюдаемых сер
Так как аналогичный экспортер используется и для JBoss/Wildfly, нужно указать явно название инстанса
(в данном случае testserver-cassandra), чтобы метрики JBoss/Wildfly и Cassandra не смешивались на графиках.
Кроме того, нужно указывать инстансы в случаях, когда используется кластер из нескольких нод Cassandra.
Мониторинг Elasticsearch
~~~~~~~~~~~~~~~~~~~~~~~~
......@@ -387,4 +453,4 @@ Cмотреть список и состояние наблюдаемых сер
Добавление мониторинга в PMM-Server:
``pmm-admin add external:service --service-port=9114 elasticsearch``
``pmm-admin add external:service --service-port=9114 elastic``
Дополнительные настройки 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. Для этого нужно:
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), например, ``shm_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
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment