Сценарии администрирования#
Администратору рекомендуется регулярно выполнять:
контроль состояния работы системы;
мониторинг производительности системы;
контроль свободного места на жестких дисках всех серверов системы, а также в файловой системе.
Сделать это можно с помощью системных метрик (описаны ниже) и метрики доступности. Также контролировать работу сервиса можно с помощью логов Unimon-server, проверять их на наличие ошибок.
При выявлении нештатных ситуаций необходимо: a. проверить логи Unimon-server на наличии ошибок; b. проверить логи Unimon-filter на наличии ошибок; c. проверить логи Unimon-metadata на наличии ошибок.
В рамках выполнения требований безопасной работы системы Администратор выполняет следующие функции:
осуществляет контроль использования организационных и технических средств защиты информации (т.е контролирует выполнение правил и использование ПО должностными лицами в целях обеспечения защиты информации);
осуществляет контроль доступа к обрабатываемым данным пользователями, согласно с их правами доступа к АС;
несет ответственность за качество проводимых им работ.
Доступ к АС должны иметь только те сотрудники, которым он необходим в соответствии с их должностными обязанностями. Доступ должен ограничиваться минимально необходимым объемом данных. Должны разделяться среды разработки, тестирования и эксплуатации. При этом производится разделение обязанностей между разработчиками АС, тестирующим персоналом и сотрудниками, непосредственно эксплуатирующими уже введенные в промышленную эксплуатацию системы.
Необходимо контролировать работоспособность unimon-server, это возможно с помощью метрики unimon_server_health_status или способами описанными ниже.
Для проверки соединения Unimon-server с БД, есть несколько вариантов (можно выбрать в зависимости от наличия прав):
Выполнить в терминале pod Unimon-server запрос, в ответе будет указан статус соединения.
sh-4.4$ curl http://localhost:8080/mona/v1/instance/sender/listПроверить наличие ошибок в pod Unimon-server.
В БД (Postgres) проверить соединение со схемой Unimon.
Для получения данных от сервера необходимо периодически осуществлять проверки соединения Unimon-sender c Unimon-server:
В логе sidecar Istio pod Unimon-sender должны присутствовать записи успешного ответа
[2021-09-20T22:45:22.850Z] "GET /mona/v1/instance HTTP/1.1" 200 - "-" "-" 0 2931 78 78 "-" "Java/11.0.4" "e2fee4df-4092-914d-89b8-9aa1721239db" "ingress.unimon.ci01976100-idevgen2-unimon-ift.apps.dev-gen2.aa.ssss.ru" "XX.XX.XXX.XXX:XXXX" outbound|7071||egressgateway-monitoring-r3.ci01976100-idevgen2-unimon-ift.svc.cluster.local XX.XX.XXX.XXX:XXXXX XX.XXX.XXX.XX:XX XX.XX.XXX.XXX:XXXXX - -Для проверки соединения Unimon-server с Abyss
Выполнить в терминале pod Unimon-server запрос, если будет получен ответ, то соединение с Abyss установлено
sh-4.4$ curl http://localhost:8080/mona/v1/instance/
Необходимо контролировать работоспособность unimon-filter и unimon-metadata, это возможно с помощью метрик unimon_filter_health_status и unimon_metadata_health_status.
Используемые порты:
Наименование файла |
Порт |
Описание |
|---|---|---|
deployment unimon-server |
8080 |
порт для приема запросов |
8081 |
порт для публикации метрик |
|
service unimon-server |
8080 |
порт для приема запросов |
8081 |
порт для публикации метрик |
|
deployment unimon-metadata |
8080 |
порт для приема запросов |
8081 |
порт для публикации метрик |
|
service unimon-metadata |
8080 |
порт для приема запросов |
8081 |
порт для публикации метрик |
|
deployment unimon-filter |
8080 |
порт для приема запросов |
8081 |
порт для публикации метрик |
|
service unimon-filter |
8080 |
порт для приема запросов |
8081 |
порт для публикации метрик |
|
deployment egress |
8443 |
трафик в prometheus federate |
15021 |
liveness/readiness probe |
|
7072 |
внутренний порт egress для доступа в Abyss |
|
service egress |
443 (8443) |
трафик в prometheus federate |
27070 |
порт для подключения к сервису журналирования |
|
7071 |
внутренний порт для подключения к Unimon-server |
|
7073 |
внутренний порт egress для доступа в сервис Audit |
|
7075 |
внутренний порт egress для подключения к виртуальным машинам |
|
7077 |
внутренний порт egress для подключения к сервису аутентификации |
|
7079 |
внутренний порт egress для подключения к сервису авторизации |
|
7072 |
внутренний порт egress для доступа в Abyss |
|
15021 |
liveness/readiness probe |
|
deployment ingress |
15021 |
liveness/readiness probe |
15012 |
используется для control-plane istio |
|
service ingress |
15021 |
liveness/readiness probe |
11443 |
шлюз ingress |
Описание парольной политики не применимо, так как Unimon не предполагает создание учетных записей/паролей пользователей, это действие происходит в рамках сервисов IAM Proxy в составе продукта Platform V IAM SE или Abyss. Резервное хранилище на стороне unimon-server не предусмотрено.
Примеры типовой конфигурации указаны в Руководстве по установке.
Если не будут заданы или заданы некорректно обязательные значения параметров, в большинстве случаев это повлечет ошибки установки, либо старта сервиса.
Конфигурирование#
Все параметры конфигурации подробно описаны в Справочнике конфигурационных файлов. Изменять или задавать параметры конфигурации можно с помощью редактирования файла конфигурации необходимого модуля в среде контейнеризации или в компоненте PACMAN (CFGA) продукта Platform V Configuration (CFG). На текущий момент в компоненте PACMAN (CFGA) продукта Platform V Configuration (CFG) доступно редактирование следующих конфигураций:
Название файла конфигурации в среде контейнеризации |
Название файла конфигурации в Platform V Configuration. PACMAN |
|---|---|
pacman-unimon-common-config |
unimon-common |
pacman-unimon-sender-config |
unimon-sender-config |
pacman-unimon-server-config |
unimon-server-config |
pacman-unimon-filter-config |
unimon-filter-config |
pacman-unimon-metadata-config |
unimon-metadata-config |
При редактировании параметров конфигурации в среде контейнеризации необходимо также использовать файлы указанные выше, для обеспечения синхронизации конфигурации в компоненте PACMAN (CFGA) продукта Platform V Configuration (CFG). Синхронизация параметров конфигурации работает в обе стороны, то есть при изменении в среде контейнеризации, будет выполнено обновление параметров в компоненте PACMAN (CFGA) продукта Platform V Configuration (CFG) и наоборот. При редактировании в среде контейнеризации иных файлов конфигурации (для модулей перечисленных выше) заданые значения не будут применены и синхронизированы с компонентом PACMAN (CFGA) продукта Platform V Configuration (CFG). С помощью параметров для unimon-server, unimon-filter, unimon-metadata можно задавать необходимые значения лимитов памяти и CPU. В конфигурационных файлах указаны рекомендованные значения, которые могут быть изменены на нужные в случае разного потока метрик.
unimon-server.openshift.cpuLimit=1
unimon-server.openshift.memLimit=1500Mi
unimon-server.openshift.cpuRequest=200m
unimon-server.openshift.memRequest=1500Mi
unimon-filter.openshift.cpuLimit=1
unimon-filter.openshift.memLimit=1500Mi
unimon-filter.openshift.cpuRequest=200m
unimon-filter.openshift.memRequest=1500Mi
unimon-metadata.openshift.cpuLimit=1
unimon-metadata.openshift.memLimit=1500Mi
unimon-metadata.openshift.cpuRequest=200m
unimon-metadata.openshift.memRequest=1500Mi
Создание подключения и объектов хранилища#
Если подразумевается использование подключения клиентской части к серверной (неавтономная работа), то необходимо выполнить подключение клиента к Unimon.
После которого, клиент получит unimonId, соответсвующий объектам хранилица, который необходимо указывать при передачи метрик.
При создании подключения также задается квота для этого подключения, которая выделяется из квоты проекта. Подробное описание квотирования находится в архитектуре Unimon.
При автономной работе (без подключения к серверной части) создание подключения и UnimonId не требуется.
Каждому unimonId соответствует topic Kafka, в который Unimon будет писать метрики клиента.
Для создания, просмотра, редактирования признака основного подключения для проекта, удаления одного или всех подключений проекта необходимо воспользоваться Unimon UI (подробное описание в инструкциях Indicator) или методами API Unimon (подробнее в описании API).
Для создания, удаления, редактирования подключений пользователь должен обладать ролью MONA_CONNECTIONS_EDITOR. Для просмотра подключений в своем проекте необходимо обладать ролью MONA_CONNECTIONS_EDITOR.
Для использования unimonid в запросах к хранилищу необходимо в Indicator создать Datasource (подробнее в Руководстве системного администратора Platform V Monitor Indicator).
Квотирование#
Подробное описание механизма квотирования находится в Детальной архитектуре. Квота на проект задается в UI Abyss. Квота на подключение задается при создании подключения, она выделяется из квоты проекта. Для задания квоты на подключение, а также для просмотра квот необходимо воспользоваться UI (подробное описание в инструкциях Indicator - Руководство оператора Unimon). Для редактирования квот подключений необходимо воспользоваться API Unimon (подробнее в описании API Unimon). Каждому уже существующему проекту будет выделена квота в размере MAX_INT и распределена равномерно между уже существующими подключениями по этому проекту. Свободным останется 20% квоты по проекту для возможности создания новых подключений. Нельзя задавать нулевое или дробное значение для квоты подключения. Если при создании подключения значение квоты не задано, подключение будет создано и ему будет назначена вся оставшаяся квота проекта.
Создание и редактирование правил выключения метрик#
Правила выключения метрик позволяют отключать передачу метрик в topic Kafka. Для создания, просмотра, редактирования правил необходимо воспользоваться Unimon UI (подробное описание в инструкциях Indicator) или методами API Unimon. Для создания, удаления, редактирования правил пользователь должен обладать ролью MONA_FILTER_EDITOR. Для просмотра правил выключения метрик в своем проекте необходимо обладать ролью MONA_FILTER_VIEWER.
Правила создания объектов в хранилище метрик#
Если флаг проставлен (NEED_CREATE_STORAGE = true): Unimon подключается к хранилищу метрик и создает новый topic в Kafka и новую задачу для индексации в проекте, указанном в STORAGE_PROJECT (при наличае прав у unimon).
Если указан TOPIC_KAFKA и ANALYTICAL_TASK - unimon создает для текущего подключения topic и задачу с указанными именами.
Если указан только TOPIC_KAFKA или только ANALYTICAL_TASK подключение не будет создано (необходимо указывать оба объекта).
Если не указан ни TOPIC_KAFKA, ни ANALYTICAL_TASK, unimon создает topic и задачу с такими же именами, что и UNIMON_ID.
Если флаг не проставлен (NEED_CREATE_STORAGE = false): Unimon не создает новые объекты в хранилище метрик (topic и задачу для индексации). При этом должны быть проставлены уже существующие в хранилище TOPIC_KAFKA и ANALYTICAL_TASK.
Если указан TOPIC_KAFKA и ANALYTICAL_TASK - unimon создает подключение с указанными значениями topic и задачи.
Если указан только TOPIC_KAFKA или только ANALYTICAL_TASK подключение не будет создано (необходимо указывать оба объекта).
Если не указан ни TOPIC_KAFKA, ни ANALYTICAL_TASK, unimon не создаст подключение.
Сбор метрик с узлов и виртуальных машин#
Так как целевая реализация Unimon предполагает сбор метрик в среде контейнеризации, для мониторинга узлов и виртуальных машин необходима отдельная настройка, после включения которой unimon-agent начнет осуществлять опрос приложений, установленных на виртуальных машинах, а затем отправку в хранилище. По умолчанию сбор с VM отключен. Для того, чтобы активировать сбор и продолжать его в автоматическом режиме, необходимо:
Сформировать json-файл - targets.json, содержащие IP-адреса на которых постятся метрики и положить его в репозиторий для возможного редактирования.
Внимание! Для подключения Unimon, требуется получить идентификатор подключения unimonId и указывать его в качестве label в targets.json. Если unimonId не указывать, отправка метрики будет производиться в topic по умолчанию (параметр KAFKA_TOPIC в namespace мониторинга). Если параметр KAFKA_TOPIC будет не заполнен либо отсутствовать, метрика будет игнорироваться.
Для того чтобы метрики с виртуальных машин отображались на дэшбордах в Grafana, необходимо чтобы для каждого набора таргетов присутствовал лейбл «app», в котором указывается имя приложения, публикующего метрики. Пример targets.json:
[
{
"labels": {
"app": "app1",
"unimonId": "tenant1"
},
"targets": [
"XXX.XX.X.X:XXXXX",
"YYY.YY.Y.Y:YYYYY"
]
},
{
"labels": {
"app": "app2",
"unimonId": "tenant2"
},
"targets": [
"XXX.XX.X.X:XXXXX",
"YYY.YY.Y.Y:YYYYY"
]
}
]
Затем необходимо запустить job в Jenkins create_configmap_se_vm со следующими параметрами:
REPO_URL - адрес репозитория в сервисе для хостинга систем управления версиями кода, где лежит файл targets.json;
REPO_BRANCH - ветка репозитория в сервисе для хостинга систем управления версиями кода;
REPO_CREDS - credentials для подключения к сервису для хостинга систем управления версиями кода;
JSON_VM_NAME - имя json-файла, в котором лежат IP-адреса, по которым постятся метрики (по умолчанию targets.json);
OSE_CLUSTER - cluster в среде контейнеризации, в котором развернут мониторинг (unimon);
OSE_PROJECT - namespace в среде контейнеризации, в котором развернут мониторинг (unimon);
OSE_CREDS - credentials для подключения в среде контейнеризации;
Данный job формирует и разворачивает ConfigMap в указанном namespace и заносит туда содержимое json-файла с IP-адресами VM, тем самым включая сбор метрик.
Сбор метрик с узлов и виртуальных машин по хосту(протокол HTTPs).#
Для мониторинга узлов и виртуальных машин необходима отдельная настройка, после включения которой unimon-agent начнет осуществлять опрос приложений, установленных на виртуальных машинах, а затем отправку в хранилище:
Скопировать исходный код job из дистрибутива клиентской части(/scripts/jenkins/devops-opsmon-https). Создать репозиторий в сервисе для хостинга систем управления версиями кода (можно использовать уже существующий) и добавить код в него. Удостовериться, что папка scripts/jenkins/devops-opsmon-https/templates лежит в корне репозитория.
Сформировать json-файл - targets.json, содержащие IP-адреса на которых постятся метрики и положить его в репозиторий для возможного редактирования.
Внимание! Для подключения Unimon, требуется получить идентификатор подключения unimonId и указывать его в качестве label в targets.json. Если unimonId не указывать, отправка метрики будет производиться в topic по умолчанию (параметр KAFKA_TOPIC в namespace мониторинга). Если параметр KAFKA_TOPIC будет не заполнен либо отсутствовать, метрика будет игнорироваться.
Для того чтобы метрики с виртуальных машин отображались на дэшбордах в Grafana, необходимо чтобы для каждого набора таргетов присутствовал лейбл «app», в котором указывается имя приложения, публикующего метрики. Пример targets.json:
[
{
"labels": {
"app": "app1",
"unimonId": "tenant1",
"__metrics_path__": "/metrics"
},
"targets": [
"some.cloud.host:9443",
"some2.cloud.host:9443"
]
}
]
Необходимо создать job в Jenkins со следующими параметрами:
REPO_URL - адрес репозитория в сервисе для хостинга систем управления версиями кода, где лежит файл targets.json;
REPO_BRANCH - ветка репозитория в сервисе для хостинга систем управления версиями кода;
REPO_CREDS - credentials для подключения к сервису для хостинга систем управления версиями кода;
MONITORING_VERSION - версия мониторинга;
JSON_VM_NAME - имя json-файла, в котором лежат IP-адреса, по которым постятся метрики (по умолчанию targets.json);
OSE_CLUSTER - cluster в среде контейнеризации, в котором развернут мониторинг (unimon);
OSE_PROJECT - namespace в среде контейнеризации, в котором развернут мониторинг (unimon);
OSE_CREDS - credentials для подключения в среде контейнеризации;
В разделе Pipeline конфигурации job необходимо указать репозиторий в котором находится job (pipeline.groovy) и путь до нее.
Запустить созданный job.
Данный job формирует и разворачивает ConfigMap в указанном namespace, заносит туда содержимое json-файла с хостами VM и создает необходимые компоненты Istio, тем самым включая сбор метрик по https.