Руководство по установке#
Системные требования#
Сервис |
Версия |
Обязательность |
Комментарий |
|---|---|---|---|
СУБД PostgreSQL (рекомендуется Platform V Pangolin SE (PSQ)) |
Обязательно |
Хранение настроек модулей компонента и обнаруженных событий по метрикам |
|
Apache Kafka (рекомендуется Platform V Corax) |
Обязательно |
Событийный обмен сообщениями между модулями компонента |
|
Java Virtual Machine (OpenJDK) |
1.8.x |
Обязательно |
Окружение для работы модулей компонента |
ОС Linux «Aльт 8 СП» / RHEL 7 |
Обязательно |
ОС контейнеров для запуска модулей компонента |
|
Среда виртуализации Kubernetes / Red Hat OpenShift |
Обязательно |
Платформа контейнеризации для запуска компонентов сервиса |
|
Platform V Synapse Service Mesh (SSM) (Istio) |
Обязательно |
Сервис интеграции микросервисов в облаке |
|
Компонент Abyss (LGDB), входящий в состав Platform V Monitor (OPM) |
4.0+ |
Обязательно |
Управление проектами, получение метрик, авторизация пользователей |
Компонент Indicator (INDA), входящий в состав Platform V Monitor (OPM) |
4.1+ |
Обязательно |
Интерфейс управления Alert Manager |
Компонент Unimon (MONA), входящий в состав Platform V Monitor (OPM) |
Опционально |
Сбор метрик самомониторинга модулей компонента |
|
Компонент Журналирование (LOGA), входящий в состав Platform V Monitor (OPM) |
Опционально |
Сбор логов модулей компонента |
|
OIDC провайдер (рекомендуется Platform V IAM SE (IAM)) |
Обязательно |
Аутентификация пользователей |
|
Platform V Audit SE (AUD) |
4.0+ |
Опционально |
Использование аудита в промышленных средах является обязательным |
Platform V One-Time-Token (OTT) |
Опционально |
Подписание запросов к Platform V Audit SE (AUD) |
|
Сервер системы контроля версий git (рекомендуется GitLab CE) |
Опционально |
Хранение конфигураций при автоматизированной установке |
|
Platform V DevOps Tools (DOT) |
Опционально |
Инструмент автоматизированной установки |
Инструмент установки#
Установка дистрибутива производится с использованием одного из вариантов:
Ручная установка с использованием инструмента установки Platform V Monitor (OPM), расположенного в дистрибутиве по пути package/bh/installer/deploy-pvm.zip (инструкция по его использованию находится внутри архива)
Автоматизированная установка (опционально) компонентом Deploy tools в составе Platform V DevOps Tools (DOT) версии не ниже release/D-01.039.049-886
Среда контейнеризации#
Для установки компонентов сервиса в рекомендуемой конфигурации требуется наличие двух (в раздельных георезервированных ЦОД) собственных namespace в среде контейнеризации Kubernetes или OpenShift (опционально) с одинаковыми квотами и следующими пререквизитами:
Подключен Platform V Synapse Service Mesh (SSM) (Istio)
Заполнен файл multiClusters.json в common репозитории с указанием обоих кластеров, для каждого из которых обязательно заданы (названия одинаковы для всех поддерживаемых сред контейнеризации):
openshiftCluster - адрес для API запросов к кластеру
openshiftProjectName - название namespace
openshiftSATokenCred - имя credential с типом Secret Text, в котором сохранен токен Service Account для данного namespace с ролью edit
openshiftAppsDomain - домен для Ingress (в формате apps.
. .xxxx.ru) alrt.k8s.clusters.current - название текущего кластера для идентификации внутри Alert Manager
Создан секрет с типом «Image Pull Secret», содержащий логин и пароль для загрузки образов из registry
Образы контейнеров#
Для работы Platform V Monitor Alert Manager (ALRT) требуется наличие в registry следующих образов контейнеров:
Образы контейнеров сервисов компонента. Должны быть собраны из дистрибутива с использованием одного из базовых образов с OpenJDK 1.8:
На базе ALT Linux:
alt-sp8/openjdk-1.8.0:v0.4.10На базе Red Hat Enterprise Linux:
redhat-openjdk-18/openjdk18-openshift:1.8-30(опционально)
Образы для использования на ingress/egress
Образ Nginx. Инструкция по сборке расположена в дистрибутиве по пути
package/bh/installer/images/nginxОбраз Envoy, предоставляемый Platform V Synapse Service Mesh (SSM)
Образ sidecar OTT, предоставляемый Platform V One-Time-Token (OTT)
Образ FluentBit для отправки логов, предоставляемый компонентом Журналирование (LOGA) в составе Platform V Monitor (OPM)
Platform V Pangolin SE (PSQ)#
Для работы компонентов сервиса требуется внешняя база данных Platform V Pangolin SE (PSQ) со следующими пререквизитами:
Версия 4.4.0+ (ядро 11.12+) в конфигурации cluster-patroni-etcd-pgbouncer
Минимальные требования к аппаратным ресурсам (CPU/MEM/HDD) - 4/16/200 на каждую из реплик
Наличие в одной базе данных раздельных схем (названия схем могут быть настроены в файле conf/custom_property.conf.yml в репозитории настроек компонента), настроенных согласно рекомендациям Platform V Pangolin SE:
almgr_alertingalmgr_workeralmgr_registraralmgr_notification
Наличие двух пользователей:
С ролью as_admin для использования в процессе установки для применения миграций
C ограниченной ролью as_TUZ для использования в процессе работы с БД из приложения
На pgbouncer настроено подключение клиентов с использованием TLS в режиме verify-ca или verify-full
Apache Kafka#
Для работы компонентов сервиса требуется георезервированный кластер Apache Kafka (выделенный на слой core Platform V Monitor) со следующими пререквизитами:
Минимальные требования к аппаратным ресурсам (CPU/MEM/HDD):
4/8/200 на каждую из 3 реплик (+ 3 zookeeper) в тестовых средах
8/16/400 на каждую из 6 реплик (+ 5 zookeeper, георезервированная схема) в промышленных средах
Подключение с использованием TLS и авторизацией (ACL) по сертификатам
Наличие сертификата, который будет использоваться для создания topic
Наличие следующих credentials (имена могут быть изменены в environment.json в common репозитории в блоке credentials) с типом Secret File, содержащих файлы в формате pem
gateway_client_cer - клиентский сертификат с цепочкой
gateway_client_key - клиентский приватный ключ в незашифрованном виде
gateway_client_keystore - цепочка доверенных сертификатов (при наличии в файле нескольких цепочек будет применена только первая)
На кластере Kafka должны быть созданы следующие ACL
Resource type
Resource name
Principal
Host
Operation
Permission type
TOPIC
*
DN сертификата
*
CREATE
ALLOW
TOPIC
*
DN сертификата
*
ALTER
ALLOW
TOPIC
*
DN сертификата
*
DESCRIBE
ALLOW
TOPIC
*
DN сертификата
*
DESCRIBE_CONFIGS
ALLOW
CLUSTER
kafka-cluster
DN сертификата
*
ALTER
ALLOW
В некоторых случаях отсутствует возможность получения прав на CLUSTER (последняя строка выше). В таком случае необходимо отключить создание ACL при создании topic (см. ниже в «Конфигурация conf/inventory/inventory») и ручное назначение прав для клиентского сертификата, который будет использоваться приложением:
Resource type
Resource name
Principal
Host
Operation
Permission type
GROUP
*
DN сертификата
*
READ
ALLOW
TOPIC
almgr.*
DN сертификата
*
READ
ALLOW
TOPIC
almgr.*
DN сертификата
*
DESCRIBE
ALLOW
TOPIC
almgr.*
DN сертификата
*
WRITE
ALLOW
Настроено расширение для инструмента развертывания для автоматического создания topic:
Создать git-репозиторий в системе контроля версий
Архив с исходный кодом расширения и инструкцией по настройке извлечь из дистрибутива по пути package/bh/installer/alert-manager-pipeline.zip
Загрузить расширение и настроить инструмент развертывания в соответствии с инструкцией из файла README.MD в корне распакованного архива
Необходимо настроить параметры
replica.fetch.max.bytesиmessage.max.bytesна стороне брокеров в значение, большее или равное значению в параметреalmgr.kafka.topic.all.max-message-bytes
TLS Сертификаты#
Для работы компонентов сервиса требуется наличие по следующим путям (могут быть настроены при необходимости) в common репозитории следующих сертификатов:
ansible/files/ssl/ca.pem - цепочка корневых сертификатов доверенного центра в формате .pem;
ansible/files/ssl/keystore.jks - набор ключей и сертификатов Alert Manager;
Клиентские ключ и сертификат, подписанный доверенным центром;
Серверные ключ и сертификат, подписанный доверенным центром;
ansible/files/ott/ott_service_truststore.p12 - набор доверенных сертификатов OTT;
ansible/files/ott/almgr.p12 - клиентские ключ и сертификат OTT для соответствующего module.id.
Интеграции с сервисами Platform V Monitor и внешними системами#
На стороне Abyss должен быть выпушен API ключ для пользователя с правами на чтение всех аналитических индексов
Наличие доменной ТУЗ (Технической Учетной Записи) с доступом в каталог пользователей LDAP (Active Directory)
Наличие ТУЗ на почтовом сервере с возможностью отправки электронной почты
Установка#
Конфигурация параметров среды#
Конфигурация subsystems.json#
"ALMGR": {
"fpi_name": "almgr",
"fpType": "bts",
"groupId": "xxx_PROD.CI90000314_alrt",
"artifactId": "ALRT",
"versionFilter": "D-*"
}
Конфигурация secret.yml и _passwords.conf#
В дистрибутиве по пути conf/config/secrets лежат шаблоны для файлов secret.yml и _passwords.conf с комментариями
Файл |
Опция |
Значение |
|---|---|---|
secret.yml |
|
Логин пользователя БД с ролью as_admin для выполнения миграций |
|
Пароль пользователя из |
|
_passwords.conf |
|
Логин пользователя БД с ролью as_TUZ для работы приложения |
|
Пароль пользователя из |
|
|
API ключ для доступа к Abyss |
|
|
Пароль от хранилища ключевых пар Alert Manager |
|
|
Пароль от хранилища доверенных сертификатов ОТТ |
|
|
Пароль от хранилища ключевой пары ОТТ для модуля |
|
|
Логин для подключения к сервису авторизации |
|
|
Пароль пользователя из |
|
|
Логин для подключения каталогу пользователей LDAP |
|
|
Пароль пользователя из |
|
|
Логин для подключения к почтовому серверу по SMTP |
|
|
Пароль пользователя из |
Конфигурация параметров компонента#
При использовании инструмента ручной установки Platform V Monitor (OPM) необходимо шаблоны файлов конфигурации из дистрибутива по пути package/conf поместить в директорию инструмента по пути ansible/config/alrt/VERSION/fp_repo/R1/conf/
При использовании Platform V DevOps Tools (DOT) необходимо запустить шаг установки MIGRATION_FP_CONF, который автоматически смигрирует конфигурационные файлы в репозиторий настроек компонента
Конфигурация conf/custom_property.conf.yml#
В опции almgr.pipe.jdbc.url необходимо указать JDBC url, который будет использоваться для подключения к БД для выполнения миграций
Конфигурация conf/inventory/inventory#
В секции [kafka:vars] необходимо заполнить следующие переменные
listener_port - порт для подключения с TLS к брокерам Kafka
mtls_dn - DN клиентского сертификата Alert Manager, для которого будут созданы ACL. Или acl_mode=false для отключения автоматического создания ACL
В секции [kafka] необходимо перечислить список хостов брокеров
Основные настройки в конфигурационных файлах компонента#
Во всех файлах настройки с именами almgr.ose.* применимы для всех поддерживаемых сред контейнеризации.
almgr.all.conf#
Параметр |
Описание |
|---|---|
|
Путь до registry, в котором расположены собранные образы контейнеров |
|
Название секрета с данными для получения образов из registry |
|
Список (через запятую) имен всех кластеров из multiClusters.json |
|
Список (через запятую) пар хост:порт серверов БД |
|
Имя базы данных |
|
Используется ли подключение к БД через PgBouncer |
|
Адрес для подключения к API Координатора Abyss |
|
Путь до Json Web Keys (JWK) от Identity Provider |
|
Хост JWK |
|
Порт JWK |
|
Имя хоста для подключения к компоненту авторизации в составе LGDB |
|
Порт для |
|
Хост Platform V Audit SE |
Значение по умолчанию для настройки almgr.all.spec.template.spec.securityContext.runAsUser установлено для работы
в среде контейнеризации Kubernetes. При исполнении в OpenShift необходимо изменить значение параметра на пустое.
almgr.certs.all.conf#
Параметр |
Описание |
|---|---|
|
Alias клиентской ключевой пары в JKS |
|
Alias серверной ключевой пары в JKS |
almgr.logger.all.conf#
Параметр |
Описание |
|---|---|
|
Имя тенанта для Logger |
|
Список (через запятую) хост:порт серверов Kafka Журналирования (порт должен совпадать с портом Kafka Alert Manager) |
|
Имя topic для отправки событий в Журналирование |
|
Хост для отправки трассировки в формате Zipkin |
almgr.certs.all.conf#
Параметр |
Описание |
|---|---|
|
Название namespace контрольной панели Istio |
|
Адрес для discovery Istio |
|
Хост/ip DNS-сервера среды контейнеризации |
|
module.id для Platform V One-Time-Token |
|
Список (разделенный запятой) хостов Platform V One-Time-Token |
|
Alias приватного ключа в хранилище |
|
Alias доверенного сертификата |
|
Название георезервированного (shared) Route |
|
Маска разрешенных доменов для исходящих TLS взаимодействий |
|
Порт LDAPs |
|
Порт SMTP сервера |
almgr-notification.conf#
Параметр |
Описание |
|---|---|
|
Хост LDAP сервера |
|
Корневой домен для поиска в LDAP |
|
Хост SMTP сервера |
|
Адрес, с которого будут отправляться письма (должен быть доступен ТУЗ) |
|
Feature-toggle для разрешения добавления получателей не из LDAP |
almgr.istio.all.conf#
При использовании георезервированной схемы должен быть указан shared Route в параметре
almgr.ose.istio.ingress.geo.route.spec.host, а на балансировщике для него настроен health-check
по пути https://ROUTE-FQDN/healthz
Настройки по умолчанию в файле almgr.istio.all.conf установлены для работы в среде контейнеризации Kubernetes. При исполнении в OpenShift необходимо изменить значения следующих параметров:
almgr.ose.istio.common.dns-resolver = dns-default.openshift-dns.svc.cluster.local
almgr.ose.istio.common.ott.envoy-filter.transport-api-version =
almgr.ose.istio.egress.deployment.spec.template.spec.containers.istio-proxy.env.jwt-policy = first-party-jwt
Установка сервиса#
После выполнения всех пререквизитов и настройки конфигурационных файлов можно запускать установку сервиса в ручном режиме или автоматизированном (опционально) с использованием Platform V DevOps Tools (DOT).
Ручная установка#
Для ручной установки необходимо:
Запустить вручную точку расширения для создания topic Kafka в соответствии с ее инструкцией
Настроить инструмент установки Platform V Monitor в соответствии с его инструкцией, а затем выполнить в консоли следующие команды:
cd ansible; ./deploy-<id_дистрибутива>.sh
Установка с использованием DevOps Tools#
Для автоматизированной установки с использованием Platform V DevOps Tools необходимо запустить установку со
следующими шагами (шаги с названиями OPENSHIFT_* применимы для всех поддерживаемых сред контейнеризации):
DB_UPDATEALMGR_KAFKAOPENSHIFT_INGRESS_EGRESS_DEPLOYOPENSHIFT_DEPLOY
Подключение UI в Indicator#
Все последующие действия выполняются через пользовательский интерфейс Platform V Monitor Indicator (INDA) под пользователем, имеющим доступ к настройкам Indicator. После выполнения данных действий в боковом меню появятся пункты для Alert Manager и Notification Manager
Активация плагинов#
В меню Configuration -> Plugins находим плагины «Alert Manager» и «Notification Manager»
Заходим в каждый из них и включаем их кнопкой «Enable»
Создание Datasources#
В меню Configuration -> Data Sources создаем два подключения «Datasource Proxy ALMGR» и «Datasource Proxy Notification ALMGR» через кнопку «Add data source»
Заполняем поля следующим образом:
В «URL» указываем адрес в зависимости от настраиваемого источника: http://SHARED_ROUTE_FQDN/alerting/api/v1/ для «ALMGR» и http://SHARED_ROUTE_FQDN/notification/api/v1/ для «Notification ALMGR»
В качестве SHARED_ROUTE_FQDN указывается адрес георезервированного Route (alrt-route-ingress-geo) в namespace Alert Manager в среде контейнеризации. При типовой конфигурации имеет вид almgr-env.env-apps.ocp-geo.domain.xxxx.ru (например, almgr-stable.dev-apps.ocp-geo.sssss.xxxx.ru). В качестве протокола указывается http, т.к. это необходимо для маршрутизации запросов через Egress в namespace Indicator
«Forward OAuth Identity» - включено
На тестовых средах может потребоваться включение «Skip TLS Verify»
После нажатия «Save&Test» проверка подключения к источнику должна пройти успешно
Возвращаемся в настройки плагинов и выбираем для каждого из них соответствующий источник, сохраняем
Обновление#
Обновление 4.0.0 -> 4.1.0#
Из-за изменений в инструментах установки в файл conf/inventory/inventory необходимо добавить следующий блок:
[local]
localhost ansible_connection=local
[hosts:children]
local
Необходимо выпустить API ключ для Abyss (см. «Интеграции с сервисами Platform V Monitor и внешними системами») и внести его в файл _passwords.conf
После обновления конфигурационных файлов
Настроить discovery адрес Istio и имя секрета с учетными данными для получения образов
Настроить хост для отправки трассировки в формате Zipkin
При необходимости выполнить настройки в файлах almgr.all.conf и almgr.istio.all.conf
Изменить значение параметра с именем текущего кластера на новое значение по умолчанию
almgr.geo.clusters.current = ${alrt.k8s.clusters.current}
Текущая версия осуществляет миграцию пользователей в модуле notification на новый формат. Перед запуском процесса установки рекомендуется сделать резервную копию со схемы модуля в базе данных
Текущая версия из-за обновления механизмов георезервирования не поддерживает rolling upgrade. Необходимо остановить реплики всех сервисов в обоих кластерах
Запустить установку сервиса со всеми шагами
Обновление 4.1.0 -> 4.2.0#
Обновить значение
almgr.kafka.topic.all.max-message-bytesВыполнить пункт 5 из раздела Apache Kafka
Удаление#
Для полного удаления сервиса или одного из его георезервированных плеч необходимо удалить из соответствующих namespace
в среде контейнерации все манифесты с меткой SUBSYSTEM в значении, равном ключу в файле subsystems.json.
Для удаления всех связанных данных необходимо:
При использовании выделенных базы данных и Apache Kafka удалить связанные с ними виртуальные машины
При использовании коммунальных ресурсов:
В базе данных удалить настроенные в пререквизитах схемы и пользователей
На стороне Apache Kafka удалить все topic, имена которых начинаются с
almgr.*, а также ACL, созданные в пререквизитах
Проверка работоспособности#
Для проверки работоспособности необходимо убедиться в том, что процесс установки завершился успешно и все реплики сервиса полностью запущены. После чего необходимо зайти в интерфейс Indicator и перейти сначала на вкладку Alert Manager, затем на Notification Manager. В обоих случаях страница должна успешно открыться без каких-либо ошибок.
Для проверки работоспособности механизмов безопасности необходимо:
Попробовать обратиться напрямую к API компонента без использования OAuth 2.0 через браузер по адресу http://ROUTE_FQDN/alerting/api/v1/environment. В ответ должен быть получен json с кодом (
status) 401 и текстом ошибки (message) «Full authentication is required to access this resource»На любой из страниц пользовательского интерфейса (например, «Правила отклонений») проверить, что в поле «Проект» отображаются только те проекты, которые действительно доступны пользователю, под которым аутентифицированы
Выполнить любое действие, приводящее к изменению настроек (например, создать правило отклонений), и проверить наличие в Platform V Audit SE соответствующего события и соответствие значений полей в нем заданным при выполнении действия
Для проверки взаимодействия с внешними системами с использованием TLS необходимо проверить логи контейнера
istio-proxyв podalrt-egress-.... Все обращения должны идти на порты с включенным TLS (например,outbound|443||service.external.host). Если запрос идет на хостalmgr-egress-tls-sni-proxy.local, то необходимо проверить аналогичным образом логи контейнераsni-proxy(например,service.external.host (10.53.95.182:443))Для проверки взаимодействия с использованием mTLS можно заменить ключевую пару или список доверенных сертификатов для проверки отправки клиентского сертификата или валидации серверного, соответственно. Изменения выполняются в конфигурационных файлах среды и требуют переустановки модулей компонента. При запуске на измененных сертификатах при попытке взаимодействия должна возникать соответствующая ошибка, которая будет отображена в логах.
Откат#
Для отката сервиса на предыдущую версию необходимо остановить все реплики всех сервисов на текущей версии, после чего запустить процесс установки для дистрибутива предыдущей версии на соответствующей ему версии инструмента установки.
В случае возникновения конфликтов с манифестами среды контейнеризации требуется осуществить очистку namespace и повторно запустить установку предыдущей версии дистрибутива.
Часто встречающиеся проблемы и пути их устранения#
Не во всех случаях в инструменте установки присутствует глобальная переменная global.multiClusters.currentCluster, что приводит к невозможности развертывания. В такой ситуации возможна ее временная замена на namespace в параметре almgr.geo.clusters.current с внесением соответствующих изменений в параметре almgr.geo.clusters.list.
Чек-лист валидации установки#
Для полноценной установки Alert Manager все этапы работы инструмента установки должны завершиться успешно.