Метрики компонентов TQE (MQ)
Встроенный инструментарий TQE(MQ) предоставляет метрики для оценки работы с сообщениями в очередях.
Эти метрики предоставляют диагностическую информацию для использования в стороннем ПО.
Метрики модулей предоставляются в формате Prometheus.
Метрики ядра TQE(MQ) соответствуют стандартному набору метрик tarantool. Перечень метрик приведен
в справочнике метрик Tarantool.
Метрики доступны по HTTP-адресу:
$ curl localhost:8081/metrics
Пример частичного вывода метрик:
# HELP tnt_vinyl_disk_index_size Amount of index stored in files# TYPE tnt_vinyl_disk_index_size gaugetnt_vinyl_disk_index_size{alias="app"} 0# HELP tnt_read_only Is instance read only# TYPE tnt_read_only gaugetnt_read_only{alias="app"} 0# HELP tnt_vinyl_disk_data_size Amount of data stored in files# TYPE tnt_vinyl_disk_data_size gaugetnt_vinyl_disk_data_size{alias="app"} 0...
Метрики ядра предоставляют следующую диагностическую информацию, специфичную для TQE(MQ):
mqee_tnt_duplicates_total– счетчик дубликатов.mqee_tnt_latency_seconds- время выполнения стадии обработки сообщения в модуле ядра:point- стадия обработки сообщений. Может принимать значения:publish-request-tnt-storage-persistedbroadcast-request-tnt-storage-persisted
queue- название очереди.routing_key- значение параметраrouting_keyобрабатываемого сообщения (""для пакетных запросов).result- результат выполнения стадии:success- стадия завершилась успешно.fail- стадия завершилась с ошибкой.
mqee_tnt_pollers_total- индикатор текущего количества поллеров:queue- название очереди.
mqee_tnt_consumer_lag_ms- отставание потребителя (в миллисекундах):queue- название очереди.
Метрики модуля API доступны на HTTP-адресе /metrics:
$ curl localhost:18184/metrics
Ожидаемый ответ содержит перечень метрик, отражающих текущее состояние модуля API. Пример частичного вывода метрик модуля API:
# HELP go_gc_duration_seconds A summary of the pause duration of garbage collection cycles.# TYPE go_gc_duration_seconds summarygo_gc_duration_seconds{quantile="0"} 5.3002e-05go_gc_duration_seconds{quantile="0.25"} 7.574e-05go_gc_duration_seconds{quantile="0.5"} 9.047e-05go_gc_duration_seconds{quantile="0.75"} 0.000111856go_gc_duration_seconds{quantile="1"} 0.000338263go_gc_duration_seconds_sum 1.305067544go_gc_duration_seconds_count 11608...
Метрики модуля API предоставляют следующую диагностическую информацию:
mqee_grpc_publishing_request_messages- гистограмма сообщений, опубликованных в очередь:grpc_method- название удаленной процедуры.queue- название очереди.routing_key- значение параметраrouting_key, по которому выполняется публикация (""для пакетных запросов).result- результат публикации:success- сообщения успешно опубликованы.fail- сообщения не опубликованы.
mqee_grpc_requests_size_bytes_total- счетчик общего размера запросов в байтах:grpc_method- название удаленной процедуры.queue- название очереди.routing_key- значение параметраrouting_keyобрабатываемого сообщения (""для пакетных запросов).
mqee_grpc_subscribers_count- индикатор текущего количества подписчиков:queue- название очереди.routing_key- значение параметраrouting_key, по которому выполнена подписка.
mqee_grpc_app_info- информация об очереди (mqee_grpc_app_info{app_name="MESSAGE_QUEUE_EE_API",app_version="test"} 1).mqee_grpc_gomaxprocs- индикатор текущего значенияGOMAXPROCS.mqee_grpc_tuples_received- гистограмма количества сообщений, полученных от ядра или из кэша. Включаетmqee_grpc_tuples_received_sum(суммарное количество полученных сообщений) иmqee_grpc_tuples_received_count(число запросов на получение сообщений в ядро или кэш):queue- название очереди.routing_key- значение параметраrouting_key, по которому выполнена подписка.
mqee_grpc_sent_messages- гистограмма количества сообщений, отправленных потребителям gRPC-сервером. Включаетmqee_grpc_sent_messages_sum(суммарное количество отправленных сообщений) иmqee_grpc_sent_messages_count(число отправленных ответов):queue- название очереди.routing_key- значение параметраrouting_key, по которому выполнена подписка.
mqee_grpc_auth_cache_reload_total- счетчик обновлений данных аутентификации и авторизации, которые модуль API хранит в памяти. Обновление выполняется в фоне: с периодичностьюauth.store_poll_interval, а также когда хранилище конфигурации само сообщает об изменении сущностейuser,roleилиsecret:result- результат обновления:updated- данные прочитаны из хранилища конфигурации, копия в памяти заменена изменившимися данными.unchanged- данные прочитаны, отличий от копии в памяти нет.fail- прочитать данные не удалось. Модуль API продолжает отвечать по уже загруженной копии, пока её возраст не превыситauth.store_stale_ttl; после этого вызовы отклоняются, а модуль API сообщает о неготовности на пробе готовности.
trigger- что запросило обновление:timer- наступил очередной периодauth.store_poll_interval. Сюда же отнесено первое чтение при старте модуля API.watch- хранилище конфигурации сообщило об изменении. Такие обновления сокращают задержку распространения отзыва учетных данных и блокировок: изменение доходит до модуля API, не дожидаясь очередного периода опроса. Нулевое значение счетчика при изменяющихся данных означает, что подписка на изменения не работает и модуль API обновляется только по таймеру.
grpc_server_started_total- счетчик полученных запросов на удаленную процедуру:grpc_type- тип подключения:unary;client_stream;server_stream;bidi_stream.
grpc_service- название gRPC-сервиса.grpc_method- название процедуры:Produce;ProduceStream;Broadcast;ServerReflectionInfo;Subscribe.
grpc_server_handled_total- счетчик завершенных удаленных процедур:grpc_type- тип подключения:unary;client_stream;server_stream;bidi_stream.
grpc_service- название gRPC-сервиса.grpc_method- название процедуры (см. список вgrpc_server_started_total).grpc_code- код ответа gRPC-код.
grpc_server_msg_received_total- счетчик полученных сообщений:grpc_type- тип подключения:unary;client_stream;server_stream;bidi_stream.
grpc_service- название gRPC-сервиса.grpc_method- название процедуры (см. список вgrpc_server_started_total).
grpc_server_msg_sent_total- счетчик отправленных сообщений:grpc_type- тип подключения:unary;client_stream;server_stream;bidi_stream.
grpc_service- название gRPC-сервиса.grpc_method- название процедуры (см. список вgrpc_server_started_total).
grpc_server_handling_seconds- гистограмма обработки gRPC-вызова (в секундах):grpc_type- тип подключения:unary;client_stream;server_stream;bidi_stream.
grpc_service- название gRPC-сервиса.grpc_method- название процедуры (см. список вgrpc_server_started_total).
mqee_grpc_auth_attempts_total- счетчик попыток проверить учетные данные вызывающего: одна попытка на вызов с типом подключенияunaryи одна на открытие потока. Повторные проверки внутри уже открытого потока сюда не попадают - они учитываются в метрикеmqee_grpc_authz_decisions_total. Счетчик заполняется, только когда включена аутентификация (auth.enabled: true):result- чем закончилась попытка:success- учетные данные проверены.no_creds- заголовокauthorizationне передан.auth_failed- учетные данные не прошли проверку: заголовок не читается, логин неизвестен, пароль неверен либо секрет заблокирован или просрочен.store_unavailable- решать не по чему: данные аутентификации еще не прочитаны из хранилища конфигурации либо копия в памяти устарела (auth.store_stale_ttl).
mqee_grpc_authz_decisions_total- счетчик решений авторизации: одно на вызов с типом подключенияunary, для которого установлен вызывающий, и одно на каждое сообщение открытого потока в любую сторону. Поэтому у потоковых процедур решений больше, чем вызовов:result- решение:allow- вызов или сообщение пропущены.deny- отклонены.
reason- причина отказа. У решенияallowметка пустая, поэтому разбивка по одномуresultсуммируется без двойного счета:no_grant- у вызывающего нет права на запрошенное действие, в том числе когда очередь не попала в шаблоны его назначения роли.unknown_method- требования к процедуре неизвестны, проверять нечего.no_queue- процедура работает с очередью, но запрос ее не называет.store_unavailable- данные аутентификации и авторизации недоступны (см. выше).no_active_subscription- сообщение потока действует в рамках подписки (подтверждение), но ни одна подписка этого потока не была разрешена.
method- короткое имя процедуры (Produce,ListUsers,Subscribe,ServerReflectionInfo). Процедуры, требования к которым модулю API неизвестны, считаются под одним именемunknown: имя такой процедуры выбирает клиент, и отдельная серия на каждое имя неограниченно увеличивала бы реестр метрик.
go_gc_duration_seconds- сводная информация о длительности паузы на цикл сборки мусора в среде Go. Используемый диапазон (в секундах):0,0.25,0.5,0.75,1.go_goroutines- индикатор текущего количестваgoroutine.go_info- информация о версии окружения Go.go_memstats- набор метрик для отслеживания использования памяти средой выполнения Go.go_threads- индикатор текущего количества потоков (threads) операционной системы, используемых средой выполнения Go.mqee_grpc_processing_time- время выполнения стадии обработки сообщения в модуле API:point- стадия обработки сообщений. Может принимать значения:produce-request-received;broadcast-request-received;produce-request-validated;broadcast-request-validated;produce-request-persisted;broadcast-request-persisted;subscribe-notifications-sent;
queue- название очереди.routing_key- значение параметраrouting_keyобрабатываемого сообщения (пустая строка, если сообщение безrouting_key).result- результат выполнения стадии:success- стадия завершилась успешно.fail- стадия завершилась с ошибкой.