События мониторинга#

Сервис аутентификации не оперирует бизнес-операциями, но позволяет следить за метриками в формате Prometheus.

Предусловия#

Для получения метрик в формате Prometheus необходимо настроить параметр PROXY_METRICS_ENABLE в значение True ( подробнее в разделе Параметры основной функциональности компонента IAM Proxy) . Метрики публикуются на отдельном порту в открытом виде, для просмотра метрик ролевая модель не применяется. Метрики в формате Prometheus доступны в браузере по адресу http://<host>:10080/metrics/ (подробнее в разделе Параметры основной функциональности компонента IAM Proxy) .

Проверка доступности метрик#

Для проверки доступности метрик на виртуальной машине необходимо:

  1. Открыть ssh-терминал VM по адресу папки (адрес задается на этапе развертывания, подробнее в разделе Установка), где установлен IAM Proxy.

  2. Выполнить запрос: curl http://<host>:10080/metrics/.

  3. Убедиться, что метрики отдаются в ответе в формате 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 необходимо:

  1. Открыть терминал контейнера iamproxy в pod IAM Proxy, заданным на этапе развертывания.

  2. Выполнить запрос: curl http://<host>:10080/metrics/.

  3. Убедиться что метрики отдаются в ответе в формате 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 для просмотра будет предоставлено несколько панелей:

Внешний вид Dashboard

  1. Кнопка выбора Теннанта - этот параметр определяется в параметрах установки MONA для CDJE в файле opm_unimon.unimon-agent.conf;

  2. Кнопка выбора приложения, определяется лейблом app сервиса из которого извлекаются метрики при помощи unimon-agent ;

  3. Кнопка выбора namespace в которое установлено приложение;

  4. Кнопка выбора POD;

  5. Кнопка выбора метрики, которую отдает приложение;

  6. Кнопка выбора проксируемого приложения;

  7. Панель отображения количества запущенных POD IAM Proxy;

  8. Панель, отображающая количество Аутентификаций на IAM Proxy (успешные аутентификации, созданные аутентификации и ошибки аутентификации);

  9. Панель отображающая нагрузку на Proxy в запросах в секунду;

  10. Панель отображающая количество запросов к проксируемуму сервису в минуту, с кодом ответа полученным от этого сервиса, выбрать сервис для отображения можно при помощи кнопки 6;

  11. Гистограмма отражающая статистику по скорости выполнения запроса к проксируемуму сервису в секундах. Значение снизу отражает время выполнения запроса к сервису, верхнее количество запросов которое попало в промежуток равный или ниже времени обозначенном на шкале внизу;

  12. Информационная панель, которая показывает графическое значение выбранной метрики по кнопке 5;

  13. Информационная панель, которая показывает общую сводку по выбранной, кнопкой 5, метрике, в виде таблицы.