Руководство по установке клиентской части#

Это руководство содержит названия переменных, которые применимы для различных сред контейнеризации, указанных в Системных требованиях.

Термины и определения#

Расшифровка терминов указана в общих документах на продукт.

Состав дистрибутива#

  1. Дистрибутив с бинарными файлами

Компонент дистрибутива

Описание

./package/bh/

содержит бинарные файлы приложения

./package/conf/k8s/base/unimon-agent/

содержит файлы с настройками для контейнеров unimon-agent

./package/conf/k8s/base/unimon-sender/

содержит файлы с настройками для контейнеров unimon-sender

  1. Дистрибутив с конфигурационными файлами:

Компонент дистрибутива

Описание

./package/conf/config/parameters/

содержит файлы с параметрами конфигурации с рекомендуемыми значениями

./package/conf/k8s/base/unimon-agent/

содержит файлы для развертывания unimon-agent

./package/conf/k8s/overrides/openshift/unimon-agent/

содержит файлы для развертывания unimon-agent в среде контейнеризации

./package/conf/k8s/base/unimon-sender/

содержит файлы для развертывания unimon-sender

./package/conf/k8s/overrides/openshift/unimon-sender/

содержит файлы для развертывания unimon-sender в среде контейнеризации

./package/conf/k8s/base/istio/

содержит файлы для развертывания и конфигурации istio

./package/conf/k8s/overrides/openshift/istio/

содержит файлы для развертывания и конфигурации istio

./package/conf/k8s/base/secrets/

cодержит файлы с шаблонами для формирования secret в среде контейнеризации

  1. Дистрибутив с документацией

Компонент дистрибутива

Описание

./documentation/documents

содержит файлы с документацией

./documentation/apis

содержит файлы с описанием API сервисов

Системные требования#

Внешние сервисы и окружение#

Сервис

Версия

Обязательность

Комментарий

Компонент Indicator (INDA) в составе продукта Platform V Monitor (OPM)

-

Опционально

Реализация UI компонента. Также сервис используется для отображения дашбородов системного и бизнес-мониторинга.

Компонент Журналирование (LOGA) в составе продукта Platform V Monitor (OPM)

-

Опционально

Набор сервисов и инструментов для сбора и отображения в Indicator логов и цепочек вызовов.

Apache Kafka (рекомендуется Platform V Corax)

-

Обязательно

Для внутренних коммуникаций сервис использует Platform V Corax. ZooKeeper отдельно не указан, т.к. Platform V Corax без него невозможна.

Среда контейнеризации Kubernetes / RedHat Open Shift

v1.21.0/v1.19.0+d856161

Обязательно

Сервис устанавливается в облачную инфраструктуру. Требуется наличие ISTIO.

Platform V One-Time-Token (OTT)

-

Опционально

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

Platform V Synapse Service Mesh (SSM)

-

Опционально

Сервис интеграции и оркестрации микросервисов в облаке

Компонент PACMAN (CFGA) в составе продукта Platform V Configuration

от 1.3

Опционально

Централизованный инструмент управления параметрами и конфигурациями

Компонент Журналирование (LOGP) в составе продукта Platform V Monitor (OPM)

-

Опционально

Централизованное хранение и поиск по журналам приложений

Java Virtual Machine JVM (Open JDK)

11.x

Обязательно

ОС Linux

от 8.2

Обязательно

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

Репозиторий

-

Опционально

VCS для хранения конфигураций рекомендуем GitLab

Platform V Devops Tools (DOT)

D-01.039.049-886

Опционально

Инструмент автоматической установки

Аппаратные требования указаны в документе «Требования к КТС».

Пре-реквизиты#

  1. Должны быть созданы сущности для хранения метрик в Abyss (проект, topic Kafka, задача для индексации).

  2. Подготовить окружение - проверить наличие или создать:

     * namespace с подключенным и настроенным проектом ISTIO;
     * ServiceAccount с именем и ролью prometheus, токеном prometheus-token (секрет с типом «[kubernetes.io/service-account-token](http://kubernetes.io/service-account-token)»);
     * ServiceAccount с именем и ролью  **admin**;	
    
  3. Сервис Unimon поддерживает гео-балансировку. Подробнее о настройке можно посмотреть в документации SberInfra, раздел Гео-балансировка.

  4. Проверить в файле installer/system/efs/config/parameters/ssl.conf корректность заполнения параметров для сертификатов Istio.

  5. Для применения конфигураций заданных через Pacman в namespace должен присутствовать Reloader.

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

Работа Unimon и Synapse

Unimon

Platform V Synapse Service Mesh

Взаимодействие

Особенности установки

R1, R2

1.1

функционирует без ingress/egress, то есть недоступны функции: использование платформенного журналирования, сбор инфраструктурных метрик и прием метрик от внешних источников, также недоступен сбор метрик по HTTPs

Установка выполняется по инструкции, но исключая использование playbook OPENSHIFT_INGRESS_EGRESS_DEPLOY. После установки необходимо вручную создать: egress-se-http-kubernetes и добавить в исключения порт broker Kafka - traffic.sidecar.istio.io/excludeOutboundPorts: '8080,8081,3000,443,9093'для unimon-sender

R1, R2

2.0

функционирует без ingress/egress, то есть недоступны функции: использование платформенного журналирования, сбор инфраструктурных метрик и прием метрик от внешних источников, также недоступен сбор метрик по HTTPs

Установка выполняется по инструкции, но исключая использование playbook OPENSHIFT_INGRESS_EGRESS_DEPLOY. После установки необходимо вручную создать: egress-se-http-kubernetes и egress-se-tcp-kafka

R3, R3.1 и далее

1.1

функционирует без ingress/egress, то есть недоступны функции: использование платформенного журналирования, сбор инфраструктурных метрик и прием метрик от внешних источников, также недоступен сбор метрик по HTTPs, не будет соединения с unimon-server (если он в другом namespace), то есть не работоспособен функционал по мультитенантности

Установка выполняется по инструкции, но исключая использование playbook OPENSHIFT_INGRESS_EGRESS_DEPLOY. После установки необходимо вручную создать: egress-se-http-kubernetes и добавить в исключения порт broker Kafka - traffic.sidecar.istio.io/excludeOutboundPorts: '8080,8081,3000,443,9093'для unimon-sender

R3, R3.1 и далее

2.0

штатно функционирует

нет

Установка#

Установка дистрибутива производится с использованием одного из вариантов:

  • Ручная установка без использования скриптов развертывания.

  • Ручная установка с использованием инструмента установки Platform V Monitor, расположенного в дистрибутиве по пути package/bh/installer/deploy-pvm.zip (инструкция по его использованию находится внутри архива)

  • Автоматическая установка (опционально) компонентом Deploy tools в составе Platform V DevOps Tools версии не ниже release/D-01.039.049-886

  • Автоматическая установка (опционально) через "агентский джоб" - этот вариант подходит для тех, кто не использует централизованный Pipeline CD.

Ручная установка без использования скриптов развертывания#

Для клиентов, которые по каким-либо причинам не могут воспользоваться Pipeline для установки Unimon, доступна установка сервиса вручную:

  1. Получить дистрибутив Unimon.

  2. Создать следующие служебные подключения для самомониторинга Unimon (с помощью UI Unimon для подключения или API Unimon):

  • unimon-sender;

  • prometheus-selfmonitoring;

  • infra-metic-unimon (если включен сбор инфраструктурных метрик).

  1. Создать secrets:

  • secret-opm-unimon;

  • secret-opm-unimon-client;

  • unimon-sender-kafka-certs - для Unimon-sender, в котором будут указаны сертификаты и пароли для доступа к Kafka;

  • unimon-logger-kafka-certs - для интеграции с сервисом Журналирование;

  • unimon-ott-certs - если подразумевается взаимодействие с Platform V One-Time-Token (OTT). При установке вручную в именовании необходимо проставить версию .${distrib.release.version}. Пример: unimon-agent-config.r4.

  1. Во всех файлах .yaml, расположенных в директориях unimon-agent, unimon-sender, заполнить значения переменных.
    Список обязательных параметров указан ниже в пункте Установка дистрибутива централизованным Pipeline CD. Описание всех параметров собрано в Справочник конфигов.

  2. Если namespace подключен к Istio и требуется выводить трафик через Deployment Egress необходимо:

  • создать secrets egressgateway-ca-certs и egressgateway-certs;

  • заполнить значения переменных для всех файлов .yaml из директории istio.

  1. В случае если, namespace подключен к Istio и НЕ требуется выводить трафик через Deployment Egress необходимо заполнить только файлы:

  • egress-se-http-kubernates.yaml;

  • egress-se-tcp-kafka.yaml. При отсутствии Egress не возможен сбор инфраструктурных метрик, взаимодействие с unimon-server и Журналирование.

  1. Далее необходимо установить все заполненные файлы .yaml в среду контейнеризации с помощью команды

oc apply -f <имя_файла.yaml>

Автоматическая установка (опционально) компонентом Deploy tools#

  1. Выполнить миграцию конфигов:

  • Выбрать SUBSYSTEM: OPM_UNIMON. Если выполняется одновременная установка Unimon с прикладным/технологическим сервисом, то в SUBSYSTEM нужно выбрать ваш прикладной/технологический сервис.

  • Выбрать COMPONENTS: OPM_UNIMON. Если выполняется одновременная установка Unimon с прикладным/технологическим сервисом, выбрать ваш прикладной/технологический сервис и UNIMON (необходимы дополнительные настройки SUBSYSTEM, для отображения в списке второго компонента).

  • Выбрать DISTRIB_VERSION: <последняя версия>.

  • Выбрать кластер в OSE_CLUSTERS, в который необходимо установить Unimon.

  • Выбрать версию платформы: branch R1.

  • Выбрать playbook MIGRATION_FP_CONF.

  • Нажать кнопку «Build».

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

Если требуется включить установку Platform V One-Time-Token (OTT), Журналирование, сбор инфраструктурных метрик или установку открытого роута, то необходимо в соответствующих параметрах указать значение true. По умолчанию эта функциональность отключена.

в файле conf/custom_property.conf.yml включить нужные параметры: Если требуется включить установку Platform V One-Time-Token (OTT), Журналирование, Журналирование LOGP (опциональная возможность включить один из сервисов журналирования) или сбор инфраструктурных метрик или установку открытого роута, то необходимо в соответсвующих параметрах указать значение true. По умолчанию эта функциональность отключена.

UNIMON_OTT_OSE_DEPLOY: false # Включить установку Platform V One-Time-Token (OTT), если необходимо.
UNIMON_LOGGER_PPRB_ENABLE: false # Включить установку Журналирование LOGP при необходимости.
UNIMON_LOGGER_EFS_ENABLE: false # Включить установку Журналирование при необходимости.
UNIMON_FEDERATE_METRICS_ENABLE: false # Включить сбор инфраструктурных метрик(true), по умолчанию сбор инфраструктурных метрик отключен(false). 
UNIMON_SENDER_HTTP_ROUTE_ENABLED: false # Включить установку открытого роута для unimon-sender, по умолчанию установка роута отключена.
UNIMON_GEO_BALANCING: false # Включить установку Route/Ingress в среде контейнеризации для геобалансировки

в файле conf/config/parameters/opm_unimon.unimon-agent.conf возможна настройка параметров (при необходимости)::

TENANT - тенант (пример - LOG)

Следующий параметр opm_unimon.unimon-agent.conf нужно выставить в значение true, если в namespace включен mTLS:

Параметр

Описание

Пример заполнения

unimon-agent.sidecar.mtls-mode.enabled

Включен ли mTLS в namespace

false

Следующий параметры opm_unimon.unimon-agent.conf необходимо дополнить:

Параметр

Описание

Пример заполнения

unimon-agent.sidecar.istio.exclude.outbound.ports

Порты, по которым собираются метрики

8080, 8081

Если планируется автономная работа, то есть без обращения к серверной части Unimon нужно:

  • unimon-agent.scraping.federate.unimonId - значение оставить пустым, если нужен сбор инфраструктурных метрик.

в файле conf/config/parameters/opm_unimon.unimon-sender.conf возможна настройка параметров (при необходимости):

kafka.topic - топик в который будет осуществляется отправка метрик
kafka.bootstrap.servers - список bootstrap - серверов Kafka для отправки метрик (пример - tkttt-pppp00075.vm.esrt.cloud.ssss.ru:9093,
tkttt-pppp00076.vm.esrt.cloud.ssss.ru:9093)
metadata.send.period.ms - настройка интервала отправки новопришедших метаданных метрик (или тех, что не удалось отправить в прошлый раз) в unimon-metadata
metadata.send.package.size - настройка количества метаданных метрик, передаваемых в одном пакете
metadata.expire.time.minutes - настройка интервала устаревания метаданных на unimon-sender в минутах (снова отправляются все накопленные за этот период метаданные, но с актуальным временем последнего появления)
log.send.metrics.cron.scheduler - настройка периодичности логирования сообщения о времени последней успешной отправке метрик в качестве значения - кроновское выражение
(пример -` `0`  `*/``1`  `* * * * один раз в минуту), по умолчанию отключен (значение` `"-"``)
metric.label.rn - указывается имя проекта, которое будет добавлено в метрики 
cache.kafka.topics.update.ms - настройка интервала обновления кэша топиков Kafka в мс
cache.filters.update.ms - настройка интервала обновления кеша фильтров в мс

Автономная работа - это работа клиентской части, которая не подразумевает обращение к серверной части Unimon. Неавтономная работа - подразумевает подключение клиентской части к серверной.

Если планируется автономная работа, то есть без обращения к серверной части Unimon нужно:

  • cache.instances.update.ms - выставить значение более 180 000 мс, для уменьшения количества ошибок в логах, связанных с неуспешными запросами к серверу.

  • unimon-agent.scraping.federate.unimonId - значение оставить пустым, если включен автономный режим работы в unimon-sender и нужен сбор инфраструктурных метрик.

  • unimon-sender.unimonId=unimon-sender - значение оставить пустым, если включен автономный режим работы в unimon-sender и нужен сбор метрик unimon-sender.

в файле conf/config/parameters/opm_unimon.sender.conf должны быть обязательно заполнены параметры:

Параметр

Описание

Пример заполнения

unimon.ingress.endpoint.hostname

Хост ingress namespace, в котором установлен unimon-server

unimon.ci02707148d43c3.aaaa.dev-gen.ssss.ssss.ru

unimon.ingress.url

url ingress серверного namespace

http://unimon.ci02707148d43c3.aaaa.dev-gen.ssss.ssss.ru

Если планируется автономная работа, то есть без обращения к серверной части Unimon нужно:

  • unimon.ingress.endpoint.hostname - оставить пустым значение по умолчанию (none)

  • unimon.ingress.url - оставить значение по умолчанию (none)

в файле conf/config/parameters/opm_unimon.all.conf должны быть обязательно заполнены параметры:

Параметр

Описание

Пример заполнения

logger.labels.standid

ID стенда logger

DEV

Следующие параметры opm_unimon.all.conf должны быть обязательно заполнены, если UNIMON_OTT_OSE_DEPLOY=true (включена установка ott), по умолчанию имеют значение none:

Параметр

Описание

Пример заполнения

EGRESS_OTT_HOSTS

Адреса хостов Platform V One-Time-Token (OTT)

[XX.XX.XX.XXX, XX.XX.XX.XXX]

EGRESS_OTT_ENDPOINTS

Адреса хостов Platform V One-Time-Token (OTT)

[address: XX.XX.XX.XXX, address: XX.XX.XX.XXX]

unimon.ose.ott.module.id

Идентификатор модуля для сервиса Platform V One-Time-Token (OTT)

unimon_dev

Следующие параметры opm_unimon.all.conf должны быть обязательно заполнены, если UNIMON_LOGGER_PPRB_ENABLE=true (включена установка Журналирование LOGP), по умолчанию имеют значение none:

Параметр

Описание

Пример заполнения

logger.pprb.host

Хост Журналирование

logger-endpoint-demo-http-ci00641491-idevgen-logger-dev.aaaa.dev-gen.aa.ssss.ru

logger.pprb.endpoint

Endpoint Журналирование

/logger-endpoint/v1/events

logger.pprb.port

Порт Журналирование

80

logger.pprb.vs.port

Порт, на который выходит трафик из egress

00

Следующие параметры opm_unimon.all.conf должны быть обязательно заполнены, если UNIMON_LOGGER_EFS_ENABLE: true (включена установка Журналирование), иначе оставить пустыми:

Параметр

Описание

Пример заполнения

logger.efs.kafka.bootstrap.servers

Cписок bootstrap - серверов Kafka для отправки логов

tktk-pppp00075.mm.eeee.cloud.ssss.ru:9093,tktk-pprb00076.mm.eeee.cloud.ssss.ru:9093

logger.efs.kafka.topic.name

Топик, в который будет осуществляется отправка логов

undefined

Следующие параметры opm_unimon.all.conf должны быть обязательно заполнены, если требуется геобалансировка, иначе оставить пустыми:

Параметр

Описание

Пример заполнения

istio.geo.route.balancer.host

FQDN геобалансировщика в unimon-geo-route.yaml(OSE)

unimon.dev-apps.ocp-geo.dddd.ssss.ru

istio.geo.ingress.balancer.host

FQDN геобалансировщика в ingress-geo.yaml(k8s)

unimon.dev-apps.ocp-geo.dddd.ssss.ru

istio.geo.ingress.sender.balancer.host

FQDN геобалансировщика в unimon-geo-sender-route.yaml для unimon-sender

unimon-sender.dev-apps.ocp-geo.dddd.ssss.ru

  1. Добавить глобалы в common-репозиторий (значения задать в соответствии с текущим стендом):

_passwords.conf:

  • пароли к хранилищам jks для ingress/egress:

ssl.ose.istio.keyStore.ingress.password=
ssl.ose.istio.keyStore.egress.password=
  • пароли к остальным хранилищам jks, в особенности от jks для kafka:

ssl.ose.keyStore.mq.password=
  • пароль от ключа для клиентского сертификата для kafka:

rdkafka.ssl.key.password=
  • пароли к хранилищам сертификатов Platform V One-Time-Token (OTT) (если используется ОТТ, иначе оставить пустыми)

unimon.ott.certStore.key.password=
unimon.ott.certStore.password=
unimon.ott.trustStore.password=

ssl.conf:

  • добавить параметры для istio:

ssl.ose.istio.keyStore.ingress.CertAlias=
ssl.ose.istio.keyStore.ingress.KeyStoreFromFile=ansible/files/ssl/ingress.pacman-tst-keystore.jks
ssl.ose.istio.keyStore.egress.CertAlias=
ssl.ose.istio.keyStore.egress.KeyStoreFromFile=ansible/files/ssl/egress.pacman-tst-keystore.jks
ssl.ose.istio.keyStore.RootCertAlias=root
ssl.ose.istio.keyStore.ingress.password=ssl.ose.istio.keyStore.ingress.password
ssl.ose.istio.keyStore.egress.password=ssl.ose.istio.keyStore.egress.password
  • добавить пароль от хранилища jks для сертификатов kafka (а так же для остальных сертификатов, используемых в среде контейнеризации, кроме istio и ott):

ssl.ose.keyStore.mq.password=ssl.ose.keyStore.mq.password - данный пароль должен быть заполнен в _passwords.conf среды
  • добавить месторасположение хранилища jks для сертификатов kafka (а так же для остальных сертификатов, используемых в среде контейнеризации, кроме istio и ott), а так же алиас сетрификата для kafka:

ssl.ose.keyStore.mq.keyStoreFromFile=ansible/files/ssl/kafka.jks
ssl.ose.keyStore.mq.CertAlias=

openShift.conf:

  • Параметры для указания места хранения docker-образов

registry=ddd.sw.sbc.space
registry_path=/sss/ci90000099_mona
  • Параметры для Platform V One-Time-Token (OTT) (если есть, иначе оставить пустыми)

global.ott.service.url=https://stub-host:stub-port/ott-service/rest/token
global.ott.grpc.port=/mnt/ott-uds-socket/ott.socket
global.ott.service.hosts="XX.XX.X.XX:XXXX,XX.XXX.XXX.XXX:XXXX"
global.ott.store.type=JKS
ssl.ose.ott.truststore.location=ansible/files/ssl/ott-keystore.jks
ssl.ose.ott.keystore.location=ansible/files/ssl/ott-truststore.jks
  • Параметры для logger

global.platform.logger.kafka.bootstrap.servers=${global.unimon-sender.kafka.bootstrap_servers}
global.platform.logger.kafka.topic=unimon.sender
global.platform.logger.kafka.security.protocol=SSL
  • Параметры для kafka

global.unimon-sender.kafka.bootstrap_servers=tktk-pprb00075.mm.eeee.cloud.ssss.ru:9093,tktk-pprb00076.mm.eeee.cloud.ssss.ru:9093,tktk-pprb00077.mm.eeee.cloud.ssss.ru:9093
global.platform.ose.kafka.ports=9093 (указать только одно значение, перечисление недопустимо)
global.unimon-sender.kafka.default.topic=unimon.Tengri
global.unimon-sender.kafka.ssl.enabled=true
  • Параметр для указания адреса Kubernetes

global.unimon-agent.kubernetes.address=XXX.XX.X.X
  • Параметр для задания минимального количества pod (реплик) приложения для стабильной работы (конфигурация PodDisruptionBudget). Можно указывать абсолютное значение, либо процент от количества реплик, указанных в deployment.

global.common.poddisruptionbudget.minAvailable=50%
  1. Создать следующие служебные подключения Unimon (с помощью UI для подключения или Api UniMon):

  • unimon-sender - для самомониторинга

  • prometheus-selfmonitoring - для самомониторинга

  • infra-metic-unimon (если включен сбор инфрастуктурных метрик).

  1. Выполнить установку дистрибутива Unimon в среде контейнеризации:

  • Выбрать SUBSYSTEM: OPM_UNIMON. Если выполняется одновременная установка Unimon с прикладным/технологическим сервисом, то в SUBSYSTEM нужно выбрать ваш прикладной/технологический сервис.

  • Выбрать COMPONENTS: OPM_UNIMON. Если выполняется одновременная установка Unimon с прикладным/технологическим сервисом, выбрать ваш прикладной/технологический сервис и UNIMON (необходимы дополнительные настройки SUBSYSTEM, для отображения в списке второго компонента).

  • Выбрать DISTRIB_VERSION: <последняя версия>.

  • Выбрать кластер в OSE_CLUSTERS, в который необходимо установить Unimon.

  • Выбрать версию платформы: branch R1.

  • Выбрать playbooks OPENSHIFT_DEPLOY, OPENSHIFT_INGRESS_EGRESS_DEPLOY, DB_UPDATE.

  • Нажать кнопку «Build».

  1. Опционально. Для того чтобы включить установку открытого route для unimon-sender (по умолчанию отключена), необходимо в репозитории конфигов (conf/custom_property.conf.yml) установить "UNIMON_SENDER_HTTP_ROUTE_ENABLED: true".

После установки Unimon, необходимо проверить наличие всех необходимых ServiceEntry. При отсутствии какого-либо - добавить вручную.

- egress-se-http-federate.yaml
- egress-se-http-kubernates.yaml
- egress-se-http-logger.yaml
- egress-se-http-server.yaml
- egress-se-tcp-kafka.yaml
- egress-se-tcp-ott.yaml

Автоматическая установка (опционально) через "агентский джоб"#

  1. Выполнить миграцию конфигов:

  • Выбрать SUBSYSTEM: OPM_UNIMON. Если выполняется одновременная установка Unimon с прикладным/технологическим сервисом, то в SUBSYSTEM нужно выбрать ваш прикладной/технологический сервис.

  • Выбрать COMPONENTS: OPM_UNIMON. Если выполняется одновременная установка Unimon с прикладным/технологическим сервисом, выбрать ваш прикладной/технологический сервис и UNIMON (необходимы дополнительные настройки SUBSYSTEM, для отображения в списке второго компонента).

  • Выбрать DISTRIB_VERSION: <последняя версия>.

  • Выбрать кластер в OSE_CLUSTERS, в который необходимо установить Unimon.

  • Выбрать версию платформы: branch R1.

  • Выбрать playbook MIGRATION_FP_CONF.

  • Нажать кнопку «Build».

  1. Создать следующие служебные подключения для самомониторинга Unimon (с помощью UI для подключения или Api UniMon):

  • Unimon-sender.

  • Prometheus-selfmonitoring.

  • Infra-metic-unimon (если включен сбор инфрастуктурных метрик).

  1. Выполнить установку дистрибутива Unimon в среде контейнеризации:

  • Выбрать SUBSYSTEM: OPM_UNIMON.

  • Выбрать COMPONENTS: OPM_UNIMON.

  • Выбрать DISTRIB_VERSION: <последняя версия>.

  • Выбрать кластер в OSE_CLUSTERS, в который необходимо установить Unimon.

  • Выбрать версию платформы: branch R1.

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

  • Заполнить DEPLOY_TO_OSE_NAMESPACE_MULTICLUSTER - указать параметры для переопределения мультикласера Пример:

{
  "openshiftCluster": "https://api.ift-efs1-ds.aa.ssss.ru:6443", адрес балансировщика кластера
  "openshiftSATokenCred": "test_secret_token", имя Credentials, который добавлен в Jenkins для деплоя
  "openshiftProjectName": "ci02707148-iift-efs1-ds-tsplk", имя Namespace в кластере, в котороый проводится установка
  "openshiftControlPlane": "ci02707148-iift-efs1-ds-control-panel-fl-20-iftts-efs",
  "openshiftRoutersFQDN": [
    "XX.XXX.XXX.XXX"
  ],
  "openshiftNewRoute": "test.apps.ift-efs1-ds.aa.ssss.ru", формула построения хоста роута для устанавливаемой АС
  "openshiftAppsDomain": "apps.ift-efs1-ds.aa.ssss.ru", адрес балансировщика *apps для кластера
  "openshiftWebConsole": "https://console-openshift-console.apps.ift-efs1-ds.aa.ssss.ru/k8s/cluster/projects", адрес web консоли кластера, без указания namespace
  "openshiftEnvoyImage": "registry.redhat.io/openshift-service-mesh/proxyv2-rhel8@sha256:320f5bd35c208e00005c01ce0e83c8f05276119f273e9f881da950fdfff59a13"
}
  • Заполнить DEPLOY_TO_OSE_NAMESPACE_FIELD - указать значения всех параметров для переопределения, список параметров указан выше в установке другим способом. Пример для opm_unimon.unimon-agent.conf:

{
  "fp_repo/conf/config/parameters/opm_unimon.unimon-agent.conf": {
    "unimon-agent.istio.exclude.outbound.ports": "8080,8081",
    "monitoring.imagePullSecrets.name": "nexus3",
    "unimon-agent.unimonId": "unimon-agent",
  }
}
  • Заполнить DEPLOY_TO_OSE_NAMESPACE_INCLUDE_OR_EXCLUDE_FILES - указать файлы для исключения или включения, например, если нужно исключить файлы ingress/egress.
    Пример:

{
  "exclude": [
    "distrib_repo/conf/openshift/ufs-sm-channel/istio/deployments/ingress/dc-ingress.yaml",
    "distrib_repo/conf/openshift/ufs-sm-channel/istio/deployments/egress/dc-egress.yaml"
  ]
}

Или например, если необходимо подгрузить сертификат и пароль извне (из credentials Jenkins) и использовать вместо размещенного в common-репозитории, нужно отключить штатное формирование и загрузку secret в среде контейнеризации:

{ 
	"exclude": [ 
	"distrib_repo/conf/k8s/base/secrets/unimon-client-passwords.yaml", 
	"distrib_repo/conf/k8s/base/secrets/unimon-logger-kafka-certs.yaml", 
	"distrib_repo/conf/k8s/base/secrets/unimon-sender-kafka-certs.yaml" 
	] 
}

Затем вручную сформировать список секретов и загрузить в среде контейнеризации через credentials в Jenkins.
Шаблоны для формирования secrets:

kind: Secret
apiVersion: v1
metadata:
  name: unimon-logger-kafka-certs.r4.1
type: Opaque
data:
  logger_private-key.pem: *****
  logger_cert.pem: *****
  logger_cacerts.cer: *****
kind: Secret
apiVersion: v1
metadata:
  name: secret-opm-unimon-client.r4.1
type: Opaque
data:
  jasypt_key: *****
  ssl.ose.keyStore.mq.password: *****
kind: Secret
apiVersion: v1
metadata:
  name: unimon-sender-kafka-certs.r4.1
type: Opaque
data:
  kafka.jks: *****
kind: Secret
apiVersion: v1
metadata:
  name: secret-opm-unimon.r4.1
data:
  rdkafka.ssl.key.password: *****
type: Opaque
  • Заполнить DEPLOY_TO_OSE_NAMESPACE_TOKEN - указать токен, который будет использоваться для авторизации в проект среды контейнеризации (например sha256~O2UHVGBDKbs4FKuZqOw8CbGlaIzq6VLVCNQXx0урeqs)

  • Выбрать playbooks OPENSHIFT_DEPLOY, OPENSHIFT_INGRESS_EGRESS_DEPLOY, DB_UPDATE.

  • Нажать кнопку «Build».

Примечание 1: для инсталляций в «коммунальные» namespace не использовать playbook OPENSHIFT_INGRESS_EGRESS_DEPLOY.

Примечание 2: если не используется Журналирование, egress-se-http-logger.yaml вручную устанавливать не следует.

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

Обновление#

Для Unimon доступно бесшовное обновление, то есть без остановки сервиса. Для обновления необходимо установить Unimon в тот же namespace, где установлена предыдущая версия (не ниже R3.2.1). Необходимые настройки сервиса будут осуществлены при установке дистрибутива через Jenkins.

Если версия, которую вы собираетесь обновить ниже R3.2.1 необходимо предварительно выполнить удаление ресурсов Unimon (с помощью DELETE на каждом ресурсе или командой в терминале: oc delete all,se,vs,dr -l CHANNEL=unimon):

Deployment  
Service  
DestinationRule  
EnvoyFilter  
ServiceEntry  
VirtualService  
Gateway  
Route 

При последующих обновлениях - дополнительных действий не требуется.

Информация об изменении конфигурационных параметров с предыдущей версии
opm_unimon.unimon-agent.conf

новые параметры:
#процент минимально доступных подов для конфигурации PodDisruptionBudget**
unimon-agent.ose.poddisruptionbudget.spec.minAvailable=${global.common.poddisruptionbudget.minAvailable}

opm_unimon.unimon-sender.conf

изменены значения:
unimon.ingress.url=none
unimon.ingress.endpoint.hostname=none
новые параметры:
#процент минимально доступных подов для конфигурации PodDisruptionBudget
unimon-sender.ose.poddisruptionbudget.spec.minAvailable=${global.common.poddisruptionbudget.minAvailable}

opm_unimon.all.conf

изменены значения:
logger.pprb.host=none
logger.pprb.endpoint=none
logger.pprb.port=none
EGRESS_OTT_HOSTS=none
EGRESS_OTT_ENDPOINTS=none
новые параметры:
unimon.ose.istio.envoy-image=${global.registry.url}/${global.envoy.image.registry.path}/proxyv2-rhel8@sha256:093f3b36b3977225fe11ba3e0cb30316243c86be1ae0b05cc51b849e8dd1e74e
fluent-bit-sidecar.ose.deployment.spec.template.spec.containers.image.registry=${global.registry.url}/${fluent-bit-sidecar.ose.deployment.spec.template.spec.containers.image.registryPath}/fluent-bit@sha256:04da83ed2af92600f7e0b4055d707c038c6e549ed14dba6372b0a2a50ddae32d
fluent-bit-sidecar.ose.deployment.spec.template.spec.containers.image.registryPath=efs/ci01976100/ci02698091_ulogger
ott-sidecar.ose.deployment.spec.template.spec.containers.ott-sidecar.image=${global.registry.url}/${global.ott.agent.image.registry.path}/ott/ott-client-api-v2@sha256:05b3d2530abdb9e27b6862793a939c87c3a72d09dde6656c4f192f6d408d7088
#флаг поставки в Гостех, предполагаемое значение: unimon.common.solution=gostech
unimon.common.solution=
удалено:
istio-envoy-image=${global.ufs.synapse.envoy.image}
logger.fluent-bit.docker.image.path=efs/ci01976100/ci02698091_ulogger/fluent-bit@sha256:04da83ed2af92600f7e0b4055d707c038c6e549ed14dba6372b0a2a50ddae32d
ott.docker.image.path=pprb/ci00641491/ci01125613_ott/ott-client-api-v2@sha256:05b3d2530abdb9e27b6862793a939c87c3a72d09dde6656c4f192f6d408d7088

Удаление#

Удалить Unimon можно выполнив DELETE на каждом ресурсе или командой в терминале: oc delete all,se,vs,dr -l CHANNEL=unimon.

Проверка работоспособности#

Существует несколько вариантов, чтобы убедиться, что Unimon работает корректно:

  1. Посмотреть логи. Необходимо убедиться, в отсутствии сообщений об ошибках в pod unimon-sender и unimon-agent. Подробное описание ошибок в «Руководстве по системному администрированию». По умолчанию, в логах unimon-sender, если он работает корректно, должен отображаться только успешный запуск, никаких других сообщений быть не должно. Но есть возможность включить периодическую отправку сообщения в лог на уровне info о времени последней успешной отправки метрик в Apache Kafka. Для этого необходимо найти параметр log.send.metrics.cron.scheduler в конфигмапе opm_unimon.unimon-sender.conf и установить периодичность в виде кроновского выражения (пример - '0 */1 * * * *' - один раз в минуту, по умолчанию отключен, значение '-').

  2. Посмотреть метрики в Apache Kafka. Этот вариант доступен, если вы имеете доступ к Kafka. Зайти в Kafka tool, выбрать необходимый топик, далее воспользоваться фильтром быстрого поиска. Узнать имя вашего topic можно в Config Map unimon-sender в строке: kafka.topic: test_topic

  3. Посмотреть метрики в Indicator(INDA). Посмотреть собранные метрики можно на дашборде Sample Dashboard All Namespaces в Grafana: 3.1. Зайти в Grafana на дашборд Sample Dashboard All Namespaces. 3.2. В верхней части дашборда указаны фильтры. Выбрать нужные значения, при этом заполнятся доступные значения для остальных фильтров. 3.3. На дашборде появятся панели - график и таблица - со значениями для каждой выбранной в фильтре метрики.

Откат#

Откат к предыдущей версии Unimon представляет собой установку последней стабильной версии в соответствии с текущей инструкцией по установке. После выполнения отката, будут возвращены конфигурационные файлы, относящиеся к предыдущей версии.

Часто встречающиеся проблемы и пути их устранения#

  1. Ошибка монтирования сертификата в событиях pod. Данная ошибка возникает при отсутствии или некорректно созданном secret для сертификата Unimon-sender. Для устранения необходимо исправить или пересоздать secret.

  2. Ошибка выгрузки образа из registry. Данная ошибка возникает при отсутствии или некорректном secret для выгрузки образа из registry. Для устранения необходимо исправить или пересоздать secret.

  3. Ошибка исчерпания ресурсов namespace. Данная ошибка возникает при отсутствии необходимого количества ресурсов для развертывания сервиса. Для устранения необходимо удалить лишние сущности из namespace, либо расширить квоты.

  4. Ошибка отправки логов в сервис Журналирование. Данная ошибка возникает при отсутствии, либо некорректном содержимом DestinationRule, ServiceEntry, VirtualService с именем egressgateway-logger-monitoring-r*. Для устранения необходимо исправить или пересоздать сущности, в которых возникли проблемы.

  5. Ошибка сбора метрик (инфраструктурных) с федерации. Данная ошибка возникает при отсутствии, либо некорректном содержимом ServiceEntry egressgateway-federate-monitoring-r* и VirtualService egressgateway-federate-monitoring-r*, для устранения необходимо исправить или пересоздать эти сущности.

  6. Ошибка отправки метрик в Kafka
    Данная ошибка возникает при отсутствии, либо некорректном содержимом ServiceEntry egressgateway-kafka-monitoring-r*. Для устранения необходимо исправить или пересоздать ServiceEntry.

  7. Ошибка подключения Unimon-agent к API Kubernetes. Данная ошибка возникает при отсутствии ServiceEntry egressgateway-kubernetes-monitoring-r*. Для устранения необходимо создать SE.

  8. В логах unimon-sender ошибка подключения к unimon-server. Данная ошибка возникает по ряду причин:

    • указано неверное значение для unimon.ingress.url (должен быть указан url ingress серверного namespace);

    • нет физического доступа к unimon-server;

    • unimon-server не работоспособен.

  9. Ошибка при установке - нет пароля ssl.istio.keyStore.ingress.password в _passwords.conf.
    Выявлено, что "агентский джоб" проверяет наличие паролей сертификатов Istio в common-репозитории, даже если они не устанавливаются, что приводит к ошибкам установки. Чтобы избежать ошибок необходимо принудительное отключение загрузки секретов из common-репозитория. В пункте DEPLOY_TO_OSE_NAMESPACE_FIELD указать:

{
"distrib_repo/conf/distrib.yml": {
"pipeline-extras":
{ "deploy-common-secrets": "false" }
,
"secrets": [""],
"istio-secrets": [""]
}
}

Чек-лист валидации установки#

  1. Проверить, что для проекта в среде контейнеризации создались объекты приложений на основании файлов конфигурации: DeploymentConfig, ConfigMap, Service, Route.

  2. Проверить, что для проекта в среде контейнеризации создались объекты istio/ingress/egress на основании файлов конфигурации: Deployment, VirtualService, ServiceEntry, DestinationRule, Gateway, ConfigMap, EnvoyFilter.

  3. Для проверки интеграции с сервисом Журналирования необходимо проверить наличие логов от Unimon в UI Indicator.

  4. Проверить логи на наличие ошибок.