Мониторинг
Для мониторинга работы модулей продукта используются метрики в формате 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.
В таблице ниже описаны метрики, используемые для работы и диагностики модулей бекэнда.
| Метрика | Описание |
|---|---|
|
Процент использования процессора виртуальной машиной |
|
Количество открытых десекрипторов файлов |
|
Максимальный объем памяти для использования (разделяется по типам) |
|
объем используемой памяти |
|
Размер памяти (%), освобожденной после последнего GC heap |
|
Максимальный размер heap-памяти |
|
Паузы на сборку мусора |
|
Максимальное время, потраченное на GC |
|
Процент времени, затрачиваемого на сборку мусора |
|
Количество потоков |
|
Пиковое количество потоков |
|
Число потоков по состоянию |
|
Количество классов, загруженных в данный момент в виртуальную машину Java |
|
Максимальный размер буферной памяти JVM |
|
Размер используемой буферной памяти JVM |
|
Активные запросы |
|
Количество запросов в секунду |
|
Время, затраченное на обработку запросов |
|
Максимальное время обработки запроса |
|
Число используемых в данный момент ресурсов из пула |
|
Количество ресурсов из пула, которые в данный момент не используются |
|
Максимальное время ожидания в очереди на выполнение |
|
Размер очереди ожидания |
|
Время использования ресурсов и пула |
|
Максимальное время использования ресурсов и пула |
|
Размер используемой памяти Netty |
|
Количество ожидающих задач |
|
Время ожидания в очереди на выполнение |
|
Максимальное время ожидания в очереди на выполнение |
|
Число элементов в очереди на выполнение |
|
Количество исполняемых в данный момент запросов |
|
Время исполнения запроса |
|
Максимальное время исполнения запроса |
|
Среднее число потребляемых записей в секунду |
|
Число ответов, полученных в секунду |
|
Максимальная задержка между вызовами poll() |
|
Число запросов, отправленных в секунду |
|
Среднее время на запросы fetch |
|
Среднее число байт, потребляемое в секунду |
|
Среднее число записей в запросах |
|
Количество байтов, прочитанных из всех сокетов в секунду |
|
Средний размер отправленных запросов |
|
Количество запросов, отправляемых в секунду |
|
Количество запросов на выборку в секунду |
|
Среднее количество байтов, полученных за один запрос |
|
Максимальное время, необходимое для запроса на получение |
|
Количество сетевых операций (чтение или запись) для всех подключений в секунду |
Метрики модуля «Шлюз удаленного доступа»
-
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 за одну секунду.