Метрики TCF¶
В данном разделе собран комплекс метрик, который позволяет получать подробную информацию о работе ключевых компонентов. Эти метрики автоматически собираются и передаются в систему мониторинга, где они визуализируются на специальных панелях. В разделе Панель мониторинга представлена панель мониторинга, которая позволяет наглядно отслеживать состояние системы, анализировать текущие показатели и быстро реагировать на отклонения или проблемы. Панели включают разнообразные графики, упрощающие восприятие данных и помогают принимать обоснованные решения по эксплуатации и оптимизации.
Чтобы узнать, какие именно метрики используются для визуализации и отображаются на панели, ознакомитесь с таблицей.
Метрики TCF-worker¶
Метрики позволяют отслеживать статус кластера, количество переданных и прочитанных данных, а также диагностировать ошибки при обмене данными между кластерами:
Метрики для 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 gauge
tcf_is_active 1
Отставание репликации¶
tcf_source_vclock_signature
– последняя записанная vclock-сигнатура на исходном кластере. Тип: gauge.
Разница между значениями vclock на кластерах может сигнализировать о задержках в репликации.
Пример:
# HELP tcf_source_vclock_signature VClock signature (vclock sum)
# TYPE tcf_source_vclock_signature gauge
tcf_source_vclock_signature{replicaSetUUID="35b25911-7d4c-4323-9c84-f8401dd024fb"} 61520
Метрики Gateway¶
Этот раздел содержит информацию об использовании метрик для мониторинга работы 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 counter tcf_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 counter tcf_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 counter tcf_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 counter tcf_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 gauge tcf_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 gauge tcf_gateway_sent_vclock_signature{replicaset_uuid="5f473791-ef4e-4d86-9329-feedd49e5745", alias="gateway_1_2"} 123
Статусы HTTP адресов обработчика запроса¶
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¶
Этот раздел содержит информацию об использовании метрик для мониторинга работы Destination:
Чтобы включить метрики компонента 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
– cуммарное количество событий, отправленных в Destination. Тип: counter.Пример:
# HELP tcf_destination_push_total Total events pushed to destination # TYPE tcf_destination_push_total counter tcf_destination_push_total{spaceName="example-space",replicaSetUUID="example-replica"} 67890
ttpusher_pusher_writes_total
– cуммарное количество записанных сообщений для выбранного Destination. Тип: counter.Пример:
# HELP ttpusher_pusher_writes_total Total writes of the pusher instance # TYPE ttpusher_pusher_writes_total counter ttpusher_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 counter tcf_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 gauge tcf_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 gauge tcf_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 counter tcf_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 counter tcf_destination_push_errors_total{spaceName="example-space",replicaSetUUID="example-replica"} 2
ttpusher_writer_status
– текущее состояние компонента Destination. Тип: gauge. Возможные значения:1: Destination работает в штатном режиме;
0: Destination работает с ошибками.
Пример:
# HELP ttpusher_writer_status Writer status # TYPE ttpusher_writer_status gauge ttpusher_writer_status{source_replicaset_uuid="35b25911-7d4c-4323-9c84-f8401dd024fb"} 1
Синхронизация и нагрузка¶
Эта метрика полезна для отслеживания состояния синхронизации и выполнения репликации данных в системе.
ttpusher_vclock
– последний записанный vclock signature для компонента Destination. Тип: gauge.
Пример:
# HELP ttpusher_vclock Current Source Replicaset VClock
# TYPE ttpusher_vclock gauge
ttpusher_vclock{replica="1",source_replicaset_uuid="35b25911-7d4c-4323-9c84-f8401dd024fb"} 0
ttpusher_vclock{replica="2",source_replicaset_uuid="35b25911-7d4c-4323-9c84-f8401dd024fb"} 61834
Статусы HTTP адресов обработчика запроса¶
tcf_destination_http_responses_total
– показывает количество HTTP-ответов от Destination с конкретным методом, путем и статусом.
Условие предупреждения:
Если доля ответов со статусами 4xx
или 5xx
превышает 5% от общего числа запросов.
Общие метрики¶
Служебная метрика названия приложения на репликаторах¶
Для того чтобы 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 gauge
tcf_app_info{app_name="Gateway", app_version="1.3.0", alias="gateway_1_2"} 1
Статусы HTTP адресов обработчика запроса¶
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 gauge
tcf_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% от общего числа запросов.
Метрика vclock signature из кластера¶
tcf_src_vclock_signature
– сигнатура vclock, отправленная на Gateway из текущего кластера. Тип: gauge.Позволяет оценить состояние исходящего потока репликации в направлении Gateway.
Пример:
# HELP tcf_src_vclock_signature Vclock signature sent from source cluster # TYPE tcf_src_vclock_signature gauge tcf_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 gauge tcf_dst_vclock_signature{replicaset_uuid="5f473791-ef4e-4d86-9329-feedd49e5745", alias="router-002-a"} 123
Системные метрики (Go runtime metrics)¶
Системные метрики Go runtime позволяют мониторить внутреннее состояние и производительность приложения, написанного на Go (в данном случае компоненты Gateway и Destination). Тип: gauge.
Goroutines exist¶
go_goroutines
– показывает количество активных горутин в программе.
Пример:
# HELP go_goroutines Number of goroutines that currently exist.
# TYPE go_goroutines gauge
go_goroutines{alias="gateway_1_2"} 85
Threads created¶
go_threads
– показывает количество потоков, созданных процессом.
Пример:
# HELP go_threads Number of OS threads created.
# TYPE go_threads gauge
go_threads{alias="gateway_1_2"} 30
Memory in use¶
go_memstats_alloc_bytes
– объем выделенной памяти, которой владеет программа.
Пример:
# HELP go_memstats_alloc_bytes Number of bytes allocated and still in use.
# TYPE go_memstats_alloc_bytes gauge
go_memstats_alloc_bytes{alias="gateway_1_2"} 2438656
Memory allocation¶
go_memstats_alloc_bytes_total
– общее количество памяти, выделенной процессом с момента его старта.
Пример:
# HELP go_memstats_alloc_bytes_total Total number of bytes allocated.
# TYPE go_memstats_alloc_bytes_total counter
go_memstats_alloc_bytes_total{alias="gateway_1_2"} 189335688
Memory obtained from OS¶
go_memstats_sys_bytes
– общий объем памяти, полученный процессом от операционной системы.
Пример:
# HELP go_memstats_sys_bytes Number of bytes obtained from system.
# TYPE go_memstats_sys_bytes gauge
go_memstats_sys_bytes{alias="gateway_1_2"} 40345600
Objects allocated¶
go_memstats_heap_objects
– текущее количество живых объектов в куче.
Пример:
# HELP go_memstats_heap_objects Number of allocated objects.
# TYPE go_memstats_heap_objects gauge
go_memstats_heap_objects{alias="gateway_1_2"} 14890
Mallocs¶
go_memstats_mallocs_total` – количество аллокаций объектов на куче было выделено за все время работы программы. Пример:
# HELP go_memstats_mallocs_total Total number of mallocs.
# TYPE go_memstats_mallocs_total counter
go_memstats_mallocs_total{alias="gateway_1_2"} 305209
Memory¶
go_memstats_frees_total
– общее количество освобожденной памяти.
Пример:
# HELP go_memstats_frees_total Total number of frees.
# TYPE go_memstats_frees_total counter
go_memstats_frees_total{alias="gateway_1_2"} 290319
Pointer lookups¶
go_memstats_lookups_total
– количество обращений к указателям (pointer lookups).
Пример:
# HELP go_memstats_lookups_total Total number of pointer lookups.
# TYPE go_memstats_lookups_total counter
go_memstats_lookups_total{alias="gateway_1_2"} 154
Heap memory in use¶
go_memstats_heap_alloc_bytes
– объем выделенной и используемой памяти на куче.
Пример:
# HELP go_memstats_heap_alloc_bytes Heap memory in use.
# TYPE go_memstats_heap_alloc_bytes gauge
go_memstats_heap_alloc_bytes{alias="gateway_1_2"} 2438656
Heap memory obtained from OS¶
go_memstats_heap_sys_bytes
– объем памяти, выделенной процессом из ОС на куче.
Пример:
# HELP go_memstats_heap_sys_bytes Heap memory obtained from the OS.
# TYPE go_memstats_heap_sys_bytes gauge
go_memstats_heap_sys_bytes{alias="gateway_1_2"} 4194304
Heap memory for spans (in-use)¶
go_memstats_heap_inuse_bytes
– количество байт в куче, которые заняты живыми объектами программы.
Пример:
# HELP go_memstats_heap_inuse_bytes Heap memory in use for spans.
# TYPE go_memstats_heap_inuse_bytes gauge
go_memstats_heap_inuse_bytes{alias="gateway_1_2"} 3145728
Heap memory for spans (idle)¶
go_memstats_heap_idle_bytes
– объем памяти в куче, не используемой в данный момент.
Пример:
# HELP go_memstats_heap_idle_bytes Heap memory not currently in use.
# TYPE go_memstats_heap_idle_bytes gauge
go_memstats_heap_idle_bytes{alias="gateway_1_2"} 5242880
Heap memory released¶
go_memstats_heap_released_bytes
– объем памяти, освобожденной из кучи и возвращенной ОС.
Пример:
# HELP go_memstats_heap_released_bytes Heap memory released back to the OS.
# TYPE go_memstats_heap_released_bytes gauge
go_memstats_heap_released_bytes{alias="gateway_1_2"} 3145728
Stack memory in use¶
go_memstats_stack_inuse_bytes
– объем памяти, выделенной на стеке.
Пример:
# HELP go_memstats_stack_inuse_bytes Stack memory in use.
# TYPE go_memstats_stack_inuse_bytes gauge
go_memstats_stack_inuse_bytes{alias="gateway_1_2"} 524288
Stack memory obtained from OS¶
go_memstats_stack_sys_bytes
– объем памяти, выделенный под стеки горутин.
Пример:
# HELP go_memstats_stack_sys_bytes Stack memory obtained from the OS.
# TYPE go_memstats_stack_sys_bytes gauge
go_memstats_stack_sys_bytes{alias="gateway_1_2"} 1048576
mcache memory in use¶
go_memstats_mcache_inuse_bytes
– количество байт используется в локальных кешах для горутин.
Пример:
# HELP go_memstats_mcache_inuse_bytes MCache memory in use.
# TYPE go_memstats_mcache_inuse_bytes gauge
go_memstats_mcache_inuse_bytes{alias="gateway_1_2"} 32768
mcache memory obtained from OS¶
go_memstats_mcache_sys_bytes
– объем памяти, выделенной процессом ОС для структур mcache.
Пример:
# HELP go_memstats_mcache_sys_bytes MCache memory obtained from system.
# TYPE go_memstats_mcache_sys_bytes gauge
go_memstats_mcache_sys_bytes{alias="gateway_1_2"} 49152
mspan memory in use¶
go_memstats_mspan_inuse_bytes
– объем памяти, используемой mspan-структурами.
Пример:
# HELP go_memstats_mspan_inuse_bytes MSpan structures memory in use.
# TYPE go_memstats_mspan_inuse_bytes gauge
go_memstats_mspan_inuse_bytes{alias="gateway_1_2"} 32768
mspan memory obtained from OS¶
go_memstats_mspan_sys_bytes
– объем памяти, выделенной процессом ОС для mspan-структур.
Пример:
# HELP go_memstats_mspan_sys_bytes MSpan structures memory obtained from OS.
# TYPE go_memstats_mspan_sys_bytes gauge
go_memstats_mspan_sys_bytes{alias="gateway_1_2"} 65536
Memory in use for profiling¶
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 gauge
go_memstats_buck_hash_sys_bytes{alias="gateway_1_2"} 123456
Memory in use for garbage collection¶
go_memstats_gc_sys_bytes
– объем памяти, используемой для работы со сборщиком мусора.
Пример:
# HELP go_memstats_gc_sys_bytes Memory used by the garbage collector.
# TYPE go_memstats_gc_sys_bytes gauge
go_memstats_gc_sys_bytes{alias="gateway_1_2"} 789012
Other memory allocations¶
go_memstats_other_sys_bytes
– объем памяти, выделенной для других нужд системы.
Пример:
# HELP go_memstats_other_sys_bytes Memory allocated for other system needs.
# TYPE go_memstats_other_sys_bytes gauge
go_memstats_other_sys_bytes{alias="gateway_1_2"} 345678
Garbage collect duration (average)¶
go_gc_duration_seconds
– средняя продолжительность работы сборщика мусора.
Пример:
# HELP go_gc_duration_seconds Garbage collection duration.
# TYPE go_gc_duration_seconds histogram
go_gc_duration_seconds{alias="gateway_1_2", quantile="0.5"} 0.0023
Garbage collect duration¶
go_gc_duration_seconds
– 75-й процентиль продолжительности работы сборщика мусора.
Пример:
# HELP go_gc_duration_seconds Garbage collection duration.
# TYPE go_gc_duration_seconds histogram
go_gc_duration_seconds{alias="gateway_1_2", quantile="0.75"} 0.0045
Next garbage collect threshold¶
go_memstats_next_gc_bytes
– порог, при котором будет инициирован следующий сбор мусора.
Пример:
# HELP go_memstats_next_gc_bytes Next garbage collection threshold.
# TYPE go_memstats_next_gc_bytes gauge
go_memstats_next_gc_bytes{alias="gateway_1_2"} 12345678