Мониторинг

Для мониторинга работы модулей продукта используются метрики в формате Prometheus.

Метрики модулей бэкенда: osmax-core и osmax-provisioner

Сбор метрик осуществляется средствами расширения для Quarkus, которое включает в себя автоматическую интеграцию с библиотеками сбора метрик Micrometer и экспорт метрик в формате Prometheus.

Пример метрики:

# HELP http_server_requests_seconds_max
# TYPE http_server_requests_seconds_max gauge
http_server_requests_seconds_max{method="GET",outcome="CLIENT_ERROR",status="404",uri="NOT_FOUND",} 0.0

В приведенном примере:

  • HELP — словесное описание метрики, указывающее на предмет измерений;

  • TYPE — тип метрики, возможные значения:

    • counter — простой счетчик, значение которого монотонно возрастает;

    • gauge — счетчик, значение которого может произвольно изменяться как в большую, так и в меньшую сторону;

    • histogram — распределение значений измеряемой величины по настраиваемым группам с указанием количества измерений и общей суммы значений величины по всем измерениям;

    • summary — распределение значений измеряемой величины по настраиваемому набору квантилей в рамках определенного интервала времени с указанием количества изменений и общей суммы значений величины по всем измерениям;

  • http_server_requests_seconds_max — наименование метрики;

  • {method="GET",outcome="CLIENT_ERROR",status="404",uri="NOT_FOUND",} — набор меток или тегов (label в терминологии Prometheus), представляющих собой пары «ключ — значение» и содержащих детализированную информацию в рамках отдельной метрики;

    В приведенном примере содержится информация о запросе к HTTP-серверу.
  • 0.0 — значение метрики.

Quarkus предоставляет следующие метрики для используемого набора библиотек:

  • system — информация о хосте (дублирует метрики Linux);

  • process — информация о процессе;

  • jvm — информация о виртуальной машине Java;

  • http — информация о http-сервере;

  • worker-pool — информация о пуле рабочих потоков vert.x;

  • netty — информация о сетевом асинхронном фреймворке netty;

  • postgresql — информация о работе клиента БД;

  • kafka — информация о работе клиента kafka.

В таблице ниже описаны метрики, используемые для работы и диагностики модулей бекэнда.

Метрика Описание

process_cpu_usage

Процент использования процессора виртуальной машиной

process_files_open_files

Количество открытых десекрипторов файлов

jvm_memory_max_bytes

Максимальный объем памяти для использования (разделяется по типам)

jvm_memory_used_bytes

объем используемой памяти

jvm_memory_usage_after_gc_percent

Размер памяти (%), освобожденной после последнего GC heap

jvm_gc_max_data_size_bytes

Максимальный размер heap-памяти

jvm_gc_pause_seconds

Паузы на сборку мусора

jvm_gc_pause_seconds_max

Максимальное время, потраченное на GC

jvm_gc_overhead_percent

Процент времени, затрачиваемого на сборку мусора

jvm_threads_live_threads

Количество потоков

jvm_threads_peak_threads

Пиковое количество потоков

jvm_threads_states_threads

Число потоков по состоянию

jvm_classes_loaded_classes

Количество классов, загруженных в данный момент в виртуальную машину Java

jvm_buffer_total_capacity_bytes

Максимальный размер буферной памяти JVM

jvm_buffer_memory_used_bytes

Размер используемой буферной памяти JVM

http_server_active_requests

Активные запросы

http_server_requests_seconds_count

Количество запросов в секунду

http_server_requests_seconds_sum

Время, затраченное на обработку запросов

http_server_requests_seconds_max

Максимальное время обработки запроса

worker_pool_active

Число используемых в данный момент ресурсов из пула

worker_pool_idle

Количество ресурсов из пула, которые в данный момент не используются

worker_pool_queue_delay_seconds_max

Максимальное время ожидания в очереди на выполнение

worker_pool_queue_size

Размер очереди ожидания

worker_pool_usage_seconds

Время использования ресурсов и пула

worker_pool_usage_seconds_max

Максимальное время использования ресурсов и пула

netty_allocator_memory_used

Размер используемой памяти Netty

netty_eventexecutor_tasks_pending

Количество ожидающих задач

postgresql_queue_delay_seconds

Время ожидания в очереди на выполнение

postgresql_queue_delay_seconds_max

Максимальное время ожидания в очереди на выполнение

postgresql_queue_size

Число элементов в очереди на выполнение

postgresql_current

Количество исполняемых в данный момент запросов

postgresql_processing_seconds

Время исполнения запроса

postgresql_processing_seconds_max

Максимальное время исполнения запроса

kafka_consumer_fetch_manager_records_consumed_rate

Среднее число потребляемых записей в секунду

kafka_consumer_node_response_rate

Число ответов, полученных в секунду

kafka_consumer_time_between_poll_max

Максимальная задержка между вызовами poll()

kafka_consumer_node_request_rate

Число запросов, отправленных в секунду

kafka_consumer_fetch_manager_fetch_latency_avg

Среднее время на запросы fetch

kafka_consumer_fetch_manager_bytes_consumed_rate

Среднее число байт, потребляемое в секунду

kafka_consumer_fetch_manager_records_per_request_avg

Среднее число записей в запросах

kafka_consumer_incoming_byte_rate

Количество байтов, прочитанных из всех сокетов в секунду

kafka_consumer_request_size_avg

Средний размер отправленных запросов

kafka_consumer_request_rate

Количество запросов, отправляемых в секунду

kafka_consumer_fetch_manager_fetch_rate

Количество запросов на выборку в секунду

kafka_consumer_fetch_manager_fetch_size_avg

Среднее количество байтов, полученных за один запрос

kafka_consumer_fetch_manager_fetch_latency_max

Максимальное время, необходимое для запроса на получение

kafka_consumer_network_io_rate

Количество сетевых операций (чтение или запись) для всех подключений в секунду

Метрики модуля «Шлюз удаленного доступа»

  • system.cpu.load[all, avg5] —  загрузка CPU за последние 5 минут для всех процессоров;

  • vm.memory.size[pavailable] — процент доступной оперативной памяти (RAM);

  • proc.num[guacd] [u|1] — жизнеспособность компоненты Guacamole server;

  • net.tcp.service[http,,8080] — жизнеспособность компоненты Appache tomcat;

  • net.tcp.service[tcp,,1024] — жизнеспособность компоненты Postgresql;

  • proc.num[syslog_ng] [u|1] — жизнеспособность компоненты Syslog-ng.

Метрики модуля координации (SaltStack)

SaltStack не предоставляет метрики своего внутреннего состояния, поэтому для отслеживания работы модуля координации (SaltStack) можно использовать только метрики linux-сервера, на котором он будет запущен.

Метрики Linux

В таблице ниже перечислены метрики мониторинга и анализа работы серверов и компьютеров под управлением Linux, на которых запускаются модули: osmax-core, osmax-provisioner, salt-master.

Метрика

Оповещение

Описание

Warning

Average

High

Disaster

System uptime

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

Number of running processes

Число запущенных процессов

Number of CPUs

Количество ядер процессора

CPU utilization %

80

85

90

95

Утилизация ЦПУ

CPU system time

Время, которое процессор потратил на работу ядра и его процессов

CPU user time

Время, затраченное процессором на выполнение пользовательских процессов, которые не были оптимизированы

CPU iowait time

Время, которое ЦП потратил на ожидание завершения ввода-вывода

Total memory

Количество оперативной памяти

Memory utilization %

80

85

90

95

Утилизация памяти

Total swap space

Общий объем тома/файла подкачки в байтах

Free swap space

Свободное пространство тома/файла подкачки в %

Disk size

Размер диска (раздела на котором работает приложение (логи, аудит, временные файлы и тп))

Disk utilization %

80

85

90

95

Утилизация диска

Disk read rate

Количество операций чтения в секунду

Disk write rate

Количество операций записи в секунду

Network interface operational status

Статус сетевой карты

Interface speed

Скорость сетевой карты

Interface utilization

80

85

90

95

Утилизация сетевой карты

Outbound packets with errors

Исходящие пакеты с ошибками

Inbound packets with errors

Входящие пакеты с ошибками

Outbound packets discarded

Отброшенные исходящие пакеты

Inbound packets discarded

Отброшенные входящие пакеты

Дополнительные метрики

Мониторинг и оповещения о критических ситуациях для сервисов PostgreSQL, S3, Kafka, Redis, Nginx настраиваются администраторами этих сервисов.

Ниже перечислены метрики, важные с точки зрения работы продукта, которые рекомендуется выводить на дашборд.

Метрики PostgreSQL

  • Total Connections — общее количество соединений с базой данных;

  • Active Сonnections — общее количество соединений с базой данных;

  • Idle Сonnections — количество неактивных (ожидающих использования) соединений;

  • TPS (Transactions Per Second) — количество транзакций в базе данных за одну секунду;

  • Database Size — размер БД.

Метрики S3

  • Read Bandwidth — пропускная способность для чтения данных из бакета;

  • Write Bandwidth — пропускная способность для записи данных в бакет;

  • Read Operations Per Second — количество операций чтения в бакете за одну секунду;

  • Write Operations Per Second — количество операций записи в бакет за одну секунду;

  • Bucket Size — размер бакета;

  • S3 Storage Object Count — количество объектов в бакете.

Метрики Kafka

  • Max Unread Topic Messages — максимальное количество непрочитанных сообщений в топике;

  • Current Unread Topic Messages — текущее количество непрочитанных сообщений в топике;

  • Topic File Size on Disk — размер файла(ов) топика на диске;

  • Messages In Per Second — скорость записи сообщений в топик;

  • Messages Out Per Second — скорость считывания сообщений из топика;

  • Client Fetch Request Failed Per Second — количество неудачных запросов клиента на получение сообщений за одну секунду;

  • Produce Requests Failed Per Second — количество неудачных запросов на запись сообщений за одну секунду.

Метрики Redis

  • Max Clients  — максимальное количество клиентов, которое может быть подключено к Redis;

  • Connected Clients — количество текущих подключенных клиентов;

  • Rejected Connections — количество соединений, которые были отклонены из-за достижения максимального количества клиентов;

  • Keyspace Hit — количество успешных обращений к ключам в кэше;

  • Keyspace Misses — количество неудачных обращений к ключам в кэше;

  • Evicted Keys — количество ключей, вытесненных из-за ограничения памяти;

  • Input Bytes Per Second — скорость входящего сетевого трафика в Redis;

  • Output Bytes Per Second — скорость исходящего сетевого трафика из Redis;

  • Operations Per Second — общее количество операций (например, чтение, запись) в Redis за одну секунду;

  • Total System Memory — общий объем системной памяти, используемой Redis;

  • Used Memory — количество используемой памяти Redis;

  • Used Memory Peak — максимальное количество памяти, которое использовалось Redis с момента последнего сброса;

  • Memory Fragmentation Ratio — отношение фрагментации памяти к общему объему памяти.

Метрики Nginx

  • Service Status — статус сервиса Nginx (например, "запущен" или "остановлен");

  • Active Connections — количество активных соединений с сервером Nginx;

  • Waiting — количество запросов, ожидающих обработки сервером Nginx;

  • Requests Per Second — количество запросов к серверу Nginx за одну секунду;

  • Connections Accepted Per Second — скорость принятых соединений веб-сервером Nginx за одну секунду;

  • Connections Handled Per Second — скорость обработанных соединений веб-сервером Nginx за одну секунду;

  • Connections Dropped Per Second — скорость отброшенных соединений веб-сервером Nginx за одну секунду.