Метрики TCF | Clusters_Federation

Метрики 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

Условия предупреждения:

  1. Если доля ответов со статусами 4xx или 5xx превышает 5% от общего числа запросов.

  2. Метод /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
Found what you were looking for?
Feedback