События мониторинга#
Сервис аутентификации не оперирует бизнес-операциями, но позволяет следить за метриками в формате Prometheus.
Предусловия#
Для получения метрик в формате Prometheus необходимо настроить параметр PROXY_METRICS_ENABLE в значение True (
подробнее в разделе Параметры основной функциональности компонента IAM Proxy)
. Метрики публикуются на отдельном порту в открытом виде, для просмотра метрик ролевая модель не применяется. Метрики в
формате Prometheus доступны в браузере по адресу http://<host>:10080/metrics/ (подробнее в
разделе Параметры основной функциональности компонента IAM Proxy)
.
Проверка доступности метрик#
Для проверки доступности метрик на виртуальной машине необходимо:
Открыть ssh-терминал VM по адресу папки (адрес задается на этапе развертывания, подробнее в разделе Установка), где установлен IAM Proxy.
Выполнить запрос:
curl http://<host>:10080/metrics/.Убедиться, что метрики отдаются в ответе в формате Prometheus (смотрите пример ниже).
Пример выполнения запроса curl http://<host>:10080/metrics/ (пояснения к представленным в примере метрикам,
приведены в подразделе "Выводимые метрики и их описание"):
# HELP auth_counters Счетчик запросов аутентификации и авторизации
# TYPE auth_counters counter
auth_counters{state="error_302"} 3
auth_counters{state="oidc_authenticated"} 1
auth_counters{state="oidc_created"} 2
auth_counters{state="success"} 2
# HELP http_connections Число HTTP соединений в настоящий момент
# TYPE http_connections gauge
http_connections{state="active"} 4
http_connections{state="reading"} 0
http_connections{state="waiting"} 2
http_connections{state="writing"} 2
# HELP http_durations Backend, гистограмма времени обработки HTTP запросов разрезе upstream+upstream_server (в секундах)
# TYPE http_durations histogram
http_durations_bucket{upstream="",upstream_addr="",le="0.005"} 3
http_durations_bucket{upstream="",upstream_addr="",le="0.01"} 3
http_durations_bucket{upstream="",upstream_addr="",le="0.02"} 3
http_durations_bucket{upstream="",upstream_addr="",le="0.03"} 3
http_durations_bucket{upstream="",upstream_addr="",le="0.05"} 3
http_durations_bucket{upstream="",upstream_addr="",le="0.075"} 4
http_durations_bucket{upstream="",upstream_addr="",le="0.1"} 4
http_durations_bucket{upstream="",upstream_addr="",le="0.2"} 5
http_durations_bucket{upstream="",upstream_addr="",le="0.3"} 6
http_durations_bucket{upstream="",upstream_addr="",le="0.4"} 6
http_durations_bucket{upstream="",upstream_addr="",le="0.5"} 6
http_durations_bucket{upstream="",upstream_addr="",le="0.75"} 6
http_durations_bucket{upstream="",upstream_addr="",le="1"} 6
http_durations_bucket{upstream="",upstream_addr="",le="1.5"} 6
http_durations_bucket{upstream="",upstream_addr="",le="2"} 6
http_durations_bucket{upstream="",upstream_addr="",le="3"} 6
http_durations_bucket{upstream="",upstream_addr="",le="4"} 6
http_durations_bucket{upstream="",upstream_addr="",le="5"} 6
http_durations_bucket{upstream="",upstream_addr="",le="10"} 6
http_durations_bucket{upstream="",upstream_addr="",le="+Inf"} 6
http_durations_bucket{upstream="backend_jct_metrics",upstream_addr="127.0.0.1:10080",le="0.005"} 2
http_durations_bucket{upstream="backend_jct_metrics",upstream_addr="127.0.0.1:10080",le="0.01"} 2
http_durations_bucket{upstream="backend_jct_metrics",upstream_addr="127.0.0.1:10080",le="0.02"} 2
http_durations_bucket{upstream="backend_jct_metrics",upstream_addr="127.0.0.1:10080",le="0.03"} 2
http_durations_bucket{upstream="backend_jct_metrics",upstream_addr="127.0.0.1:10080",le="0.05"} 2
http_durations_bucket{upstream="backend_jct_metrics",upstream_addr="127.0.0.1:10080",le="0.075"} 2
http_durations_bucket{upstream="backend_jct_metrics",upstream_addr="127.0.0.1:10080",le="0.1"} 2
http_durations_bucket{upstream="backend_jct_metrics",upstream_addr="127.0.0.1:10080",le="0.2"} 2
http_durations_bucket{upstream="backend_jct_metrics",upstream_addr="127.0.0.1:10080",le="0.3"} 2
http_durations_bucket{upstream="backend_jct_metrics",upstream_addr="127.0.0.1:10080",le="0.4"} 2
http_durations_bucket{upstream="backend_jct_metrics",upstream_addr="127.0.0.1:10080",le="0.5"} 2
http_durations_bucket{upstream="backend_jct_metrics",upstream_addr="127.0.0.1:10080",le="0.75"} 2
http_durations_bucket{upstream="backend_jct_metrics",upstream_addr="127.0.0.1:10080",le="1"} 2
http_durations_bucket{upstream="backend_jct_metrics",upstream_addr="127.0.0.1:10080",le="1.5"} 2
http_durations_bucket{upstream="backend_jct_metrics",upstream_addr="127.0.0.1:10080",le="2"} 2
http_durations_bucket{upstream="backend_jct_metrics",upstream_addr="127.0.0.1:10080",le="3"} 2
http_durations_bucket{upstream="backend_jct_metrics",upstream_addr="127.0.0.1:10080",le="4"} 2
http_durations_bucket{upstream="backend_jct_metrics",upstream_addr="127.0.0.1:10080",le="5"} 2
http_durations_bucket{upstream="backend_jct_metrics",upstream_addr="127.0.0.1:10080",le="10"} 2
http_durations_bucket{upstream="backend_jct_metrics",upstream_addr="127.0.0.1:10080",le="+Inf"} 2
http_durations_count{upstream="",upstream_addr=""} 6
http_durations_count{upstream="backend_jct_metrics",upstream_addr="127.0.0.1:10080"} 2
http_durations_sum{upstream="",upstream_addr=""} 0.426
http_durations_sum{upstream="backend_jct_metrics",upstream_addr="127.0.0.1:10080"} 0.005
# HELP http_requests_backend Backend, счетчик HTTP запросов в разрезе host+upstream+upstream_server+код_ответа
# TYPE http_requests_backend counter
http_requests_backend{host="platform-ift2.sc.dev.mycompany",upstream="",upstream_addr="",status="200"} 3
http_requests_backend{host="platform-ift2.sc.dev.mycompany",upstream="",upstream_addr="",status="302"} 3
http_requests_backend{host="platform-ift2.sc.dev.mycompany",upstream="backend_jct_metrics",upstream_addr="127.0.0.1:10080",status="200"} 2
# HELP http_requests Frontend, счетчик HTTP запросов в разрезе host+ответвление+код_ответа
# TYPE http_requests counter
http_requests{host="platform-ift2.sc.dev.mycompany",jctroot="",status="200"} 3
http_requests{host="platform-ift2.sc.dev.mycompany",jctroot="",status="302"} 1
http_requests{host="platform-ift2.sc.dev.mycompany",jctroot="/metrics",status="200"} 2
http_requests{host="platform-ift2.sc.dev.mycompany",jctroot="/metrics",status="302"} 2
http_requests{host="platformauth-ift2.sc.dev.mycompany",jctroot="",status="200"} 4
# HELP nginx_metric_errors_total Number of nginx-lua-prometheus errors
# TYPE nginx_metric_errors_total counter
nginx_metric_errors_total 0
Для проверки доступности метрик в OpenShift необходимо:
Открыть терминал контейнера
iamproxyв pod IAM Proxy, заданным на этапе развертывания.Выполнить запрос:
curl http://<host>:10080/metrics/.Убедиться что метрики отдаются в ответе в формате Prometheus
Пример выполнения запроса curl http://<host>:10080/metrics/ (пояснения к представленным в примере метрикам,
приведены в подразделе "Выводимые метрики и их описание"):
# HELP auth_counters Счетчик запросов аутентификации и авторизации
# TYPE auth_counters counter
auth_counters{state="error_302"} 3
auth_counters{state="oidc_authenticated"} 1
auth_counters{state="oidc_created"} 2
auth_counters{state="success"} 2
# HELP http_connections Число HTTP соединений в настоящий момент
# TYPE http_connections gauge
http_connections{state="active"} 4
http_connections{state="reading"} 0
http_connections{state="waiting"} 2
http_connections{state="writing"} 2
# HELP http_durations Backend, гистограмма времени обработки HTTP запросов разрезе upstream+upstream_server (в секундах)
# TYPE http_durations histogram
http_durations_bucket{upstream="",upstream_addr="",le="0.005"} 3
http_durations_bucket{upstream="",upstream_addr="",le="0.01"} 3
http_durations_bucket{upstream="",upstream_addr="",le="0.02"} 3
http_durations_bucket{upstream="",upstream_addr="",le="0.03"} 3
http_durations_bucket{upstream="",upstream_addr="",le="0.05"} 3
http_durations_bucket{upstream="",upstream_addr="",le="0.075"} 4
http_durations_bucket{upstream="",upstream_addr="",le="0.1"} 4
http_durations_bucket{upstream="",upstream_addr="",le="0.2"} 5
http_durations_bucket{upstream="",upstream_addr="",le="0.3"} 6
http_durations_bucket{upstream="",upstream_addr="",le="0.4"} 6
http_durations_bucket{upstream="",upstream_addr="",le="0.5"} 6
http_durations_bucket{upstream="",upstream_addr="",le="0.75"} 6
http_durations_bucket{upstream="",upstream_addr="",le="1"} 6
http_durations_bucket{upstream="",upstream_addr="",le="1.5"} 6
http_durations_bucket{upstream="",upstream_addr="",le="2"} 6
http_durations_bucket{upstream="",upstream_addr="",le="3"} 6
http_durations_bucket{upstream="",upstream_addr="",le="4"} 6
http_durations_bucket{upstream="",upstream_addr="",le="5"} 6
http_durations_bucket{upstream="",upstream_addr="",le="10"} 6
http_durations_bucket{upstream="",upstream_addr="",le="+Inf"} 6
http_durations_bucket{upstream="backend_jct_metrics",upstream_addr="127.0.0.1:10080",le="0.005"} 2
http_durations_bucket{upstream="backend_jct_metrics",upstream_addr="127.0.0.1:10080",le="0.01"} 2
http_durations_bucket{upstream="backend_jct_metrics",upstream_addr="127.0.0.1:10080",le="0.02"} 2
http_durations_bucket{upstream="backend_jct_metrics",upstream_addr="127.0.0.1:10080",le="0.03"} 2
http_durations_bucket{upstream="backend_jct_metrics",upstream_addr="127.0.0.1:10080",le="0.05"} 2
http_durations_bucket{upstream="backend_jct_metrics",upstream_addr="127.0.0.1:10080",le="0.075"} 2
http_durations_bucket{upstream="backend_jct_metrics",upstream_addr="127.0.0.1:10080",le="0.1"} 2
http_durations_bucket{upstream="backend_jct_metrics",upstream_addr="127.0.0.1:10080",le="0.2"} 2
http_durations_bucket{upstream="backend_jct_metrics",upstream_addr="127.0.0.1:10080",le="0.3"} 2
http_durations_bucket{upstream="backend_jct_metrics",upstream_addr="127.0.0.1:10080",le="0.4"} 2
http_durations_bucket{upstream="backend_jct_metrics",upstream_addr="127.0.0.1:10080",le="0.5"} 2
http_durations_bucket{upstream="backend_jct_metrics",upstream_addr="127.0.0.1:10080",le="0.75"} 2
http_durations_bucket{upstream="backend_jct_metrics",upstream_addr="127.0.0.1:10080",le="1"} 2
http_durations_bucket{upstream="backend_jct_metrics",upstream_addr="127.0.0.1:10080",le="1.5"} 2
http_durations_bucket{upstream="backend_jct_metrics",upstream_addr="127.0.0.1:10080",le="2"} 2
http_durations_bucket{upstream="backend_jct_metrics",upstream_addr="127.0.0.1:10080",le="3"} 2
http_durations_bucket{upstream="backend_jct_metrics",upstream_addr="127.0.0.1:10080",le="4"} 2
http_durations_bucket{upstream="backend_jct_metrics",upstream_addr="127.0.0.1:10080",le="5"} 2
http_durations_bucket{upstream="backend_jct_metrics",upstream_addr="127.0.0.1:10080",le="10"} 2
http_durations_bucket{upstream="backend_jct_metrics",upstream_addr="127.0.0.1:10080",le="+Inf"} 2
http_durations_count{upstream="",upstream_addr=""} 6
http_durations_count{upstream="backend_jct_metrics",upstream_addr="127.0.0.1:10080"} 2
http_durations_sum{upstream="",upstream_addr=""} 0.426
http_durations_sum{upstream="backend_jct_metrics",upstream_addr="127.0.0.1:10080"} 0.005
# HELP http_requests_backend Backend, счетчик HTTP запросов в разрезе host+upstream+upstream_server+код_ответа
# TYPE http_requests_backend counter
http_requests_backend{host="platform-ift2.sc.dev.mycompany",upstream="",upstream_addr="",status="200"} 3
http_requests_backend{host="platform-ift2.sc.dev.mycompany",upstream="",upstream_addr="",status="302"} 3
http_requests_backend{host="platform-ift2.sc.dev.mycompany",upstream="backend_jct_metrics",upstream_addr="127.0.0.1:10080",status="200"} 2
# HELP http_requests Frontend, счетчик HTTP запросов в разрезе host+ответвление+код_ответа
# TYPE http_requests counter
http_requests{host="platform-ift2.sc.dev.mycompany",jctroot="",status="200"} 3
http_requests{host="platform-ift2.sc.dev.mycompany",jctroot="",status="302"} 1
http_requests{host="platform-ift2.sc.dev.mycompany",jctroot="/metrics",status="200"} 2
http_requests{host="platform-ift2.sc.dev.mycompany",jctroot="/metrics",status="302"} 2
http_requests{host="platformauth-ift2.sc.dev.mycompany",jctroot="",status="200"} 4
# HELP nginx_metric_errors_total Number of nginx-lua-prometheus errors
# TYPE nginx_metric_errors_total counter
nginx_metric_errors_total 0
Выводимые метрики и их описание#
Метрики событий аутентификации#
Наименование операции |
Частота сбора метрик |
Название метрики |
Тип метрики |
Описание метрики |
Описание результатов выполнения операций |
|---|---|---|---|---|---|
Аутентификация |
После выполнения операции |
auth_counters |
Счетчик |
Количество событий "получения ошибок с кодом ХХХ" |
{state="error_302"} 5 |
Аутентификация |
После выполнения операции |
auth_counters |
Счетчик |
Количество событий "успешной аутентификации" |
{state="oidc_authenticated"} 2 |
Аутентификация |
После выполнения операции |
auth_counters |
Счетчик |
Количество событий "создания сессии" |
{state="oidc_created"} 3 |
Аутентификация |
После выполнения операции |
auth_counters |
Счетчик |
Количество событий "обновления токена" |
{state="oidc_regenerated"} 4 |
Проксирование и аутентификация |
После выполнения операции |
auth_counters |
Счетчик |
Количество событий "обращение аутентифицированного пользователя" |
{state="success"} 1705 |
Метрики событий подключений#
Наименование операции |
Частота сбора метрик |
Название метрики |
Тип метрики |
Описание метрики |
Описание результатов выполнения операций |
|---|---|---|---|---|---|
Проксирование и аутентификация |
При выполнении запроса |
http_connections |
Счетчик |
Количество активных подключений |
{state="active"} 1 |
Проксирование и аутентификация |
При выполнении запроса |
http_connections |
Счетчик |
Количество подключений чтения |
{state="reading"} 0 |
Проксирование и аутентификация |
При выполнении запроса |
http_connections |
Счетчик |
Количество подключений ожидания |
{state="waiting"} 0 |
Проксирование и аутентификация |
При выполнении запроса |
http_connections |
Счетчик |
Количество подключений записи |
{state="writing"} 1 |
Гистограмма времени обработки HTTP запросов разрезе upstream+upstream_server (в секундах)#
Наименование операции |
Частота сбора метрик |
Название метрики |
Тип метрики |
Описание метрики |
Описание результатов выполнения операций |
|---|---|---|---|---|---|
Проксирование |
После выполнения операции |
http_durations_bucket |
Счетчик |
Заполнение bucket upstream ответвления |
{upstream="backend_jct_pacman",upstream_addr="10.x.x.102:80",le="4"} 45 |
Проксирование |
После выполнения операции |
http_durations_count |
Счетчик |
Количество обращений в пространстве |
{upstream="backend_jct_nexus",upstream_addr="10.x.x.136:443"} 819 |
Проксирование |
После выполнения операции |
http_durations_sum |
Счетчик |
Сумма обращений в пространстве |
{upstream="backend_jct_nexus",upstream_addr="10.x.x.15:443"} 12.639 |
Cчетчик HTTP запросов в разрезе host+upstream+upstream_server+код_ответа#
Наименование операции |
Частота сбора метрик |
Название метрики |
Тип метрики |
Описание метрики |
Описание результатов выполнения операций |
|---|---|---|---|---|---|
Проксирование |
После выполнения операции |
http_requests_backend |
Счетчик |
Количество обращений к backend |
{host="platform-devb.mycompany.ru",upstream="backend_jct_nexus",upstream_addr="10.x.x.15:443",status="202"} 1 |
Счетчик HTTP запросов в разрезе host+ответвление+код_ответа#
Наименование операции |
Частота сбора метрик |
Название метрики |
Тип метрики |
Описание метрики |
Описание результатов выполнения операций |
|---|---|---|---|---|---|
Проксирование |
После выполнения операции |
http_requests |
Счетчик |
Количество обращений к ответвлению |
{host="platform-devb.mycompany.ru",jctroot="/nexus",status="204"} 945 |
Метрики ядра Nginx#
Наименование операции |
Частота сбора метрик |
Название метрики |
Тип метрики |
Описание метрики |
Описание результатов выполнения операций |
|---|---|---|---|---|---|
Проксирование |
При возникновении |
nginx_metric_errors_total |
Счетчик |
Количество ошибок Nginx |
0 |
Стандартный дашборд IAM Proxy#
В состав дистрибутива входит Дашборд, который позволяет осуществлять мониторинг ключевых точек отказа IAM Proxy и сервисов защиту которых он осуществляет. Дашборд представляет из себя файл в формате json для импорта в Platform V Monitor, который располагается в дистрибутиве с бинарными артефактами - package/deploy/monitoring/pvm-dashboard-for-iamproxy-v1.json
После успешного импорта в интерфейс Platform V Monitor для просмотра будет предоставлено несколько панелей:

Кнопка выбора Теннанта - этот параметр определяется в параметрах установки MONA для CDJE в файле opm_unimon.unimon-agent.conf;
Кнопка выбора приложения, определяется лейблом app сервиса из которого извлекаются метрики при помощи unimon-agent ;
Кнопка выбора namespace в которое установлено приложение;
Кнопка выбора POD;
Кнопка выбора метрики, которую отдает приложение;
Кнопка выбора проксируемого приложения;
Панель отображения количества запущенных POD IAM Proxy;
Панель, отображающая количество Аутентификаций на IAM Proxy (успешные аутентификации, созданные аутентификации и ошибки аутентификации);
Панель отображающая нагрузку на Proxy в запросах в секунду;
Панель отображающая количество запросов к проксируемуму сервису в минуту, с кодом ответа полученным от этого сервиса, выбрать сервис для отображения можно при помощи кнопки 6;
Гистограмма отражающая статистику по скорости выполнения запроса к проксируемуму сервису в секундах. Значение снизу отражает время выполнения запроса к сервису, верхнее количество запросов которое попало в промежуток равный или ниже времени обозначенном на шкале внизу;
Информационная панель, которая показывает графическое значение выбранной метрики по кнопке 5;
Информационная панель, которая показывает общую сводку по выбранной, кнопкой 5, метрике, в виде таблицы.