Состояние системы
Система мониторинга и сборка метрик публикует показатели работоспособности Avanpost FAM и готовности Avanpost FAM к приёму запросов на отдельном URI /health.
Система предоставляет следующие показатели:
- Работоспособность системы (liveness probe).
- Готовность системы (readiness probe).
Настройка интерфейса показателей состояния Avanpost FAM
Для настройки параметров публикации интерфейса публикации метрик следует:
- Настроить параметры секции
metricsв конфигурационном файлеconfig.tomlAvanpost FAM Server по аналогии с примером:[metrics] host = "localhost" port = 9089
Параметр Назначение host Хост (адрес) для метрик. Следует использовать тот же интерфейс, на котором публикуется основной интерфейс аутентификации FAM. port Порт, на котором доступны метрики. Следует использовать тот же интерфейс, на котором публикуется основной интерфейс аутентификации FAM. - После внесения изменений в параметры сессии в
config.tomlследует перезапустить службу Avanpost FAM Server при помощи команды:sudo systemctl restart idp
Проверка доступности показателей состояния Avanpost FAM
Любым подходящим инструментом отправьте HTTP-запрос на URI (вместо значения host следует поставить фактический адрес base_url FAM Server):
- Для получения liveness probe -
http://host/health/live. - Для получения readiness probe -
http://host/health/ready.
Метрики системы
Система публикует мгновенные показатели работы Системы на отдельном URI /metrics. Этот URI доступен по отдельному сетевому порту и может быть размещён на отдельном сетевом интерфейсе и на отдельном хосте, изолированном от остальных веб-интерфейсов.
Примечание
В роли потребителя метрик в инфраструктуре может быть развёрнута система Prometheus, а для визуализации показателей - сформирован дашборд в Grafana.
Система предоставляет следующие показатели:
- Число фактов аутентификации с использованием определённого фактора аутентификации.
- Число фактов аутентификации в определённые приложения.
- Число активных сессий.
- Число создаваемых в момент времени новых сессий.
- Число завершаемых в момент времени сессий.
- Число создаваемых новых УЗ пользователей.
- Число блокируемых УЗ пользователей.
- Набор показателей производительности HTTP-запросов.
- Стандартный набор метрик языка Golang.
Настройка интерфейса публикации метрик Prometheus
Для настройки параметров публикации интерфейса публикации метрик настройте параметры секции metrics в конфигурационном файле config.toml Avanpost FAM.
| Параметр | Значение |
|---|---|
[metrics] (секция настроек публикации метрик) | |
| host | Хост (IP-адрес,) для метрик. |
| port | Сетевой порт, на котором доступны метрики. |
После внесения изменений в параметры конфигурационного файла config.toml требуется перезапустить службу FAM Server.
Проверка доступности интерфейса публикации метрик
Любым подходящим инструментом отправьте HTTP-запрос на указанный в конфигурации host и port.
В ответ Система вернёт заголовок HTTP/1.1 200 OK и в ответе текстовый набор показателей следующего вида:
Пример
# HELP go_gc_duration_seconds A summary of the GC invocation durations.
# TYPE go_gc_duration_seconds summary
go_gc_duration_seconds{quantile="0"} 1.58e-05
go_gc_duration_seconds{quantile="0.25"} 3.45e-05
go_gc_duration_seconds{quantile="0.5"} 4.24e-05
go_gc_duration_seconds{quantile="0.75"} 4.73e-05
...Подключение интерфейса публикации метрик к Prometheus
В конфигурационном файле /etc/prometheus/prometheus.yml в секцию scrape_configs добавьте задачу на сбор метрик с указанного хоста.
Настройка метрик состояния подключений к БД PostgreSQL
Avanpost FAM предоставляет встроенные метрики для мониторинга состояния подключений к базе данных PostgreSQL через пул соединений pgx. Метрики доступны в формате JSON и могут использоваться для диагностики производительности, выявления узких мест и настройки параметров пула соединений. Собранные данные выводятся в лог на уровне логирования trace.
Для настройки параметров публикации интерфейса публикации метрик следует настроить параметры секции metrics в конфигурационном файле config.toml Avanpost FAM.
[metrics] host = "localhost" port = 9089 [metrics.poolStat] enabled = true showLogsIntervalInSeconds = 30 prettyLogs = true
| Параметр | Значение |
|---|---|
[metrics] (секция настроек публикации метрик) | |
| host | Хост (адрес) для метрик. |
| port | Порт, на котором доступны метрики. |
| [poolStat] (секция настроек для сбора статистики по пулу соединений к базе данных PostgreSQL) | |
| enabled | Флаг, включающий или отключающий сбор статистики по пулу соединений. |
| showLogsIntervalInSeconds | Интервал в секундах, с которым статистика по пулу соединений будет выводиться в логи системы. |
| prettyLogs | Флаг, определяющий формат вывода статистики в логах. При значении |
После внесения изменений в параметры конфигурационного файла config.toml требуется перезапустить службу FAM Server.
Приложение А. Справочник метрик Prometheus
Prometheus — это система мониторинга, собирающая и хранящая временные ряды данных (time series data) в виде метрик. Эти метрики представляют собой именованные значения с временной меткой и могут включать дополнительные метки. Ниже приведены метрики, используемые при анализе Avanpost FAM.
Легенда типов
counter— монотонно растущий счётчик (при перезапуске процесса может сбрасываться до 0).gauge— текущее значение, может увеличиваться и уменьшаться.histogram— гистограмма распределения, в которой экспортируются:*_bucket{le="..."}— накопительное количество значений ≤ указанного порога,*_sum— сумма всех наблюдённых значений,*_count— общее количество наблюдений.
summary— квантильная статистика, в которой экспортируются:*_quantile{quantile="..."}— значения квантилей,*_sumи*_count— аналогично гистограмме (метрики данного вида являются счётчиками (counter), а не отдельные типы. В документации они часто помечаются как "части" гистограмм или сводок).
Метрики их описания представлены в нижеприведенной таблице:
| Метрика | Тип | Ед. изм | Описание |
|---|---|---|---|
Go runtime: GC и память | |||
|
| секунды | Время пауз сборки мусора (GC). Используется для анализа задержек. |
|
| секунды | Суммарное время всех пауз GC за время работы процесса. |
|
| количество | Общее число пауз сборки мусора. |
|
| % | Значение параметра |
|
| байты | Лимит виртуальной памяти (в байтах), установленный через переменную окружения |
|
| количество | Текущее число активных Go-рутин. Важно для отслеживания утечек или перегрузки. |
|
| — | Информация о версии Go-рантайма. Постоянное значение |
|
| байты | Объём памяти, аллоцированной в куче (живые объекты). Аналогично |
|
| байты | Общее количество байт, аллоцированных в куче за всё время (включая освобождённые). |
|
| байты | Память, используемая хеш-таблицей профилирования памяти. |
|
| объекты | Общее число объектов,освобождённых из кучи. |
|
| байты | Память, используемая для хранения метаданных GC. |
|
| байты | То же, что |
|
| байты | Память в куче, не используемая под объекты (но может быть вновь использована). |
|
| байты | Память в куче, находящаяся в использовании (включает фрагментацию). |
|
| объекты | Количество объектов, аллоцированных в куче. |
|
| байты | Объём памяти кучи, возвращённый ОС (через |
|
| байты | Общий объём памяти, запрошенный у ОС для кучи. |
|
| Unix sec | Временная метка последней сборки мусора. |
|
| объекты | Общее числоаллокацийв куче (включая освобождённые). |
|
| байты | Память, используемая структурами |
|
| байты | Память |
|
| байты | Память под структуры |
|
| байты | Память |
|
| байты | Объём памяти в куче, при котором будет запущена следующая GC. |
|
| байты | Память, используемая для других системных нужд (не в куче, не в стеке). |
|
| байты | Память, используемая стеками Go-рутин. |
|
| байты | Память стеков,полученная от ОС. |
|
| байты | Общий объём памяти,запрошенный у ОСвсеми компонентами Go-рантайма. |
|
| количество | Значение |
|
| потоки ОС | Текущее число OS-потоков (M), созданных Go-рантаймом. |
HTTP метрики приложения | |||
|
| количество | Число HTTP-запросов, обрабатываемых в данный момент. |
|
| количество | Число неуспешных запросов, которые в данный момент обрабатываются. Полезно для выявления "зависших" ошибок. |
|
| секунды | Гистограмма времени обработки HTTP-запросов. Разбита по |
|
| секунды | Суммарное время обработки всех запросов (по комбинации меток). |
|
| количество | Общее число обработанных запросов (по комбинации меток). |
Identity Provider (IDP) метрики | |||
|
| аккаунты | Общее число отключённых учётных записей. |
|
| сессии | Текущее число активных сессий в IDP. |
|
| аутентификации | Количество успешных входов в системы (по приложениям). |
|
| проверки | Сколько раз проверялся каждый фактор аутентификации (например, SMS, TOTP). |
|
| сессии | Общее число созданных сессий за всё время. |
|
| блокировки | Сколько раз пользователи были заблокированы (например, из-за множества попыток входа). |
Метрики процесса (process_*) | |||
|
| CPU-секунды | Суммарное время CPU (пользовательское и системное), затраченное процессом. |
|
| дескрипторы | Максимально допустимое число открытых файловых дескрипторов. |
|
| дескрипторы | Текущее число открытых файловых дескрипторов. Контролируйте приближение к лимиту. |
|
| байты | Общее количество байт, полученных процессом по сети (TCP/UDP). |
|
| байты | Общее количество байт, отправленных процессом по сети. |
|
| байты | RSS – объём физической памяти, используемой процессом (не подкачивается). |
|
| Unix sec | Временная метка запуска процесса. Полезно для отслеживания рестартов. |
|
| байты | Общий виртуальный объём памяти процесса. |
|
| байты | Максимальный объём виртуальной памяти, разрешённый системой. |
| Специфические метрики API-сервиса | |||
|
| количество | Количество одновременных запросов, обрабатываемых системой в текущий момент |
|
| количество | Количество одновременных запросов, завершившихся ошибкой |
|
| секунды | Длительность обработки входящих запросов |
|
| секунды | Время ответа на HTTP-запросы |
|
| количество | Общее количество Push-уведомлений аутентификации, подтверждённых пользователями |
|
| количество | Общее количество Push-уведомлений аутентификации, отклонённых пользователями |
|
| количество | Общее количество попыток входа по QR-коду |
|
| количество | Общее количество привязок устройств/факторов |
| Специфические метрики Push-сервиса | |||
|
| количество | Общее количество отправленных пользователю Push-уведомлений аутентификации |
|
| количество | Общее количество отправленных пользователю информационных Push-уведомлений |
|
| количество | Общее количество временных кодов, отправленных во внешнее хранилище |
Приложение Б. Справочник метрик состояния подключений к PostgreSQL
При настроенной опции логирования состояния подключений к PostgreSQL система будет периодически (с интервалом showLogsIntervalInSeconds) выводить в лог следующие показатели (данные логи выводятся на уровне логирования trace):
| Параметр | Значение |
|---|---|
| Общее количество соединений в пуле (активных + простаивающих). |
| Количество соединений, в данный момент используемых запросами. |
| Количество простаивающих (готовых к использованию) соединений. |
| Количество соединений, находящихся в процессе установки. |
| Максимально допустимое количество соединений в пуле. |
| Общее количество попыток получения соединения из пула. |
| Среднее время ожидания получения соединения. |
| Количество отменённых попыток получения соединения. |
| Количество запросов, которые не смогли немедленно получить соединение и инициировали создание нового соединения. |
| Общее количество созданных новых соединений. |
| Количество соединений, закрытых из-за превышения лимита простаивающих. |
| Количество соединений, закрытых из-за истечения максимального времени жизни. |