Мониторинг функционирования приложений#

Стандартный сервис мониторинга#

Для мониторинга доступности приложений Blitz Identity Provider предусмотрен сервис /blitz/metrics, вызываемый с помощью HTTP GET. Рекомендуется, чтобы сервис был доступен на каждом сервере приложения по HTTP при вызове из внутренней сети с серверов мониторинга и вместе с тем, чтобы сервис был недоступен при вызове из внешних сетей и с рабочих мест пользователей.

В случае если приложение доступно, то сервис /blitz/metrics вернет детальную информацию о метриках функционирования приложения в формате Prometheus.

Пример ответа сервиса
# HELP blitz_idp_uptime_seconds Uptime
# TYPE blitz_idp_uptime_seconds gauge
blitz_idp_uptime_seconds{blitz_host="papp01.loc",} 63859.0
# HELP blitz_idp_licence_exp_seconds Licence expiration
# TYPE blitz_idp_licence_exp_seconds gauge
blitz_idp_licence_exp_seconds{blitz_host="papp01.loc",} 9.223372036854776E18
# HELP blitz_idp_config_mtime Last time, a file was changed
# TYPE blitz_idp_config_mtime gauge
# HELP blitz_idp_datasource_latency Latency of an datasource operation
# TYPE blitz_idp_datasource_latency histogram
blitz_idp_datasource_latency_bucket{blitz_host="papp01.loc",ds_type="ldap",ds_name="389-ds",op_type="read",le="0.005",} 13.0
…
blitz_idp_datasource_latency_bucket{blitz_host="papp01.loc",ds_type="ldap",ds_name="389-ds",op_type="read",le="+Inf",} 29.0
blitz_idp_datasource_latency_count{blitz_host="papp01.loc",ds_type="ldap",ds_name="389-ds",op_type="read",} 29.0
blitz_idp_datasource_latency_sum{blitz_host="papp01.loc",ds_type="ldap",ds_name="389-ds",op_type="read",} 0.3112787189999999
# HELP blitz_idp_mq_connections Amount connections to datasource
# TYPE blitz_idp_mq_connections gauge
blitz_idp_mq_connections{blitz_host="papp01.loc",mq_type="rmq",mq_server="pmq01.loc_5672",} 1.0
# HELP blitz_idp_mq_latency Latency of an mq operation
# TYPE blitz_idp_mq_latency histogram
blitz_idp_mq_latency_bucket{blitz_host="papp01.loc",mq_type="rmq",mq_server="pmq01.loc_5672",broker="blitz.events.direct",op_type="write",le="0.005",} 1.0
…
blitz_idp_mq_latency_bucket{blitz_host="papp01.loc",mq_type="rmq",mq_server="pmq01.loc_5672",broker="blitz.events.direct",op_type="write",le="+Inf",} 3.0
blitz_idp_mq_latency_count{blitz_host="papp01.loc",mq_type="rmq",mq_server="pmq01.loc_5672",broker="blitz.events.direct",op_type="write",} 3.0
blitz_idp_mq_latency_sum{blitz_host="papp01.loc",mq_type="rmq",mq_server="pmq01.loc_5672",broker="blitz.events.direct",op_type="write",} 0.028808135999999998
# HELP blitz_idp_authn_method_app_total Amount of method authentications by app id
# TYPE blitz_idp_authn_method_app_total counter
blitz_idp_authn_method_app_total{blitz_host="papp01.loc",app_id="_blitz_profile",method="sms",status="success",} 2.0
blitz_idp_authn_method_app_total{blitz_host="papp01.loc",app_id="_blitz_profile",method="cls",status="other_error",} 7.0
blitz_idp_authn_method_app_total{blitz_host="papp01.loc",app_id="_blitz_profile",method="password",status="success",} 4.0
blitz_idp_authn_method_app_total{blitz_host="papp01.loc",app_id="_blitz_profile",method="knownDevice",status="other_error",} 3.0
# HELP blitz_idp_authn_method_total Amount of authentications by a method
# TYPE blitz_idp_authn_method_total counter
blitz_idp_authn_method_total{blitz_host="papp01.loc",method="password",status="success",} 4.0
blitz_idp_authn_method_total{blitz_host="papp01.loc",method="knownDevice",status="other_error",} 3.0
blitz_idp_authn_method_total{blitz_host="papp01.loc",method="cls",status="other_error",} 7.0
blitz_idp_authn_method_total{blitz_host="papp01.loc",method="sms",status="success",} 2.0
# HELP blitz_idp_authn_method_latency Latency of an authentication method
# TYPE blitz_idp_authn_method_latency histogram
blitz_idp_authn_method_latency_bucket{blitz_host="papp01.loc",method="sms",le="1.0",} 0.0
…
blitz_idp_authn_method_latency_bucket{blitz_host="papp01.loc",method="sms",le="+Inf",} 2.0
blitz_idp_authn_method_latency_count{blitz_host="papp01.loc",method="sms",} 2.0
blitz_idp_authn_method_latency_sum{blitz_host="papp01.loc",method="sms",} 28.686999999999998
blitz_idp_authn_method_latency_bucket{blitz_host="papp01.loc",method="password",le="1.0",} 0.0
…
blitz_idp_authn_method_latency_bucket{blitz_host="papp01.loc",method="password",le="+Inf",} 4.0
blitz_idp_authn_method_latency_count{blitz_host="papp01.loc",method="password",} 4.0
blitz_idp_authn_method_latency_sum{blitz_host="papp01.loc",method="password",} 1835.901
# HELP blitz_idp_datasource_connections Amount connections to datasource
# TYPE blitz_idp_datasource_connections gauge
blitz_idp_datasource_connections{blitz_host="papp01.loc",ds_type="ldap",ds_name="389-ds",} 10.0
# HELP blitz_idp_version Application version
# TYPE blitz_idp_version gauge
blitz_idp_version{blitz_host="papp01.loc",part="major",} 5.0
blitz_idp_version{blitz_host="papp01.loc",part="minor",} 16.0
blitz_idp_version{blitz_host="papp01.loc",part="patch",} 1.0
# HELP blitz_idp_notify_user_total Amount of user notifications by channel
# TYPE blitz_idp_notify_user_total counter
blitz_idp_notify_user_total{blitz_host="papp01.loc",channel="email",} 3.0
blitz_idp_notify_user_total{blitz_host="papp01.loc",channel="sms",} 4.0
blitz_idp_notify_user_total{blitz_host="papp01.loc",channel="push",} 2.0

Имя каждой метрики начинается с имени приложения (дефис в имени заменен на подчеркивание): blitz_idp_%%%, blitz_registration_%%%, blitz_recovery_%%%, blitz_console_%%%. Список доступных метрик приведен в таблице.

Метрики функционирования Blitz Identity Provider

Право доступа

Тип

Пояснение

uptime_seconds

gauge

Время с момента запуска приложения (в секундах)

licence_exp_seconds

gauge

Время до истечения срока действия лицензии (в секундах)

config_mtime

gauge

Время последнего изменения файла конфигурации

datasource_latency

histogram

Задержки ответа от хранилища УЗ по операциям чтения и записи (могут быть типы ldap, jdbc, couch)

mq_connections

gauge

Количество коннектов к MQ (rmq, kafka)

mq_latency

histogram

Задержки ответа от MQ (rmq, kafka)

authn_method_app_total

counter

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

authn_method_total

counter

Общее кол-во успешных и нет аутентификаций разными методами

authn_method_latency

histogram

Длительность аутентификации по разным методам входа

datasource_connections

gauge

Кол-во коннектов к хранилищам

version

gauge

Версия приложения

notify_user_total

counter

Кол-во направленных сообщений по разным каналам

authn_method_app_created

служебные

Эти метрики (с суффиксом _created) генерируются в связи с особенностями Prometheus и содержат время в unix timestamp момента создания метрики.

authn_method_created

authn_method_latency_created

datasource_latency_created

mq_latency_created

notify_user_created

Использование Grafana и Prometheus#

Для быстрой настройки мониторинга и визуализации процессов Blitz Identity Provider удобно использовать job-задание Prometheus и шаблон дашборда Grafana, входящие в поставку (resources.zip).

Совет

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

Для настройки визуализации выполните следующие действия:

  1. Модифицируйте job-задание prometheus.yaml в соответствии с конфигурацией своей системы и добавьте его в Prometheus.

  2. Модифицируйте шаблон дашборда blitz-dashboard.json. Настройте Grafana и добавьте дашборд.

Примеры визуализации данных в Grafana:

../_images/grafana-visual-1.png ../_images/grafana-visual-2.png