Состояние системы
Система мониторинга и сборка метрик публикует показатели работоспособности Avanpost FAM и готовности Avanpost FAM к приёму запросов на отдельном URI /health.
Система предоставляет следующие показатели:
- Работоспособность системы (liveness probe).
- Готовность системы (readiness probe).
Настройка интерфейса показателей состояния Avanpost FAM
Для настройки параметров публикации интерфейса публикации метрик следует настроить параметры секции server в конфигурационном файле config.toml Avanpost FAM Server. Данные показатели размещаются на том же интерфейсе, на котором публикуется основной интерфейс аутентификации Системы.
После внесения изменений в параметры сессии в 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):
| Параметр | Значение |
|---|---|
| Общее количество соединений в пуле (активных + простаивающих). |
| Количество соединений, в данный момент используемых запросами. |
| Количество простаивающих (готовых к использованию) соединений. |
| Количество соединений, находящихся в процессе установки. |
| Максимально допустимое количество соединений в пуле. |
| Общее количество попыток получения соединения из пула. |
| Среднее время ожидания получения соединения. |
| Количество отменённых попыток получения соединения. |
| Количество запросов, которые не смогли немедленно получить соединение и инициировали создание нового соединения. |
| Общее количество созданных новых соединений. |
| Количество соединений, закрытых из-за превышения лимита простаивающих. |
| Количество соединений, закрытых из-за истечения максимального времени жизни. |