Перейти к основному содержимому
Версия: 5.0

Самомониторинг

Самомониторинг - это модуль, включающий в себя набор дашбордов для централизованного контроля состояния кластера. Он позволяет своевременно выявлять и устранять отклонения в работе кластера и слоя сбора данных до возникновения сбоев.

Условные обозначения

  • SM_INSTALLER - директория, куда разархивируется установочный пакет Smart Monitor
  • USER - пользователь системы с правами администратора, обычно это admin
  • OS_HOME - домашняя директория OpenSearch, обычно это /app/opensearch/
  • OSD_HOME - домашняя директория OpenSearch Dashboards, обычно это /app/opensearch-dashboards/
  • LOGSTASH_HOME - домашняя директория Logstash, обычно это /app/logstash/
  • SBM_HOME - домашняя директория Smart Beat Manager, обычно это /app/smartBeatManager/
  • SB_HOME - домашняя директория Smart Beat, обычно это /app/smartBeat/

Полезные ссылки

Использование самомониторинга

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

Отслеживаемыми компонентами являются:

  • SM Data Storage: для мониторинга всех процессов, связанных с функционированием кластера
  • SM Data Collector: для мониторинга поступления событий и корректности их сбора
  • SM Master Node: для мониторинга состояния управляющих компонентов и координации работы кластера

Архитектура

При развертывании самомониторинга могут использоваться два различных типа архитектуры:

  1. развертывание на отдельно выделенный кластер
  2. развертывание внутри целевого кластера
Терминология

Целевой кластер - кластер для которого настраивается мониторинг метрик.

Архитектура I типа (Выделенный кластер)

Рекомендации

Рекомендуется размещать все компоненты сервера самомониторинга на одном узле, особенно для небольших и средних по размеру решений — это упрощает развертывание и сопровождение.

Минимальные характеристики сервера самомониторинга:

  • CPU: от 4 ядер

  • RAM: от 16 ГБ

  • Диск: от 100 ГБ

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

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

  • SM Data Storage - отвечает за хранение и полнотекстовый поиск собранных данных
  • SM Dashboards - для визуализаций на основе собранных данных
  • SM Data Collector - для получения данных от агентов целевого кластера и его опроса по REST API
  • SmartBeatManager - для управления агентами, установленных на целевом кластере

Преимущества

Когда сервер самомониторинга развернут на отдельном выделенном кластере, это позволяет достичь нескольких важных преимуществ:

  • Доступность в случае сбоя целевого кластера

    • Поскольку сервер самомониторинга работает независимо от целевого кластера, он остается доступным для обращения даже в случае, если целевой кластер перестанет функционировать по каким-либо причинам
  • Разгрузка ресурсов целевого кластера

    • Отдельное размещение сервера самомониторинга исключает нагрузку на ресурсы целевого кластера. Это особенно актуально, поскольку процессы сбора метрик и мониторинга сами по себе ресурсоемкие. Разделение инфраструктуры помогает избежать конкуренции за ресурсы и обеспечивает стабильную работу основного кластера

Недостатки

Несмотря на то, что схема с выносом сервера самомониторинга на отдельный кластер рекомендуется по умолчанию, она все же имеет ряд особенностей, которые следует учитывать:

  • Дополнительные ресурсы для инфраструктуры

    • Для развертывания отдельного кластера потребуется выделенный сервер или дополнительные вычислительные мощности. Это требует больше ресурсов и может привести к дополнительным расходам
  • Более сложная настройка и сопровождение

    • Для получения данных о самомониторинге с целевого кластера необходимо настроить механизм cross-cluster search (информацию по настройке можно найти в разделе полезные ссылки). Это добавляет шаги в процессе конфигурации и требует отдельного внимания при сопровождении системы

Архитектура II типа (Основной кластер)

При втором типе архитектуры, все вышеописанные действия происходят в рамках одного кластера, для которого и разворачивается самомониторинг.

Преимущества

  • Отсутствие необходимости в дополнительном сервере и его настройке

    • Не требуется выделять и настраивать дополнительные ресурсы для размещения сервера самомониторинга, что может уменьшить затраты на инфраструктуру и упростить процесс развертывания
  • Доступность данных самомониторинга на целевом кластере

    • Данные самомониторинга сразу становятся доступными внутри целевого кластера, что упрощает доступ и анализ данных для операторов и администраторов системы

Недостатки

  • Недоступность самомониторинга в случае сбоя целевого кластера

    • В случае аварийного сбоя целевого кластера, сервер самомониторинга также становится недоступным, что может затруднить мониторинг состояния и производительности системы.
  • Дополнительная нагрузка на целевой кластер

    • Эксплуатация самомониторинга на целевом кластере может повлечь за собой дополнительную нагрузку на ресурсы этого кластера, что может снизить производительность приложений или сервисов

Сбор данных

Собираемые самомониторингом данные можно разделить на 2 категории:

  1. Файлы журналов (логи)
  2. Метрики и прочая статистика

Сбор логов

Сбор логов происходит со всех узлов SM Data Storage, SM Data Collector и SM Master Node целевого кластера. На хосты целевого кластера устанавливаются и настраиваются агенты SmartBeat (информацию по установке можно найти в разделе полезные ссылки). При их настройке указывается адрес SmartBeatManager сервера самомониторинга, содержащий необходимые конфигурации для агентов сбора и отправки данных. Эти компоненты будут установлены и запущены на хостах кластера. В части сбора логов используется Filebeat, настроенный на сбор таких логов, как:

Для хостов с SM Data Storage:

  • логи кластера
  • логи sme
  • логи sme-re
  • логи job scheduler

Для хостов с SM Data Collector:

  • логи самого SM Data Collector
  • логи SM Data Collector пайплайнов

Сбор метрик

Для сбора метрик SM Data Storage используется http_poller input-плагин в SM Data Collector. Он позволяет с определенной переодичностью опрашивать указанные REST эндпоинты.

примечание

В шаблонах пайплайнов самомониторинга можно увидеть, что плагин http_poller может отправлять одинаковый запрос ко всем master-узлам целевого кластера, а затем использовать throttle filter-плагин для фильтрации дублирующихся ответов. Это необходимо для обеспечения получения данных даже в случае отказа одного или нескольких master-узлов, поскольку запросы будут выполнены к оставшимся работающим узлам.

Для сбора метрик с SM Data Collector используется Metricbeat.

Конфигурация

В комплект самомониторинга входят скрипты генерации пайплайнов, конфигураций агентов и включают автоматизацию других необходимых манипуляций:

  1. generate_pipelines.py: этот скрипт отвечает за генерацию пайплайнов и конфигураций агентов. Он автоматически создает необходимые элементы для сбора данных и настройки агентов

  2. generate_opensearch_configs.py: этот скрипт предназначен для генерации политик Index State Management (ISM), создания шаблонов индексов и копирования дашбордов. Он также может выполнять подключение к SM Data Storage и создавать соответствующие политики, шаблоны индексов и индексы при необходимости

  3. import_certs.sh: этот скрипт позволяет добавить сертификаты хостов в truststore. Это необходимо для обеспечения безопасного TLS-соединения при обращении SM Data Collector к целевым хостам по API

Файл конфигурации

Все упомянутые выше скрипты извлекают настройки из файла конфигурации config.ini.

Описание полей файла конфигурации приведены ниже в таблице:

ПолеПараметр
rest

Данные для загрузки ISM-политик, шаблонов индексов и создания индексов в SM Data Storage (для скрипта generate_opensearch_config.py):

  • user = admin — пользователь SM Data Storage (пароль будет запрошен скриптом интерактивно)
  • master_node = 127.0.0.1 — любой master-узел сервера самомониторинга для обращения по REST API
  • dashboards_node = 127.0.0.1 — адрес узла с SM Web
ism

Данные для настройки ISM-политики на индексы с данными самомониторинга:

  • patterns = clusterhealth-*, clusterlogs-*, sme_re_logs-*, job_scheduler_logs-*, job_scheduler_audit_logs-*, core_logs-*, clusterstats-*, logstashstats-*, logstashlogs-*, shardstats-*, indexstats-*, cluster_query_types-* — паттерны индексов
  • policy_id = selfmonitoring — ID политики
  • age_to_rollover = 7d — возраст индекса для rollover
  • primary_size_to_rollover = 10gb — размер первичного шарда для rollover
  • rollover_retry_count = 5 — количество повторов rollover
  • rollover_retry_backoff = constant — функция отката повторных попыток rollover
  • rollover_retry_delay = 5m — задержка между повторных попыток rollover
  • age_to_delete = 30d — возраст индекса для удаления
  • delete_retry_count = 3 — число повторных попыток удаления
  • delete_retry_backoff = linear — функция отката повторных попыток удаления
  • delete_retry_delay = 1h — задержка повторных попыток удаления
  • delete_timeout = 1h — таймаут попытки удаления
index_templates

Данные для создания шаблонов индексов с данными самомониторинга:

  • indexes = clusterhealth, clusterlogs, sme_re_logs, job_scheduler_logs, job_scheduler_audit_logs, core_logs, clusterstats, logstashstats, logstashlogs, shardstats, indexstats, cluster_query_types — список алиасов
  • routing_mode = warm — тип узла для аллокации
  • number_of_shards = 1 — количество первичных шардов
  • number_of_replicas = 0 — количество реплик шардов
poller

Данные для http_poller input-плагина:

  • request_period = 60 — частота опроса узлов целевого кластера (в секундах)
  • master_nodes = 172.16.0.1, 172.16.0.2, 172.16.0.3 — узлы целевого кластера с ролью master
  • user = admin — пользователь SM Data Storage под которым будут выполняться запросы по RestAPI к целевому кластеру
  • pwd_token = os_pwd — токен keystore для пароля пользователя SM Data Storage целевого кластера для выполнения запросов RestAPI
logstash

Параметры конфигурации SM Data Collector на сервере самомониторинга:

  • user = admin — пользователь под которым будет выполняться отправка в SM Data Storage сервера самомониторинга
  • pwd_token = os_pwd — токен keystore для пароля к пользователю SM Data Storage самомониторинга
  • data_nodes = 172.16.0.4, 172.16.0.5, 172.16.0.6 — список узлов с ролью data сервера самомониторинга для отправки на них данных
  • scripts_path = /app/logstash/config/conf.d/scripts/ — расположение директории script, содержащей вспомогательные скрипты для SM Data Collector пайплайнов
  • truststore_path = /app/logstash/config/truststore.jks — расположение truststore с импортированными сертификатами хостов целевого кластера
  • truststore_pwd_token = ts_pwd — токен keystore для пароля truststore
  • ca_cert_path = /app/logstash/config/ca-cert.pem — расположение сертификата ЦС сервера самомониторинга
  • node_cert_path = /app/logstash/config/node-cert.pem — расположение сертификата узла для SM Data Collector самомониторинга
  • node_key_path = /app/logstash/config/node-key.pem — расположение ключа к сертификату узла для SM Data Collector самомониторинга
beats

Параметры конфигурации агентов:

  • logstash_ips = 172.17.0.10 — адрес SM Data Collector’ов кластера самомониторинга на которые будет вестись отправка данных с целевого кластера
  • filebeat_selfmon_port = 5050 — порт filebeat, отправляющего логи SM Data Storage
  • filebeat_logstash_port = 5051 — порт filebeat, отправляющего логи SM Data Collector
  • metricbeat_logstash_port = 5052 — порт metricbeat, отправляющего метрики SM Data Collector
  • cert_path = /app/smartBeat/cert.pem — расположение сертификата SmartBeat
  • key_path = /app/smartBeat/key.pem — расположение ключа к сертификату SmartBeat
  • ca_cert_path = /app/smartBeat/ca-cert.pem — расположение сертификата ЦС сервера самомониторинга
  • smos_cluster_log_path = /app/logs/opensearch/sm-cluster.log — расположение логов кластера
  • sme_log_path = /app/logs/opensearch/sme.log — расположение логов SME
  • sme_re_log_path = /app/logs/sme-re/main.log — расположение логов SME-RE
  • job_scheduler_log_path = /app/logs/job_scheduler.log — расположение логов job scheduler
  • job_scheduler_audit_log_path = /app/logs/job_scheduler_audit.log — расположение логов аудита job scheduler
  • core_log_path = /app/logs/core.log — расположение логов Core
  • logstash_logs_path = /app/logs/logstash/*.log — расположение логов SM Data Collector

Установка

примечание

Компоненты SM Master Node, SM Data Storage, SM Data Collector и Smart Beat Manager (SBM) (информацию по установке можно найти в разделе полезные ссылки) должны быть установлены и корректно настроены до начала выполнения данной инструкции.

Компонент selfmonitoring входит в базовую поставку Smart Monitor и расположен в директории ${SM_INSTALLER}/utils/selfmonitoring/. Для запуска рекомендуется использовать Python, который также входит в состав установщика и расположен в директории ${SM_INSTALLER}/utils/python/bin/python3.

Заполнение конфигурации

Заполните конфигурационный файл config.ini реальными параметрами.

примечание

Бóльшая часть параметров, связанных с путями, настройками поллинга, ISM и шаблонами индексов, может оставаться без изменений. Изменения, если они требуются, касаются в основном IP-адресов. Тем не менее, перед использованием настоятельно рекомендуется внимательно просмотреть каждый параметр и убедиться, что значения указаны корректно и соответствуют текущим требованиям вашей системы.

Запуск скриптов

Генерация файлов для SM Data Storage

Если запустить скрипт без аргументов, то он сгенерирует файлы ISM-политик, шаблонов индексов и дашбордов, сохранив их в директорию ${SM_INSTALLER}/utils/selfmonitoring/generated_data:

${SM_INSTALLER}/utils/python/bin/python3 ${SM_INSTALLER}/utils/selfmonitoring/generate_opensearch_configs.py

Если запустить скрипт с аргументом --upload, то помимо генерации файлов, контент также загрузится в SM Data Storage самомониторинга (дополнительно создадутся и сами индексы):

${SM_INSTALLER}/utils/python/bin/python3 ${SM_INSTALLER}/utils/selfmonitoring/generate_opensearch_configs.py --upload
примечание

Вы можете сначала запустить скрипт без флага --upload, посмотреть результаты, и, убедившись в их корректности, загрузить их в SM Data Storage, выполнив повторный запуск скрипта с флагом --upload.

Генерация файлов для SM Data Collector и SmartBeatManager

Запустите скрипт ${SM_INSTALLER}/utils/selfmonitoring/generate_pipelines.py:

${SM_INSTALLER}/utils/python/bin/python3 ${SM_INSTALLER}/utils/selfmonitoring/generate_pipelines.py

После его запуска в той же директории ${SM_INSTALLER}/utils/selfmonitoring/generated_data появятся директории с данными для SM Data Collector и SmartBeatManager.

Импортирование сертификатов

Запустите скрипт ${SM_INSTALLER}/utils/selfmonitoring/import_certs.sh:

cd ${SM_INSTALLER}/utils/selfmonitoring/ && chmod +x import_certs.sh
sudo -u logstash ./import_certs.sh
Внимание

Важно выполнять запуск скрипта от имени пользователя logstash.

Ход выполнения скрипта:

  1. Создание нового truststore. При запуске скрипта будет запрошено дважды ввести новый пароль для создаваемого хранилища сертификатов. Этот пароль необходимо запомнить, так как он понадобится на следующих этапах
  2. Для каждого хоста будет выполнено подключение и получение сертификата. На вопрос Trust this certificate? [no]: необходимо отвечать yes
  3. Добавление паролей в keystore. Скрипт запросит на ввод пароли для ts_pwd и os_pwd. Для первого токена вводится пароль, который вы задали на первом шаге, для второго токена - пароль для пользователя SM Data Storage, логин которого вы указали в конфигурации config.ini

Если пароли пользователей для подключения к целевому кластеру и самомониторинга отличаются, а в конфигурации указан в поле logstash.pwd_token другой токен, то его надо добавить вручную на сервере с SM Data Collector самомониторинга с помощью команды:

sudo -u logstash ${LOGSTASH_HOME}/bin/logstash-keystore add <TOKEN_NAME>
примечание
  • Если на момент запуска скрипта на SM Data Collector уже был создан truststore, по пути указанному в конфигурации, то скрипт единожды запросит у вас его текущий пароль

  • Если на момент запуска скрипта на SM Data Collector не был инициализирован keystore, вы получите сообщение The keystore password is not set... Continue without password protection on the keystore? [y/N]. Ответьте y. Если keystore был инициализирован и на нем был задан пароль, то скрипт запросит его ввод. Если же пароль на нем не был задан, то дополнительно вводить ничего не потребуется

Размещение сгенерированных файлов

После предыдущих шагов в директории ${SM_INSTALLER}/utils/selfmonitoring/generated_data будут находится все необходимые файлы (готовая сборка). Директории, упомянутые ниже, будут указаны относительно нее, исключая случаи, когда указан абсолютный путь.

Настройка SM Data Storage

Создайте ISM-политику и шаблоны индексов на основе данных в директориях ism и index_templates соответственно. Создайте индексы.

примечание

Если вы загружали конфигурации SM Data Storage в автоматическом режиме (запускали скрипт generate_opensearch_configs.py c флагом --upload), то пропустите этот шаг

Настройка SM Data Collector

  1. Перенесите пайплайны из директории ${SM_INSTALLER}/utils/selfmonitoring/generated_data/logstash/pipelines/ в ${LOGSTASH_HOME}/config/conf.d/
  2. Перенесите скрипты из директории ${SM_INSTALLER}/utils/selfmonitoring/generated_data/logstash/scripts/ в директорию, указанную в конфигурации в параметре logstash.scripts_path (по умолчанию ${LOGSTASH_HOME}/config/conf.d/scripts/)
  3. Добавьте содержимое файла pipelines.yml в ${LOGSTASH_HOME}/config/pipelines.yml
  4. Измените владельца перенесенных файлов

После проделанных шагов перезапустите сервис SM Data Collector:

sudo chown -R logstash:logstash ${LOGSTASH_HOME}/
sudo systemctl restart logstash.service

Настройка SmartBeatManager

  1. Перенесите содержимое директории ${SM_INSTALLER}/utils/selfmonitoring/generated_data/sbm в ${SBM_HOME}/apps/

  2. Скачайте архивы с filebeat и metricbeat (при возникновении затруднений с загрузкой рекомендуем обратиться в техническую поддержку), поместите их в директорию ${SBM_HOME}/binaries/

  3. Отредактируйте файл ${SBM_HOME}/etc/serverclasses.yml. Добавьте в него группы linux_selfmon и linux_selfmon_logstash со следующим содержимым:

groups:
- name: linux_selfmon
filters:
- "<IP 1-го узла opensearch>"
- "<IP 2-го узла opensearch>"
...
- "<IP N-го узла opensearch>"
apps:
- filebeat_selfmon
binaries:
- filebeat-oss-8.9.2-linux-x86_64.tar.gz

- name: linux_selfmon_logstash
filters:
- "<IP 1-го logstash>"
- "<IP 2-го logstash>"
...
- "<IP N-го logstash>"
apps:
- filebeat_logstash
- metricbeat_logstash
binaries:
- filebeat-oss-8.9.2-linux-x86_64.tar.gz
- metricbeat-oss-8.9.2-linux-x86_64.tar.gz
Внимание

Обратите внимание на разделы filters и binaries. В filters для первой группы необходимо указать IP-адреса всех узлов целевого кластера, а для второй - IP-адреса всех logstash'ей целевого кластера. В разделах binaries проверьте что имена архивов совпадают с теми, что вы загрузили в директорию ${SBM_HOME}/binaries/.

После проделанных шагов перезапустите сервис SmartBeatManager:

sudo systemctl restart smartBeatManager.service

Добавление дашбордов

примечание

Необходимо установить SmartBeat (информацию по установке можно найти в разделе полезные ссылки) на все узлы SM Data Collector, SM Data Storage и SM Master Node целевого кластера. В качестве сервера для SmartBeatManager следует указать SBM сервера самомониторинга.

  1. В веб-интерфейсе сервера самомониторинга перейдите в раздел Дашборды (Навигационное меню - Основное - Дашборды) и создайте новые дашборды используя содержимое json-файлов в директории dashboards
  2. Обновите параметры фильтров выбора узлов кластера в дашбордах согласно актуальным данным
  3. В разделе Настройка модулей перейдите в пункт Шаблоны индексов (Навигационное меню - Параметры системы - Настройки модулей - Шаблоны настроек индексов) и создайте шаблоны, аналогичные алиасам индексов (clusterstats, clusterhealth, и т.д.)

После данного этапа установку самомониторинга можно считать завершенной.

к сведению

При реализации архитектуры с отдельным сервером самомониторинга рекомендуется настроить cross-cluster search (информацию по настройке можно найти в разделе полезные ссылки) для обращения с целевого кластера.