Настройка метрик в Avanpost FAM/MFA+

Состояние системы

Система мониторинга и сборка метрик публикует показатели работоспособности Avanpost FAM и готовности Avanpost FAM к приёму запросов на отдельном URI /health

Система предоставляет следующие показатели:

  1. Работоспособность системы (liveness probe).
  2. Готовность системы (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):

Метрики системы

Система публикует мгновенные показатели работы Системы на отдельном URI /metrics. Этот URI доступен по отдельному сетевому порту и может быть размещён на отдельном сетевом интерфейсе и на отдельном хосте, изолированном от остальных веб-интерфейсов.

Примечание

В роли потребителя метрик в инфраструктуре может быть развёрнута система Prometheus, а для визуализации показателей - сформирован дашборд в Grafana.

Система предоставляет следующие показатели:

  1. Число фактов аутентификации с использованием определённого фактора аутентификации.
  2. Число фактов аутентификации в определённые приложения.
  3. Число активных сессий.
  4. Число создаваемых в момент времени новых сессий.
  5. Число завершаемых в момент времени сессий.
  6. Число создаваемых новых УЗ пользователей.
  7. Число блокируемых УЗ пользователей.
  8. Набор показателей производительности HTTP-запросов.
  9. Стандартный набор метрик языка Golang.

Настройка интерфейса публикации метрик Prometheus

Для настройки параметров публикации интерфейса публикации метрик настройте параметры секции metrics в конфигурационном файле config.toml Avanpost FAM.

ПараметрЗначение
hostIP-адрес, на котором предполагается открыть сетевой порт
portСетевой порт

Пример корректно настроенной секции metrics:

"metrics": {
	"host": "localhost",
	"port": 9089
},

После внесения изменений в параметры сессии в config.toml перезапустите службу Сервера Системы

Проверка доступности интерфейса публикации метрик

Любым подходящим инструментом отправьте 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 добавьте задачу на сбор метрик с указанного хоста. 

Пример корректно настроенной секции scrape_configs в prometheus.yml:

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label job=<job_name> to any timeseries scraped from this config.
  - job_name: 'FAM'
    scrape_interval: 5s
    static_configs:
    - targets: ['localhost:9089']


Приложение А. Справочник метрик Prometheus

Prometheus — это система мониторинга, собирающая и хранящая временные ряды данных (time series data) в виде метрик. Эти метрики представляют собой именованные значения с временной меткой и могут включать дополнительные метки. Ниже приведены метрики, используемые при анализе Avanpost FAM.

Легенда типов

  • counter — монотонно растущий счётчик (при перезапуске процесса может сбрасываться до 0).
  • gauge — текущее значение, может увеличиваться и уменьшаться.
  • histogram — гистограмма распределения, в которой экспортируются:
    • *_bucket{le="..."} — накопительное количество значений ≤ указанного порога,
    • *_sum — сумма всех наблюдённых значений,
    • *_count — общее количество наблюдений.
  • summary — квантильная статистика, в которой экспортируются:
    • *_quantile{quantile="..."} — значения квантилей,
    • *_sum и *_count — аналогично гистограмме (метрики данного вида являются счётчиками (counter), а не отдельные типы. В документации они часто помечаются как "части" гистограмм или сводок).

Метрики их описания представлены в нижеприведенной таблице:

МетрикаТипЕд. измОписание

Go runtime: GC и память

go_gc_duration_seconds

summary

секунды

Время пауз сборки мусора (GC). Используется для анализа задержек.

go_gc_duration_seconds_sum

counter

секунды

Суммарное время всех пауз GC за время работы процесса.

go_gc_duration_seconds_count

counter

количество

Общее число пауз сборки мусора.

go_gc_gogc_percent

gauge

%

Значение параметра GOGC — коэффициент, определяющий частоту GC. Например, GOGC=100 означает, что GC запускается при удвоении объёма живых объектов.

go_gc_gomemlimit_bytes

gauge

байты

Лимит виртуальной памяти (в байтах), установленный через переменную окружения GOMEMLIMIT. Влияет на частоту GC.

go_goroutines

gauge

количество

Текущее число активных Go-рутин. Важно для отслеживания утечек или перегрузки.

go_info

gauge

Информация о версии Go-рантайма. Постоянное значение 1с метками, например,version="go1.21.5".

go_memstats_alloc_bytes

gauge

байты

Объём памяти, аллоцированной в куче (живые объекты). Аналогично heap_alloc.

go_memstats_alloc_bytes_total

counter

байты

Общее количество байт, аллоцированных в куче за всё время (включая освобождённые).

go_memstats_buck_hash_sys_bytes

gauge

байты

Память, используемая хеш-таблицей профилирования памяти.

go_memstats_frees_total

counter

объекты

Общее число объектов,освобождённых из кучи.

go_memstats_gc_sys_bytes

gauge

байты

Память, используемая для хранения метаданных GC.

go_memstats_heap_alloc_bytes

gauge

байты

То же, что alloc_bytes - объём живой памяти в куче.

go_memstats_heap_idle_bytes

gauge

байты

Память в куче, не используемая под объекты (но может быть вновь использована).

go_memstats_heap_inuse_bytes

gauge

байты

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

go_memstats_heap_objects

gauge

объекты

Количество объектов, аллоцированных в куче.

go_memstats_heap_released_bytes

gauge

байты

Объём памяти кучи, возвращённый ОС (через madvise).

go_memstats_heap_sys_bytes

gauge

байты

Общий объём памяти, запрошенный у ОС для кучи.

go_memstats_last_gc_time_seconds

gauge

Unix sec

Временная метка последней сборки мусора.

go_memstats_mallocs_total

counter

объекты

Общее числоаллокацийв куче (включая освобождённые).

go_memstats_mcache_inuse_bytes

gauge

байты

Память, используемая структурамиmcache(локальные кэши потоков).

go_memstats_mcache_sys_bytes

gauge

байты

Памятьmcache,полученная от ОС.

go_memstats_mspan_inuse_bytes

gauge

байты

Память под структуры mspan (управляют фрагментами памяти).

go_memstats_mspan_sys_bytes

gauge

байты

Память mspan, полученная от ОС.

go_memstats_next_gc_bytes

gauge

байты

Объём памяти в куче, при котором будет запущена следующая GC.

go_memstats_other_sys_bytes

gauge

байты

Память, используемая для других системных нужд (не в куче, не в стеке).

go_memstats_stack_inuse_bytes

gauge

байты

Память, используемая стеками Go-рутин.

go_memstats_stack_sys_bytes

gauge

байты

Память стеков,полученная от ОС.

go_memstats_sys_bytes

gauge

байты

Общий объём памяти,запрошенный у ОСвсеми компонентами Go-рантайма.

go_sched_gomaxprocs_threads

gauge

количество

Значение GOMAXPROCS— максимальное число логических процессоров (P), на которых может выполняться Go-код.

go_threads

gauge

потоки ОС

Текущее число OS-потоков (M), созданных Go-рантаймом.

HTTP метрики приложения

http_requests_in_flight

gauge

количество

Число HTTP-запросов, обрабатываемых в данный момент.

http_requests_error_in_flight

gauge

количество

Число неуспешных запросов, которые в данный момент обрабатываются. Полезно для выявления "зависших" ошибок.

http_response_duration

histogram

секунды

Гистограмма времени обработки HTTP-запросов. Разбита по method,status, и другим меткам.

http_response_duration_sum

counter

секунды

Суммарное время обработки всех запросов (по комбинации меток).

http_response_duration_count

counter

количество

Общее число обработанных запросов (по комбинации меток).

Identity Provider (IDP) метрики

idp_account_disable_counter

counter

аккаунты

Общее число отключённых учётных записей.

idp_active_session_gauge

gauge

сессии

Текущее число активных сессий в IDP.

idp_application_authentication_counter

counter

аутентификации

Количество успешных входов в системы (по приложениям).

idp_authentication_factor_counter

counter

проверки

Сколько раз проверялся каждый фактор аутентификации (например, SMS, TOTP).

idp_global_session_counter

counter

сессии

Общее число созданных сессий за всё время.

idp_user_lock_counter

counter

блокировки

Сколько раз пользователи были заблокированы (например, из-за множества попыток входа).

Метрики процесса (process_*)

process_cpu_seconds_total

counter

CPU-секунды

Суммарное время CPU (пользовательское и системное), затраченное процессом.

process_max_fds

gauge

дескрипторы

Максимально допустимое число открытых файловых дескрипторов.

process_open_fds

gauge

дескрипторы

Текущее число открытых файловых дескрипторов. Контролируйте приближение к лимиту.

process_network_receive_bytes_total

counter

байты

Общее количество байт, полученных процессом по сети (TCP/UDP).

process_network_transmit_bytes_total

counter

байты

Общее количество байт, отправленных процессом по сети.

process_resident_memory_bytes

gauge

байты

RSS –  объём физической памяти, используемой процессом (не подкачивается).

process_start_time_seconds

gauge

Unix sec

Временная метка запуска процесса. Полезно для отслеживания рестартов.

process_virtual_memory_bytes

gauge

байты

Общий виртуальный объём памяти процесса.

process_virtual_memory_max_bytes

gauge

байты

Максимальный объём виртуальной памяти, разрешённый системой.

Обсуждение