Настройка подсистемы мониторинга#
Вход в подсистему#
При обращении к URL AdminUI
пользователь автоматически будет переведен на сервис Keycloak, где необходимо выполнить вход.
В случае настроенной интеграции с каталогом пользователей LDAP, пользователь должен использовать свои персональные УЗ.

По умолчанию, в Платформе создаётся локальный (с точки зрения Keycloak) пользователь admin-internal
с паролем, заданным при установке (через указание пароля admin_ui.password
или через указание имени секрета admin_ui.secretName
).
Для смены пароля в Keycloak:
На кластере необходимо перейти по адресу
http://<адрес_сервера_мониторига>/oidc/
(пример:https://admin-ui-mon-mon-mon-mon.10-177-181-74.sslip.io/oidc/
).После открытия окна с Keycloak нажать Administration Console.
Ввести логин и пароль (по умолчанию
admin:password
).В открывшемся окне:
для смены логина и пароля пользователя для входа в Keycloak:
выбрать в верхнем левом углу realm «master», перейти на вкладку Users;
выбрать Username=admin и перейти на вкладку Credentials;
нажать Reset password. Далее сбросить пароль на новый;
для смены логина и пароля для входа в Admin UI:
выбрать в верхнем левом углу realm «astra-monitoring», перейти на вкладку Users;
выбрать Username=admin-internal и перейти на вкладку Credentials;
нажать Reset password. Далее сбросить пароль на новый;
для создания нового логина и пароля пользователя для входа в Keycloak:
выбрать в верхнем левом углу realm «master», перейти на вкладку Users;
нажать Add user и заполнить поле Username;
нажать кнопку Create. перейти на вкладку Credentials и нажать Set password;
создать пароль и сохранить его;
перейти на вкладку Role mapping и нажать Assign role и выбрать admin и **default-roles-master ** (можно выбрать те роли, которые необходимы);
для создания нового логина и пароля для входа в Admin UI:
выбрать в верхнем левом углу realm «astra-monitoring», перейти на вкладку Users;
нажать Add user и заполнить поле Username;
нажать кнопку Create. перейти на вкладку Credentials и нажать Set password;
создать пароль и сохранить его.
Для увеличения времени действия сессии в Keycloak:
Перейти на адрес keycloak.
Изменить параметры в разделе /admin/master/console/#/astra-monitoring/realm-settings/sessions:
SSO Session Idle (12 часов);
SSO Session Max (12 часов).
Изменить параметры в разделе admin/master/console/#/astra-monitoring/realm-settings/tokens:
Access Token Lifespan (12 часов);
Access Token Lifespan For Implicit Flow (12 часов);
Client Login Timeout (5 минут).


Настройка интеграции с LDAP#
Интеграцию Keycloak с LDAP каталогом пользователей (ALD Pro, FreeIPA, MS AD) можно настроить самостоятельно через интерфейс Keycloak, согласно официальной инструкции.
Добавление объектов мониторинга#
Примечание
Добавление объекта/хоста в ПМ выполняется через установку Агента на этом хосте. Установка Агента недоступна через интерфейс пользователя.
Необходимо развернуть Агент на хосте, после чего он зарегистрируется на ПМ и станет доступен к конфигурированию из интерфейса пользователя.
Все требуемые Агенту встроенные экспортеры, а также необходимые сторонние экспортеры, могут в дальнейшем устанавливаться и конфигурироваться автоматически, в соответствии с настройками Агента, обеспечивая сбор и выдачу соответствующих метрик.
Если через Агент будут передаваться диагностические данные с других Агентов, то необходимо данный Агент разворачивать с установленным режимом прокси.
При наличии установленного Агента на хосте запись объекта/агента создается автоматически с параметрами Агента и Узла / Точки подключения, на который(ую) Агент сконфигурирован при установке. При этом в блоке Источники данных в секции Встроенные экспортеры представлены управляемые Агентом экспортеры, которые установлены и сконфигурированы вместе с ним.
Добавление внешних по отношению к Агенту объектов мониторинга производится в пользовательском интерфейсе путем добавления стороннего экспортера (кликом по кнопке Добавить в блоке Источники данных в секции Встроенные экспортеры):

В открывшейся форме задаются следующие параметры:
Параметр |
Описание |
---|---|
Имя стороннего экспортера |
Имя стороннего экспортера, вводится в поле руками |
Адрес:порт сервера |
В формате <ip-адрес>:<порт>; адрес, с которого собираются метрики |
URL путь метрик |
Начинается с «/» |
Labels |
Лейблы для собираемых метрик. Формат Ключ:Значение. По этим лейблам данные метрик будут фильтроваться для показа графиков на дашбордах |
Добавить лейбл |
По кнопке в список добавляются поля для задания нового лейбла |
Удалить лейбл |
По кнопке соответствующий лейбл удаляется из списка |
Интервал, сек |
Интервал сбора метрик в секундах, целое неотрицательное число |
Включить сбор данных |
Включает сбор данных экспортером |
По кнопке Отмена/ОК сохранение настроек экспортера отменяется/выполняется.
Если в списке сторонних экспортеров присутствуют лишние, их можно удалить, последовательно кликая по соответствующим кнопкам Удалить и подтверждая операцию:

При необходимости добавить встроенный экспортер под управление Агентом, кликнуть по кнопке Добавить в секции Источники данных/Встроенные экспортеры:

Поля формы аналогичны форме редактирования встроенного экспортера. До выбора имени экспортера из списка все остальные поля формы не доступны к изменениям.

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

По кнопке Отмена/ОК сохранение настроек экспортера отменяется/выполняется.
Примечание
Добавленные через UI экспортеры в дальнейшем автоматически устанавливаются из централизованного хранилища ПМ на хост объекта.
Список добавленных на ПМ хостов доступен на странице Мониторинг — Интерфейсы по хостам.
Для редактирования настроек уже имеющегося экспортера нужно кликнуть по имени этого экспортера в соответствующем списке, откроется форма с полями:
для встроенного экспортера:
На форме задаются следующие параметры:
Параметр
Описание
Имя экспортера
Имя встроенного экспортера, не изменяется
Вариант настроек
args/am для собственных экспортеров, args - для опенсорсных
Адрес:порт сервера
В формате <Адрес сервера>:<Порт>, с которого собираются метрики
Args
Поле доступно, если Вариант настроек=args
Config
Параметры конфигурационного файла экспортера. Это либо сам конфиг файл, либо путь к нему
Labels
Лейблы для собираемых метрик. Формат Ключ:Значение. По этим лейблам данные метрик будут фильтроваться для показа графиков на дашбордах
Добавить лейбл
По кнопке в список добавляются поля для задания нового лейбла
Удалить лейбл
По кнопке соответствующий лейбл удаляется из списка
Интервал, сек
Интервал сбора метрик в секундах
Включить сбор данных
Включает сбор данных экспортером
По кнопке Отмена/ОК сохранение настроек экспортера отменяется/выполняется.
для стороннего экспортера
На форме задаются следующие параметры:
Элемент интерфейса
Описание
Имя стороннего экспортера
Имя стороннего экспортера, не изменяется
Адрес:порт сервера
В формате <ip-адрес>:<порт>; адрес, с которого собираются метрики
URL путь метрик
Начинается с «/»
Labels
Лейблы для собираемых метрик. Формат Ключ:Значение. По этим лейблам данные метрик будут фильтроваться для показа графиков на дашбордах
Добавить лейбл
По кнопке в список добавляются поля для задания нового лейбла
Удалить лейбл
По кнопке соответствующий лейбл удаляется из списка
Интервал, сек
Интервал сбора метрик в секундах
Включить сбор данных
Включает сбор данных экспортером
По кнопке Отмена/ОК сохранение настроек экспортера отменяется/выполняется.
Примечание
Для корректного использования предустановленных дашбордов в Grafana необходимо использовать специальные теги product и component. Они позволяют корректно фильтровать необходимые объекты и показывать графики для нужных продуктов. В данный момент такие теги необходимо создавать и назначать вручную на соответствующие объекты. В главе 6 документации для каждого продукта даны необходимые пояснения по созданию и использованию данных тегов. Указанная особенность касается только использования этих двух тегов.
Из итогового списка объектов мониторинга затем формируется список targets
в формате json
, включающий в себя имя (hostname
), адрес инстанса (instance
) и теги (labels
) каждого объекта мониторинга. Этот список доступен по специальному адресу <admin-ui-url>/api/endpoints?format=prometheus
. Prometheus обращается к указанному адресу, считывает список объектов и, посредством механизма HTTP Service Discovery, добавляет их в свою конфигурацию, после чего начинает опрос и получение метрик от объектов мониторинга.
Настройка триггеров для создания событий#
Правила триггеров для создания событий описаны в конфигурационных файлах:
в директории
./alert-rules/
в случае установки в кластер Kubernetes;в директории
./vmalert/config/
в случае установки в виде Docker Compose.
Файлы логически разделены по функциональным группам, например, ald-pro.yaml
, brest.yaml
или node-exporter.yaml
.
Правила описываются в формате YAML следующим образом:
groups:
- name: ald-pro
interval: 30s
concurrency: 2
rules:
- alert: IPATestUserConnection
expr: |
ipa_user_connect{} == 0
for: 5m
labels:
severity: critical
team: ipa_support
annotations:
summary: "Server {{ $labels.hostname }} has an issue with test user authentication"
description: "Test user {{ $labels.user_check }} can't connect to domain on server {{ $labels.hostname }} ({{ $labels.instance }})"
- alert: IPAUserConnectionTime
expr: |
avg_over_time(ipa_time_for_connect[5m]) > 2 * avg_over_time(ipa_time_for_connect[5m] offset 5m)
labels:
severity: warning
team: ipa_support
annotations:
summary: "Server {{ $labels.hostname }} ({{ $labels.instance }}) has highly increased test user connection time ({{ humanize $value }} ms.)"
description: "Test user {{ $labels.user_check }} has an issue with very long test user connection time ({{ humanize $value }} ms.) on server {{ $labels.hostname }} ({{ $labels.instance }})"
где:
name
— имя группы правил;interval
— интервал обработки правил группы;alert
— имя триггера;expr
— условие для срабатывания триггера в формате PromQL;for
— минимальная длительность состояния перед срабатыванием триггера;labels
— дополнительные лейблы для триггера:severity
— уровень критичности;team
— маршрут для отправки уведомлений о срабатывании триггера, например, имя команды поддержки системы/продукта. (дополнительное опциональное поле, приведенное в качестве примера для конкретного набора правил),
annotations
— дополнительные информационные сообщения для получателей сообщений:summary
— краткое описание проблемы в заголовке сообщения;description
— общее описание проблемы в тексте сообщения.
Набор полей, указанных в списке labels
может отличаться, в зависимости от правила, например, включать в себя имя сервиса systemd
, точку монтирования файловой системы mountpoint
, имя пользователя, название метрики и т.д., но при этом рекомендуется всегда указывать уровень критичности severity
.
Для добавления нового правила к уже существующей группе, необходимо определить имя триггера, условия для его срабатывания, критичность и получателя сообщений о срабатывании триггера. Далее добавить описание триггера в формате YAML в список rules
требуемой группы правил, например, группы ald-pro
в файле ./alert-rules/ald-pro.yaml
(./vmalert/config/ald-pro.yaml
).
Для создания нового набора правил необходимо создать новый файл в директории ./alert-rules/
(./vmalert/config/
) с требуемой группой (например, файл rupost.yaml
с группой правил rupost
), описать в группе требуемый набор правил и сохранить файл.
Также правила могут быть размещены в файле values.tmpl
, в секции vmalert / additionalPrometheusRulesMap
, аналогично описанному выше.
После окончания добавления или редактирования правил, необходимо обновить компоненты ПМ с помощью инструментов docker-compose / helm-chart
.
Настройка оповещений#
Правила оповещений о событих описаны в конфигурационном файле:
в директории
./templates/alertmanager-cm.yaml
в случае установки в кластер Kubernetes;в директории
./alertmanager/config/alertmanager.yml
в случае установки в виде Docker.
Настройки описываются в формате YAML. Например, для интеграции с Mattermost необходимо подставить <webhookid>
и <channel-name>
в блок slack_configs
группы receivers
и т.д. Имя канала оповещений (receiver
) задается произвольно. Неиспользуемые каналы можно удалить из конфигурации.
global:
templates:
- '/etc/alertmanager-templates/*.tmpl'
route:
receiver: alert-null # канал для отправки всех сообщений по умолчанию.
# В примере указана пустая заглушка для отправки сообщений только по указанным далее маршрутам, но может быть использован любой другой канал.
group_by: ['alertname', 'hostname', 'group', 'severity', 'metric']
group_wait: 3m
group_interval: 5m
repeat_interval: 1d
routes:
- receiver: alert-mmost
matchers: # задаем условия для отправки сообщений через этот канал
- team = ipa_support
- receiver: alert-telegram1
matchers:
- group = infra
- receiver: send-to-telegram2
matchers:
- group = middleware
- severity =~ "warning|critical"
- receiver: email-alerts
matchers:
- group = middleware
- severity = critical
receivers:
- name: alert-mmost1
slack_configs:
- api_url: https://im.astralinux.ru/hooks/<webhookid>
channel: '<channel-name>' # имя канала в mattermost
send_resolved: true
title: '{{ template "slack.title" . }}'
color: '{{ template "slack.color" . }}'
text: '{{ template "slack.text" . }}'
- name: alert-telegram1
# Оповещения в первую группу telegram
telegram_configs:
- bot_token: '<bot_token>' # https://core.telegram.org/bots/features#botfather
api_url: 'https://api.telegram.org'
# Не забудьте добавить бота в группу, в которую должны приходить сообщения
chat_id: -1000000000001 # <указать id группы в формате -1234567890, в начале стоит минус
send_resolved: true
message: '{{ template "telegram.message" . }}'
- name: send-to-telegram2
# Оповещения во вторую группу telegram (при необходимости)
telegram_configs:
- bot_token: '<bot_token>'
api_url: 'https://api.telegram.org'
chat_id: -1000000000002
send_resolved: true
message: '{{ template "telegram.message" . }}'
- name: email-alerts
email_configs:
- to: email@example-domain.ru
send_resolved: false
from: astra-monitoring@example-domain.ru
smarthost: <smtp-relay-address>:25
require_tls: false
- name: alert-null # пустой канал-заглушка
inhibit_rules:
- source_matchers: [severity="critical"]
target_matchers: [severity="warning"]
# Apply inhibition if the alertname is the same.
# CAUTION:
# If all label names listed in `equal` are missing
# from both the source and target alerts,
# the inhibition rule will apply!
equal: [alertname, hostname, instance, group]
Из «коробки» поддерживается много разных типов каналов оповещений, например:
email;
Telegram;
Discord;
Jira;
Mattermost (Slack);
MS Teams;
OpsGenie;
PagerDuty;
VictorOps;
SNS (Amazon AWS);
Webex;
Webhook.
Указанный в списке механизм Webhook позволяет расширить список возможностей интеграции, если требуемый канал оповещений не поддерживается нативно Alertmanager. Так, в списке совместимых интеграций заявлены GitLab, Ansible Tower, IRC, Zoom, SMS (с использованием веб-сервисов провайдеров) и прочие продукты <https://prometheus.io/docs/operating/integrations/#alertmanager-webhook-receiver>.
Набор конкретных используемых каналов оповещений задается в блоке receivers
. Далее для каждого канала в отдельности задается имя и специфичные параметры, такие как адрес получателся email, token бота, id группы Telegam и так далее. Может быть несколько каналов одного типа, но с разными параметрами, например, разными группами в Telegram или получателями email.
Выбор того или иного канала оповещений зависит от условий, заданных в секции route
, включая канал «по умолчанию» (в примере выше это alert-null
), куда будут отправляться все оповещения. Для остальных маршрутов условия задаются в блоке matchers
маршрута. Например, это может быть проверка на значение каких-либо лейблов — severity
, group
и т.д. Оповещение может быть отправлено в несколько разных каналов. Так, в примере выше описана отправка в telegram2 алертов, у которых лейбл group = middleware
, а severity = warning"
или critical
. При этом, алерты с лейблами group = middleware
и severity = critical
будут также дублироваться на электронную почту из канала email-alerts
.
Оповещения можно группировать по различным признакам для уменьшения их количества, например, объединить все алерты от одного хоста в одно сообщение. Группировка задается параметром group_by
, который определяет лейблы, по совпадению значений которых будут группироваться алерты. Дополнительно применяются параметры group_wait
— задержка для начальной группировки алертов перед первым оповещением, а также group_interval
— через какое время отправлять дополнительные оповещения, если в эту же группу добавлены новые алерты. Параметр repeat_interval
задает время для повторной отправки оповещения о все еще активной проблеме, как напоминание.
Секция inhibit_rules
позволяет задать правила «подавления» одних алертов другими. Например, при наличии алерта с лейблом severity = critical
, Alertmanager не будет реагировать на приходящие алерты с такими же лейблами (alertname
, hostname
, instance
, group
), но c severity = warning
.
Активные настройки Alertmanager, его состояние и список активных алертов можно проверить в веб-интерфейсе, по доменному имени, заданному при развертывании в среде Kubernetes (например, вида https://alertmanager.am.domain.local/
, пример: https://alertmanager-mon-dev.10-177-181-13.sslip.io
) или по порту 9093 при развертывании в среде Docker Compose (вида http://<server_address>:9093/
, пример: http://10.177.180.139:9093
). Также, используя API Alertmanager возможно проверять его состояние GET-запросами по пути /-/healthy
, /-/ready
или инициировать перезагрузку конфигурации POST-запросом по пути /-/reload
.
Более подробно о возможностях настройки подсистемы оповещения можно найти в официальной документации.
Конфигурация webhook_configs
должна быть сохранена для наполнения базы событий и отображения актуальной информации в Admin UI.
После внесения изменений, необходимо обновить компоненты ПМ.
Настройка (добавление) дополнительных дашбордов Grafana#
Дополнительные пользовательские дашборды Grafana могут быть добавлены в ПМ на этапе развертывания. Для этого заранее подготовленный код дашборда в формате json
необходимо добавить в файл values.yaml
и затем провести обновление компонентов с помощью инструментов helm-chart
.
Формат описания дополнительных дашбордов в values.yaml
состоит из двух частей — провайдера и группы дашбордов с содержимым в виде непосредственно json-кода или в виде ссылки на него (в том же формате json). Добавление дашбордов с несуществующим провайдером может вызвать ошибки при развертывании ПМ.
Примерный фрагмент файла values.yaml
:
grafana:
dashboardProviders:
dashboardproviders.yaml:
apiVersion: 1
providers:
- name: 'custom-dashboards' # имя провайдера дашбордов
orgId: 1
folder: ''
type: file
disableDeletion: false
updateIntervalSeconds: 60
editable: true
allowUiUpdates: true
options:
path: /src/grafana/dashboards/
foldersFromFilesStructure: true
- name: 'web-dashboards'
orgId: 1
folder: ''
type: file
disableDeletion: false
updateIntervalSeconds: 60
editable: true
allowUiUpdates: true
options:
path: /var/lib/grafana/dashboards/Web-dashboards
foldersFromFilesStructure: true
dashboards:
custom-dashboards: # совпадает с именем провайдера в dashboardProviders
mydashboard: # название дашборда
json: |
{ } # код дашборда в формате json
json-dashboard-2:
json: |
{ }
web-dashboards: # совпадает с именем провайдера в dashboardProviders
mydashboard-3: # название дашборда
url: http://externalurl:8080/grafana/mydashboard.json # путь к загружаемому дашборду
Подробное описание провайдеров и дашбордов можно найти в документации Grafana <https://grafana.com/docs/grafana/latest/administration/provisioning/#dashboards> и на странице GitHub <https://github.com/grafana/helm-charts/blob/main/charts/grafana/values.yaml>.
Дашборды, загружаемые с помощью url
, должны быть доступны для ПМ во время развертывания, так как при этом происходит загрузка (скачивание) файла во внутреннюю директорию Grafana, указанную в настройках соответствующего провайдера.
Примечание
После удаления дашбордов или изменения путей у провайдеров, при повторном развертывании Платформы без удаления pvc Grafana может сложиться ситуация, когда дашборды появляются в новой директории и остаются в старой. Решением может оказаться ручное удаление pvc Grafana перед повторным развертыванием Платформы АМ.
Использование API#
Для того, чтобы иметь доступ к выполнению API запросов необходимо аутентифицироваться в системе аутентификации (Keycloak), при этом будет получен токен доступа (access_token
), обеспечивающий дальнейшую работу с API.
> export USER_NAME="<your_user_name>"
> export USER_PASSWORD="<your_user_password>"
> export ADMINUI_ENDPOINT="<url_to_your_admin_ui>"
> curl --silent -k -X POST -d "grant_type=password&username=${USER_NAME}&password=${USER_PASSWORD}&client_id=admin-ui" -H "Content-Type:application/x-www-form-urlencoded" ${ADMINUI_ENDPOINT}/oauth/login | jq
{
"token_type": "Bearer",
"access_token": "eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJpdk1UUDgtRGptSmU2LTE2ejVYaHlpUk0xUkx5X2lYYUlHblRjTGhkdTNrIn0.eyJleHAiOjE3MTAzOTgyNzksImlhdCI6MTcxMDM5Nzk3OSwianRpIjoiY2VhMzY4OTUtOTNjYS00N
jJjLWI1ZmItZTc3OTIzNDdiZDgxIiwiaXNzIjoiaHR0cHM6Ly9hZG1pbi11aS1tb24tZGV2LjEwLTE3Ny0xODEtMTMuc3NsaXAuaW8vb2lkYy9yZWFsbXMvYXN0cmEtbW9uaXRvcmluZyIsImF1ZCI6ImFkbWluLXVpIiwic3ViIjoiNWFkMjI3OTYtYzdmOS00NzJiLTgyM2YtY
zQwNzAxN2JhYzJjIiwidHlwIjoiQmVhcmVyIiwiYXpwIjoiYWRtaW4tdWkiLCJzZXNzaW9uX3N0YXRlIjoiZmE2YjkxODEtZTFhNy00NDJkLTkxNDctYTUxYWI3Mzk1OWE3Iiwic2NvcGUiOiJvcGVuaWQgYXVkaWVuY2UtYWRtaW4tdWkgcHJvZmlsZSBlbWFpbCIsInNpZCI6I
mZhNmI5MTgxLWUxYTctNDQyZC05MTQ3LWE1MWFiNzM5NTlhNyIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwicHJlZmVycmVkX3VzZXJuYW1lIjoiYWRtaW4taW50ZXJuYWwiLCJlbWFpbCI6ImFkbWluLWludGVybmFsQG9pZGMtbW9uLWRldi4xMC0xNzctMTgxLTEzLnNzbGlwL
mlvIn0.cxUz5EVS5idt8wR9Zx8GCgD7Taz1aT0dAwgerM_ce1agXnYbiHz4I5_1wtEk3EPu6A2EUbv1xkX36eZD1JBi5wEmCfAeNuNX2do3_rfSEtRcGML4tA6DSeiV2CrTybfIr2ciE6z3_LPfU2CZQEnoVB54zOf2HbUgJti5KhuH5bNcLnYm6VTE4gdDY43S3UgX04Ny-Vkdo
oY2_Gk9cHWls6iW5GefLxFh7yzNsxEgMS_BDvZ-UiPbWVWss660sA7G-DKv91FLEGFhbxWdtVYhU9CvEygEYaqfSlPBE43BXI0jo_IWm8SB_MEKW_vl4gXZP9hXjjpf0x7OnGpfoRHjAA",
"id_token": "eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJpdk1UUDgtRGptSmU2LTE2ejVYaHlpUk0xUkx5X2lYYUlHblRjTGhkdTNrIn0.eyJleHAiOjE3MTAzOTgyNzksImlhdCI6MTcxMDM5Nzk3OSwiYXV0aF90aW1lIjowLCJqdGkiOiJlMDcxN
mVlYy01M2IyLTRiMTctYWZmOC1hODY2ODM3NDY4OTEiLCJpc3MiOiJodHRwczovL2FkbWluLXVpLW1vbi1kZXYuMTAtMTc3LTE4MS0xMy5zc2xpcC5pby9vaWRjL3JlYWxtcy9hc3RyYS1tb25pdG9yaW5nIiwiYXVkIjoiYWRtaW4tdWkiLCJzdWIiOiI1YWQyMjc5Ni1jN2Y5L
TQ3MmItODIzZi1jNDA3MDE3YmFjMmMiLCJ0eXAiOiJJRCIsImF6cCI6ImFkbWluLXVpIiwic2Vzc2lvbl9zdGF0ZSI6ImZhNmI5MTgxLWUxYTctNDQyZC05MTQ3LWE1MWFiNzM5NTlhNyIsImF0X2hhc2giOiJjeGF6NktNekpiVVNpemNENEEzbXNRIiwic2lkIjoiZmE2YjkxO
DEtZTFhNy00NDJkLTkxNDctYTUxYWI3Mzk1OWE3IiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhZG1pbi1pbnRlcm5hbCIsImVtYWlsIjoiYWRtaW4taW50ZXJuYWxAb2lkYy1tb24tZGV2LjEwLTE3Ny0xODEtMTMuc3NsaXAuaW8ifQ.mV
8nKQEbidOMlyGsUr7jdAPWoZbeLV_ed_FQ15YuFf2i-ECmxq3xPwLFNfVJVsU4nsKc0g0ZpIVoSFXLUO2mRofoPJBK60ypzP3DmjwP5nwiDWmkgXijVM-rp1WQAzA7lNZQVFbkM4c-sOsKG4hjj994sTi3IaQh2JxE5OJ35bNU7j_rhjgShH3LfPD2C3b1qcRrNrqe-2Ku74fLEl
XHGAAiVqWnpVk0h6ewGRrauY1k1fyYf2lGBIgeboLBRShjY_TM80iCaRU7WWKMmdV9AFVWyoN3GNMelAdKstBRFJZb1cCml8I0ndkDPA-zQhvi-ZmTkuSme2hUplL95Iywow",
"refresh_token": "WGA0F30ClihVgYrSp7yd7Rb5kcpRbHelbXBaWkzQ8hJlkF84AFinHWYTLwfvhGXxkBFbRAKMfk5OmktUXPmZbb4X/VviKu5g/8oHYQgm9JTYmDld5O5AqYyJOJ54xlMUn8rjhpeVdO5y1IoSulZWcMQh5nbWWs2H916JobR64+eyXDyGYXAm+B0dtG62
ao//F+csewM6JHzvk9s+JNhe/8yCg+kYTTqg23U0UFHCiOY9geCDPzd0DT72HGLtjtd5nyanYgxzBSqW4LR5uOBiJ85HNpmx1rBzJTd027hOC1Uy76291JWsij/YOxw/Pv/3/KIFJLQd5WBq8t1YLv2PchivEPmTQH39eN6zdwkTEaueiSsooRO6lX3AYhm3kZqg5Jwt+NYgjEXu
qbG/V1rFr1UhsqHivO1wOJFEDtGteaZN6pn2pqlGGW1hOfVhrp/mQ3jwTaOLHw0u8kcdO5HdjKHBHEGHIGkkeCPRRP1LxR625PdnBRlbTjE7B4dc/CevwUxrcyvAWhqtMXbPY+Ub19nwtlyitJuGLoyF+ifllAzjAbj0+CAsrFsmFobaCP878kp4TNqheLGB+ZykLCY9y/mGjmJ/
l9MzMvME5gxNPzriVKVZQOuuhb1IQONKfj8WQPPgIgmuJkdh+krqa+PkEkWXx/loSRxOl1ZDfISdfvhplyhDe/Tan7vPfpWj+4wFtKnQPg9ijJGCpazVrrmpDZVU7YS5TFOwnA3K4kz9dlsK6kWjokWP9PCzz/chkzOLd1WOUFoK3OeL6j33j2vKc9cwnXOPTcTE3cI3ORBxu3eA
qc4ed+iq3JQAAoHmFcEWwXQ5l4dSl8M/mLbRkf50Op8nvFtRfbAu0sdAg5FpkLvprCk5iFJfYX5DCzGflsbu210BeXrIzc5ILlreG8cxLkbBDKRbPLJSh+s+ykKQH0gv35Ci90NVXjoHx0nsBlXB7G7z5BAY8YNGNer9gkjsrWSSgbW4gYPGtdC1upIW/cFvuv35intZbZocLzxx
HbPmaDE/3n/caiXI5cxwmRz5FqvNz8i/ly4ZjWSpk+gnC2zlrpEn382L65WTSQ",
"expires_in": 300,
"scope": "openid audience-admin-ui profile email"
}
После получения токена можно выполнять запросы к API, например:
> export USER_NAME="<your_user_name>"
> export USER_PASSWORD="<your_user_password>"
> export ADMINUI_ENDPOINT="<url_to_your_admin_ui>"
> export access_token=`curl --silent k -X POST -d "grant_type=password&username=${USER_NAME}&password=${USER_PASSWORD}&client_id=admin-ui" -H "Content-Type:application/x-www-form-urlencoded" ${ADMINUI_ENDPOINT}/oauth/login | jq -r '.access_token'`
> curl --silent -k -H "Authorization: Bearer ${access_token}" ${ADMINUI_ENDPOINT}/api/endpoints | jq
[
{
"id": 19,
"instance": "<ip_address>:9100",
"fqdn": "<fqdn_host>",
"tags": [
{
"id": 16,
"name": "group",
"value": "ald-pro",
"color": "#5aafed",
"endpoint_count": null
},
{
"id": 20,
"name": "subsystem",
"value": "controller",
"color": "#f7afb0",
"endpoint_count": null
}
],
"type": {
"id": 4,
"name": "Astra Linux",
"agent_config": "",
"template_url": "http://{{ .grafana_base_url }}/d/rYdddlPWkwwkkD453/node-exporter-full?orgId=1&var-hostname={{ .hostname }}&var-group={{ .group }}",
"default_port": 9100
},
"deleted_at": null,
"url": "http://grafana-mon-dev.10-177-181-13.sslip.io/d/rYdddlPWkwwkkD453/node-exporter-full?orgId=1&var-hostname=<fqdn_host>&var-group=ald-pro"
},
...
]
Описание существующего API можно найти по адресу ${ADMINUI_ENDPOINT}/api/v1/swagger/index.html
, для предлагаемых endpoint’ов необходимо добавить /api/v1/
в начале.
