4.5 Интеграция с системой мониторинга

Установка готового решения – системы мониторинга ОП TIONIX – выполняется с помощью сценария автоматизации (развертывания), представленного плейбуками Ansible.

Внимание

необходимы подробности (команда, вывод, проверка)

После корректного выполнения сценария откройте веб-браузер и введите URL точки входа:

http://<server>:3000

Должен открыться веб-интерфейс системы визуализации Grafana.

Примечание.

Подробности использования системы визуализации изложены в документе Руководство оператора ОП TIONIX.

4.5.1 Установка системы мониторинга

Примечание

проверка на стенде

В файле hosts шаблона необходимо указать адреса сервера и объектов мониторинга.

Доступны два плейбука, содержащих сценарии развертывания:

cn.yaml – развертывание экспортеров на вычислительных узлах;

server.yaml – развертывание сервера мониторинга.

Запуск плейбуков осуществляется командами:

ansible-playbook cn.yaml -i hosts  --ask-pass

ansible-playbook server.yaml -i hosts  --ask-pass

4.5.2 Служба телеметрии

Ceilometer (OpenStack Telemetry Service) – служба сбора телеметрических данных, которая наделена возможностью собирать данные метрик и событий с основных компонентов OpenStack, производить нормализацию и хранение собранных данных централизованно, в подключенной СХД.

По умолчанию, в качестве системы хранения используется Gnocchi, позволяющий хранить собираемые метрики (результаты измерений) в агрегированном виде и предоставляющий API.

См.также

Руководство оператора ОП TIONIX.

Ниже показаны инструкции, опирающиеся на использование метрики службы образов (Image Service) для того, чтобы снизить влияние «шумов» на измерения [1].

Примечания.

Проверка работы службы телеметрии выполняется на УУ.

Окружение OpenStack, в котором функционирует служба телеметрии с интеграцией дополнительных служб, содержит больше метрик.

Выполните следующую последовательность команд:

. /root/admin-openrc.sh
gnocchi resource list  --type image

Из выведенной таблицы выберите значение идентификатора, отображенное в первом столбце (id). Выведите полный набор метрик с помощью команды:

gnocchi resource <UUID>

В левом столбце отыщите строку со словом metrics. Справа от неё, в соседнем столбце, будет выведен полный список доступных метрик:

| metrics       | image.download: 839afa02-1668-4922-a33e-6b6ea7780715      |
|               | image.serve: 1132e4a0-9e35-4542-a6ad-d6dc5fb4b835         |
|               | image.size: 8ecf6c17-98fd-446c-8018-b741dc089a76          |

Скачайте образ CirrOS с помощью службы образов [2]. Выполните команды:

IMAGE_ID=$(glance image-list | grep 'cirros' | awk '{ print $2 }')
glance image-download $IMAGE_ID > /tmp/cirros.img

Запросите значение метрики, используя UUID (image.download):

gnocchi measures show 839afa02-1668-4922-a33e-6b6ea7780715

Будет выведена таблица, содержащая столбцы, содержащие значения:

timestamp: отпечаток времени, на которое было произведено измерение;

granularity: гранулярность;

value: непосредственное значение (метрики).

Убедившись в работоспособности службы метрик, удалите ранее скачанный файл:

rm /tmp/cirros.img

4.5.3 Аварийное оповещение

Для Grafana создан источник данных, формирующий канал уведомлений – AlertManager. Менеджер уведомлений используется сервером Prometheus для рассылки.

Скачайте Alertmanager на узел, в котором функционирует сервер Prometheus:

wget https://github.com/prometheus/alertmanager/releases/alertmanager-<номер_релиза>.linux-amd64.tar.gz

Распакуйте архив:

tar -C ~/alertmanager -xzf alertmanager-0.5.1.linux-amd64.tar.gz

Внимание

куда положить?

4.5.3.1 Запуск

Настройки уведомлений, обрабатываемые при запуске, хранятся в конфигурационном файле alertmanager.conf. Чтобы прописанные в нём настройки вступили в силу, следует сначала сохранить его и затем выполнить команду:

alertmanager -config.file=alertmanager.conf

Ниже представлены основные сведения о принципе работы AlertManager [3].

4.5.3.2 Мониторинг сервиса Alertmanager

При необходимости настройте мониторинг сервиса (Alertmanager). Для этого откройте конфигурационный файл prometheus.yml и добавьте Alertmanager в список серверов:

- job_name: 'alertmanager'
  static_configs:
        - targets: ['localhost:9093']
          labels:
                alias: alertmanager

4.5.3.3 Настройка рассылки уведомлений

Рассмотрим следующий фрагмент файла настройки уведомлений [4]:

notification_config {
  name: "alertmanager_test"
  email_config {
        email: "test@example.org"
}

aggregation_rule {
  notification_config_name: "alertmanager_test"
}

Его синтаксис вполне понятен: указано, что при наступлении определённого условия уведомления следует отправлять по электронной почте, следующему адресату: test@example.org.

В конфигурационный файл можно добавлять ссылки на файлы правил (по сути, они ничем не отличаются от файлов правил для сбора метрик, описанных выше). В правилах прописываются условия, при которых нужно отправлять уведомления.

4.5.3.3.1 Правила рассылки

Перейдите в директорию /root/prometheus-server, создайте и откройте для редактирования файл alerting.rules:

touch alerting.rules
vim alerting.rules

Файлы с правилами должны создаваться в yaml-формате.

В общем виде, синтаксис правила выглядит так:

ALERT <имя проверки>
  IF <параметр и его значение>
  FOR <период времени>
  WITH <набор меток>>
  SUMMARY "<краткое описание>"
  DESCRIPTION "<образец уведомления>"

4.5.3.3.2 Формат рассылки

Prometheus отправляет уведомления, используя формат JSON. Выглядят они примерно так:

{
  "version": "1",
  "status": "firing",
  "alert": [
     {
        "summary": "summary",
        "description": "description",
        "labels": {
           "alertname": "TestAlert"
        },
        "payload": {
           "activeSince": "2015-06-01T12:55:47.356+01:00",
           "alertingRule": "ALERT TestAlert IF absent(metric_name) FOR 0y WITH ",
           "generatorURL": "http://localhost:9090/graph#...",
           "value": "1"
        }
     }
  ]
}

4.5.3.3.3 Каналы рассылки

Можно создать несколько конфигурационных файлов и прописать в них настройки нескольких каналов уведомлений для рассылки, срабатывающей в различных случаях.

Сноски

[1]https://docs.openstack.org/image-guide/obtain-images.html
[2]AlertManager
[3]https://docs.openstack.org/glance/queens/user/statuses.html
[4]https://grafana.com/blog/2020/02/25/step-by-step-guide-to-setting-up-prometheus-alertmanager-with-slack-pagerduty-and-gmail/