Метрики TCF
В данном разделе собран список метрик, который позволяет получать подробную информацию о работе ключевых компонентов. Чтобы упростить работу с метриками, прочитайте рекомендации по их интерпретации и типичным действиям администратора в случае аномалий. Подробнее в разделе Рекомендации по анализу метрик.
Для разделения метрик нескольких сред приложения можно использовать пользовательские лейблы метрик.
Чтобы задать эти метрики, используйте параметры gateway.metrics_labels и destination.metrics_labels соответственно.
Подробнее о параметрах в разделе Конфигурация репликаторов данных.
Метрики автоматически собираются и передаются в систему мониторинга, где они визуализируются на специальных панелях. В разделе Панель мониторинга представлена панель мониторинга, которая позволяет наглядно отслеживать состояние системы, анализировать текущие показатели и быстро реагировать на отклонения или проблемы. Панели включают разнообразные графики, упрощающие восприятие данных и помогают принимать обоснованные решения по эксплуатации и оптимизации. Чтобы узнать, какие именно метрики используются для визуализации и отображаются на панели, ознакомитесь с таблицей.
- Метрики TCF-worker
- Метрики Gateway
- TCF system check failed(cluster: %q, replicaset_id: %q)
- TCF system check failed(cluster: %q, replicaset_id: %q)
Метрики позволяют отслеживать статус кластера, количество переданных и прочитанных данных, а также диагностировать ошибки при обмене данными между кластерами:
Метрики для TCF-worker можно получить по данному адресу обработчика запроса:
http://<instance_host>:<http_port>/metrics
Пример запроса:
curl -X GET --location "http://192.168.64.9:8080/metrics" | grep tcf_is_active
tcf_is_active – активность текущего кластера. Тип: gauge. Возможные значения:
- 1: активный кластер;
- 0: пассивный кластер.
Пример:
# HELP tcf_is_active Is active cluster# TYPE tcf_is_active gaugetcf_is_active 1
tcf_source_vclock_signature – последняя записанная vclock-сигнатура на исходном кластере. Тип: gauge.
Разница между значениями vclock на кластерах может сигнализировать о задержках в репликации.
Пример:
# HELP tcf_source_vclock_signature VClock signature (vclock sum)# TYPE tcf_source_vclock_signature gaugetcf_source_vclock_signature{replicaSetUUID="35b25911-7d4c-4323-9c84-f8401dd024fb"} 61520
Этот раздел содержит информацию об использовании метрик для мониторинга работы Gateway:
Чтобы включить метрики компонента Gateway, задайте в файле конфигурации межкластерных репликаторов опцию gateway.metrics_enabled:
gateway:# ...metrics_enabled: true
Далее необходимо настроить HTTP API. Для этого задайте опцию gateway.http_server.
После запуска Gateway метрики можно получить по данному адресу обработчика запроса:
http://<gateway_host>:<metrics_port>/metrics
-
tcf_gateway_sent_total– суммарное количество записей, отправленных на компонент Destination. Тип: counter.Пример:
# HELP tcf_gateway_send_total Total send rows to destination# TYPE tcf_gateway_send_total countertcf_gateway_send_total{spaceName="example_space", replicaSetUUID="1234-5678-abc"} 1000 -
tcf_gateway_sent_errors_total– суммарное количество ошибок, возникших при отправке данных на компонент Destination. Тип: counter.Пример:
# HELP tcf_gateway_send_errors_total Total destination errors# TYPE tcf_gateway_send_errors_total countertcf_gateway_send_errors_total{spaceName="example_space", replicaSetUUID="1234-5678-abc"} 5
-
tcf_gateway_read_total– суммарное количество записей, прочитанных с исходного кластера. Тип: counter.Пример:
# HELP tcf_gateway_read_total Total rows read from source# TYPE tcf_gateway_read_total countertcf_gateway_read_total{spaceName="example_space", replicaSetUUID="1234-5678-abc"} 1500 -
tcf_gateway_read_errors_total– суммарное количество ошибок, возникших при чтении данных с исходного кластера. Тип: counter.Пример:
# HELP tcf_gateway_read_errors_total Total reading errors# TYPE tcf_gateway_read_errors_total countertcf_gateway_read_errors_total{spaceName="example_space", replicaSetUUID="1234-5678-abc"} 2 -
tcf_gateway_limbo_vclock_signature– сигнатура vclock из limbo. Тип: gauge.Показывает vclock signature, полученную из лимбо (структура данных, обрабатывающая транзакционный поток репликации), отгруппированная по набору реплик и Gateway, через который идет нагрузка.
Пример:
# HELP tcf_gateway_limbo_vclock_signature Vclock signature received from limbo# TYPE tcf_gateway_limbo_vclock_signature gaugetcf_gateway_limbo_vclock_signature{replicaset_uuid="5f473791-ef4e-4d86-9329-feedd49e5745", alias="gateway_1_2"} 123 -
tcf_gateway_sent_vclock_signature– сигнатура vclock, отправленная из Gateway в Destination. Тип: gauge.Фиксирует сигнатуру vclock, отправленную из Gateway в Destination. Используется для контроля синхронизации между кластерами. Группируется по наборам реплик.
Пример:
# HELP tcf_gateway_sent_vclock_signature Vclock signature sent from gateway# TYPE tcf_gateway_sent_vclock_signature gaugetcf_gateway_sent_vclock_signature{replicaset_uuid="5f473791-ef4e-4d86-9329-feedd49e5745", alias="gateway_1_2"} 123
tcf_gateway_http_responses_total – показывает количество HTTP-ответов от Gateway с конкретным методом, путем и статусом.
Пример:
tcf_gateway_http_responses_total{method="POST",path="/api/v1/start",status="OK",alias="gateway_1_2"} 1
Условия предупреждения:
-
Если доля ответов со статусами
4xxили5xxпревышает 5% от общего числа запросов. -
Метод
/is_activeможет возвращать статус418, что говорит о пассивности кластера. Этот статус не считается ошибкой и не участвует в расчёте4xx/5xxдоли.
Этот раздел содержит информацию об использовании метрик для мониторинга работы Destination:
- Производительность
- Контроль состояния системы
- Статусы HTTP адресов обработчика запроса
- Синхронизация и нагрузка
Чтобы включить метрики компонента Destination, задайте в файле конфигурации межкластерных репликаторов опцию destination.metrics_enabled:
destination:# ...metrics_enabled: true
Далее необходимо настроить HTTP API. Для этого задайте опцию destination.http_server.
После запуска компонента Destination метрики можно получить по данному адресу обработчика запроса:
http://<destination_host>:<metrics_port>/metrics
Пример запроса метрик:
curl -X GET --location "http://192.168.64.12:10082/metrics" | grep tcf_destination
Эти метрики помогают оценить объем данных, которые обрабатывает и передает система, а также ее общую активность.
-
tcf_destination_push_total– суммарное количество событий, отправленных в Destination. Тип: counter.Пример:
# HELP tcf_destination_push_total Total events pushed to destination# TYPE tcf_destination_push_total countertcf_destination_push_total{spaceName="example-space",replicaSetUUID="example-replica"} 67890 -
ttpusher_pusher_writes_total– суммарное количество записанных сообщений для выбранного Destination. Тип: counter.Пример:
# HELP ttpusher_pusher_writes_total Total writes of the pusher instance# TYPE ttpusher_pusher_writes_total counterttpusher_pusher_writes_total{space_name="dd6ce3ac-4a75-4aa0-9cec-21391184d75d"} 7 -
tcf_destination_recv_total– общее количество событий, полученных от компонента Gateway. Тип: counter.Разница между значениями метрик
tcf_destination_recv_totalиtcf_destination_push_totalможет указывать на проблемы с обработкой данных или их потерю.Пример:
# HELP tcf_destination_recv_total Total events received from gateway# TYPE tcf_destination_recv_total countertcf_destination_recv_total{spaceName="example-space",replicaSetUUID="example-replica"} 12345 -
tcf_destination_recv_vclock_signature– сигнатура vclock, полученная от компонента Gateway. Тип: gauge.Содержит сумму всех ненулевых значений вектора vclock, полученного на Destination от Gateway. Используется для оценки состояния репликации на стороне Destination.
Пример:
# HELP tcf_destination_recv_vclock_signature Vclock signature received from gateway# TYPE tcf_destination_recv_vclock_signature gaugetcf_destination_recv_vclock_signature{replicaset_uuid="5f473791-ef4e-4d86-9329-feedd49e5745", alias="destination_1_2"} 3210 -
tcf_destination_sent_vclock_signature– сигнатура vclock, отправленная из Destination. Тип: gauge.Фиксирует сумму ненулевых значений vclock, отправленных Destination в его кластер. Позволяет отслеживать текущее состояние репликации.
Пример:
# HELP tcf_destination_sent_vclock_signature Vclock signature sent to destination cluster# TYPE tcf_destination_sent_vclock_signature gaugetcf_destination_sent_vclock_signature{replicaset_uuid="5f473791-ef4e-4d86-9329-feedd49e5745", alias="destination_1_2"} 123
Эти метрики необходимы для отслеживания проблем в процессе получения или отправки данных.
-
tcf_destination_recv_errors_total– общее количество ошибок при получении данных. Тип: counter.Пример:
# HELP tcf_destination_recv_errors_total Total receiving errors# TYPE tcf_destination_recv_errors_total countertcf_destination_recv_errors_total{reason="timeout"} 3 -
tcf_destination_push_errors_total– количество ошибок, возникших в Destination при попытке отправить данные на целевой кластер. Тип: counter.Пример:
# HELP tcf_destination_push_errors_total Total pushing errors# TYPE tcf_destination_push_errors_total countertcf_destination_push_errors_total{spaceName="example-space",replicaSetUUID="example-replica"} 2 -
ttpusher_writer_status– текущее состояние компонента Destination. Тип: gauge. Метрика удалена начиная с версии 0.8.0. Возможные значения:- 1: Destination работает в штатном режиме;
- 0: Destination работает с ошибками.
Пример:
# HELP ttpusher_writer_status Writer status# TYPE ttpusher_writer_status gaugettpusher_writer_status{source_replicaset_uuid="35b25911-7d4c-4323-9c84-f8401dd024fb"} 1
tcf_destination_http_responses_total– показывает количество HTTP-ответов от Destination с конкретным методом, путем и статусом.
Условие предупреждения:
Если доля ответов со статусами 4xx или 5xx превышает 5% от общего числа запросов.
Удалена начиная с версии 0.8.0.
Эта метрика полезна для отслеживания состояния синхронизации и выполнения репликации данных в системе.
ttpusher_vclock – последний записанный vclock signature для компонента Destination. Тип: gauge.
Пример:
# HELP ttpusher_vclock Current Source Replicaset VClock# TYPE ttpusher_vclock gaugettpusher_vclock{replica="1",source_replicaset_uuid="35b25911-7d4c-4323-9c84-f8401dd024fb"} 0ttpusher_vclock{replica="2",source_replicaset_uuid="35b25911-7d4c-4323-9c84-f8401dd024fb"} 61834
- Служебная метрика названия приложения на репликаторах
- Статусы HTTP адресов обработчика запроса
- Метрика vclock signature из кластера
Для того чтобы Grafana могла идентифицировать разные экземпляры Gateway и Destination, которые собираются в одной job Prometheus, введена служебная метрика tcf_app_info с константным значением и системной информацией об приложении в лейблах:
Описание лейблов:
app_name— имя приложения: может принимать значения Destination или Gateway;app_version— версия приложения;alias— алиас приложения, задаваемый в конфигурации.
Тип: gauge.
Пример:
# HELP tcf_app_info Application identity and metadata# TYPE tcf_app_info gaugetcf_app_info{app_name="Gateway", app_version="1.3.0", alias="gateway_1_2"} 1
tcf_http_request_latency_count – показывает количество HTTP-ответов от кластера с заданным путем, методом и статусом. Тип: gauge.
Пример:
# HELP tcf_http_request_latency_count Number of HTTP responses grouped by path, method, and status# TYPE tcf_http_request_latency_count gaugetcf_http_request_latency_count{path="/tcf/status", method="GET", status="200", alias="storage-001-a"} 11
Описание лейблов:
path— путь HTTP-запроса (например,/tcf/status);method— HTTP-метод (например,GET,POST`);status— код ответа (например,200,500);alias— алиас компонента (например,storage-001-a), указывающий источник метрики.
Условие предупреждения:
Если доля ответов со статусами 4xx или 5xx превышает 5% от общего числа запросов.
-
tcf_src_vclock_signature– сигнатура vclock, отправленная на Gateway из текущего кластера. Тип: gauge.Позволяет оценить состояние исходящего потока репликации в направлении Gateway.
Пример:
# HELP tcf_src_vclock_signature Vclock signature sent from source cluster# TYPE tcf_src_vclock_signature gaugetcf_src_vclock_signature{replicaset_uuid="5f473791-ef4e-4d86-9329-feedd49e5745", alias="router-001-a"} 123 -
tcf_dst_vclock_signature– сигнатура vclock, применённая на соседнем кластере. Тип: gauge.Отображает состояние репликации на стороне кластера-получателя (Destination). Может использоваться для сравнения с
tcf_src_vclock_signature.Пример:
# HELP tcf_dst_vclock_signature Vclock signature applied on destination cluster# TYPE tcf_dst_vclock_signature gaugetcf_dst_vclock_signature{replicaset_uuid="5f473791-ef4e-4d86-9329-feedd49e5745", alias="router-002-a"} 123
Системные метрики Go runtime позволяют мониторить внутреннее состояние и производительность приложения, написанного на Go (в данном случае компоненты Gateway и Destination). Тип: gauge.
- Goroutines exist
- Threads created
- Memory in use
- Memory allocation
- Memory obtained from OS
- Objects allocated
- Mallocs
- Memory
- Pointer lookups
- Heap memory in use
- Heap memory obtained from OS
- Heap memory for spans (in-use)
- Heap memory for spans (idle)
- Heap memory released
- Stack memory in use
- Stack memory obtained from OS
- mcache memory in use
- mcache memory obtained from OS
- mspan memory in use
- mspan memory obtained from OS
- Memory in use for profiling
- Memory in use for garbage collection
- Other memory allocations
- Garbage collect duration (average)
- Garbage collect duration
- Next garbage collect threshold
go_goroutines – показывает количество активных горутин в программе.
Пример:
# HELP go_goroutines Number of goroutines that currently exist.# TYPE go_goroutines gaugego_goroutines{alias="gateway_1_2"} 85
go_threads – показывает количество потоков, созданных процессом.
Пример:
# HELP go_threads Number of OS threads created.# TYPE go_threads gaugego_threads{alias="gateway_1_2"} 30
go_memstats_alloc_bytes – объем выделенной памяти, которой владеет программа.
Пример:
# HELP go_memstats_alloc_bytes Number of bytes allocated and still in use.# TYPE go_memstats_alloc_bytes gaugego_memstats_alloc_bytes{alias="gateway_1_2"} 2438656
go_memstats_alloc_bytes_total – общее количество памяти, выделенной процессом с момента его старта.
Пример:
# HELP go_memstats_alloc_bytes_total Total number of bytes allocated.# TYPE go_memstats_alloc_bytes_total countergo_memstats_alloc_bytes_total{alias="gateway_1_2"} 189335688
go_memstats_sys_bytes – общий объем памяти, полученный процессом от операционной системы.
Пример:
# HELP go_memstats_sys_bytes Number of bytes obtained from system.# TYPE go_memstats_sys_bytes gaugego_memstats_sys_bytes{alias="gateway_1_2"} 40345600
go_memstats_heap_objects – текущее количество живых объектов в куче.
Пример:
# HELP go_memstats_heap_objects Number of allocated objects.# TYPE go_memstats_heap_objects gaugego_memstats_heap_objects{alias="gateway_1_2"} 14890
go_memstats_mallocs_total – количество аллокаций объектов на куче было выделено за все время работы программы.
Пример:
# HELP go_memstats_mallocs_total Total number of mallocs.# TYPE go_memstats_mallocs_total countergo_memstats_mallocs_total{alias="gateway_1_2"} 305209
go_memstats_frees_total – общее количество освобожденной памяти.
Пример:
# HELP go_memstats_frees_total Total number of frees.# TYPE go_memstats_frees_total countergo_memstats_frees_total{alias="gateway_1_2"} 290319
go_memstats_lookups_total – количество обращений к указателям (pointer lookups).
Пример:
# HELP go_memstats_lookups_total Total number of pointer lookups.# TYPE go_memstats_lookups_total countergo_memstats_lookups_total{alias="gateway_1_2"} 154
go_memstats_heap_alloc_bytes – объем выделенной и используемой памяти на куче.
Пример:
# HELP go_memstats_heap_alloc_bytes Heap memory in use.# TYPE go_memstats_heap_alloc_bytes gaugego_memstats_heap_alloc_bytes{alias="gateway_1_2"} 2438656
go_memstats_heap_sys_bytes – объем памяти, выделенной процессом из ОС на куче.
Пример:
# HELP go_memstats_heap_sys_bytes Heap memory obtained from the OS.# TYPE go_memstats_heap_sys_bytes gaugego_memstats_heap_sys_bytes{alias="gateway_1_2"} 4194304
go_memstats_heap_inuse_bytes – количество байт в куче, которые заняты живыми объектами программы.
Пример:
# HELP go_memstats_heap_inuse_bytes Heap memory in use for spans.# TYPE go_memstats_heap_inuse_bytes gaugego_memstats_heap_inuse_bytes{alias="gateway_1_2"} 3145728
go_memstats_heap_idle_bytes – объем памяти в куче, не используемой в данный момент.
Пример:
# HELP go_memstats_heap_idle_bytes Heap memory not currently in use.# TYPE go_memstats_heap_idle_bytes gaugego_memstats_heap_idle_bytes{alias="gateway_1_2"} 5242880
go_memstats_heap_released_bytes – объем памяти, освобожденной из кучи и возвращенной ОС.
Пример:
# HELP go_memstats_heap_released_bytes Heap memory released back to the OS.# TYPE go_memstats_heap_released_bytes gaugego_memstats_heap_released_bytes{alias="gateway_1_2"} 3145728
go_memstats_stack_inuse_bytes – объем памяти, выделенной на стеке.
Пример:
# HELP go_memstats_stack_inuse_bytes Stack memory in use.# TYPE go_memstats_stack_inuse_bytes gaugego_memstats_stack_inuse_bytes{alias="gateway_1_2"} 524288
go_memstats_stack_sys_bytes – объем памяти, выделенный под стеки горутин.
Пример:
# HELP go_memstats_stack_sys_bytes Stack memory obtained from the OS.# TYPE go_memstats_stack_sys_bytes gaugego_memstats_stack_sys_bytes{alias="gateway_1_2"} 1048576
go_memstats_mcache_inuse_bytes – количество байт используется в локальных кешах для горутин.
Пример:
# HELP go_memstats_mcache_inuse_bytes MCache memory in use.# TYPE go_memstats_mcache_inuse_bytes gaugego_memstats_mcache_inuse_bytes{alias="gateway_1_2"} 32768
go_memstats_mcache_sys_bytes – объем памяти, выделенной процессом ОС для структур mcache.
Пример:
# HELP go_memstats_mcache_sys_bytes MCache memory obtained from system.# TYPE go_memstats_mcache_sys_bytes gaugego_memstats_mcache_sys_bytes{alias="gateway_1_2"} 49152
go_memstats_mspan_inuse_bytes – объем памяти, используемой mspan-структурами.
Пример:
# HELP go_memstats_mspan_inuse_bytes MSpan structures memory in use.# TYPE go_memstats_mspan_inuse_bytes gaugego_memstats_mspan_inuse_bytes{alias="gateway_1_2"} 32768
go_memstats_mspan_sys_bytes – объем памяти, выделенной процессом ОС для mspan-структур.
Пример:
# HELP go_memstats_mspan_sys_bytes MSpan structures memory obtained from OS.# TYPE go_memstats_mspan_sys_bytes gaugego_memstats_mspan_sys_bytes{alias="gateway_1_2"} 65536
go_memstats_buck_hash_sys_bytes – объем памяти, используемой для хеширования и профилирования.
Пример:
# HELP go_memstats_buck_hash_sys_bytes BuckHashSys is the memory used by the profiling bucket hash table.# TYPE go_memstats_buck_hash_sys_bytes gaugego_memstats_buck_hash_sys_bytes{alias="gateway_1_2"} 123456
go_memstats_gc_sys_bytes – объем памяти, используемой для работы со сборщиком мусора.
Пример:
# HELP go_memstats_gc_sys_bytes Memory used by the garbage collector.# TYPE go_memstats_gc_sys_bytes gaugego_memstats_gc_sys_bytes{alias="gateway_1_2"} 789012
go_memstats_other_sys_bytes – объем памяти, выделенной для других нужд системы.
Пример:
# HELP go_memstats_other_sys_bytes Memory allocated for other system needs.# TYPE go_memstats_other_sys_bytes gaugego_memstats_other_sys_bytes{alias="gateway_1_2"} 345678
go_gc_duration_seconds – средняя продолжительность работы сборщика мусора.
Пример:
# HELP go_gc_duration_seconds Garbage collection duration.# TYPE go_gc_duration_seconds histogramgo_gc_duration_seconds{alias="gateway_1_2", quantile="0.5"} 0.0023
go_gc_duration_seconds – 75-й процентиль продолжительности работы сборщика мусора.
Пример:
# HELP go_gc_duration_seconds Garbage collection duration.# TYPE go_gc_duration_seconds histogramgo_gc_duration_seconds{alias="gateway_1_2", quantile="0.75"} 0.0045
go_memstats_next_gc_bytes – порог, при котором будет инициирован следующий сбор мусора.
Пример:
# HELP go_memstats_next_gc_bytes Next garbage collection threshold.# TYPE go_memstats_next_gc_bytes gaugego_memstats_next_gc_bytes{alias="gateway_1_2"} 12345678