Панель мониторинга | Clusters_Federation

Панель мониторинга

В TCF с версии 0.8.0 реализована панель мониторинга, которая предоставляет информацию о ключевых метриках, таких как состояние Gateway, Destination и экземпляров Tarantool внутри дата-центра.

Панели мониторинга упрощают контроль за состоянием системы: вместо ручного анализа записей в журнале и метрик они сразу показывают отклонения – скачки задержек, ошибки, падение трафика и другие потенциальные проблемы.

Grafana и Prometheus поддерживают настройку предупреждений, которые автоматически уведомляют о критических событиях – например, при недоступности узла или превышении порога задержки. Это снижает время реакции на инциденты и помогает поддерживать стабильную работу системы.

Этот раздел содержит информацию о том, как настроить панель мониторинга. Также представлен пример конфигурации для развертывания кластеров с настроенной панелью мониторинга.

Настройка панели мониторинга

Предварительные требования

Чтобы настроить панель мониторинга в Grafana, необходимо:

  1. Установить и добавить в переменную окружения PATH следующие инструменты:

  • jsonnet – язык конфигурации;

  • jb – менеджер пакетов для jsonnet;

  • jsonnetfmt – инструмент для форматирования файлов .jsonnet и .libsonnet, если необходимо отформатировать эти файлы;

  • mage – инструмент для сборки (build system) на языке Go (альтернатива Make), предназначенный для написания скриптов сборки в виде Go-кода.

  1. Использовать Prometheus версии v3 или выше. Это связано с несовместимостью формата значения квантилей. Дополнительную информацию можно найти в документации Prometheus.

  2. Подготовить архив с дистрибутивом продукта, на котором будут развернуты кластеры и хранилище конфигурации, и архив с дистрибутивом TCF нужной версии для установки. Подробнее об этом читайте в разделе Подготовка архивов для установки.

Сборка панели мониторинга

Чтобы собрать панель мониторинга в Grafana и получить результат в формате JSON, выполните команду в корневой директории распакованного архива TCF:

mage buildmonitoring

Форматирование файлов jsonnet

Чтобы отформатировать все файлы в папке мониторинга с расширениями .jsonnet и .libsonnet, выполните команду:

mage formatjsonnet

Запуск панели мониторинга

  1. Запустите стенд TCF. Стенд состоит из двух кластеров Tarantool DB с TCF и общего хранилища конфигурации на основе Tarantool. Для запуска стенда последовательно пройдите инструкции по настройке хранилища конфигурации, кластеров и межкластерных репликаторов данных.

  2. Запустите Docker-контейнеры с конфигурацией Grafana и Prometheus. Для этого перейдите в директорию распакованного архива с TCF ./monitoring и запустите контейнеры с помощью команды:

    cd monitoring
    docker compose up
    
  3. Для просмотра графиков в Grafana перейдите по адресу localhost:3000 в вашем браузере.

Пример конфигурации панели мониторинга для Prometheus

global:
  scrape_interval: 5s
  evaluation_interval: 5s
 
scrape_configs:
  - job_name: "cluster_a"
    static_configs:
      - targets:
          - localhost:8081
          - localhost:8082
          - localhost:8083
          - localhost:8084
          - localhost:8085
  - job_name: "cluster_b"
    static_configs:
      - targets:
          - localhost:18081
          - localhost:18082
          - localhost:18083
          - localhost:18084
          - localhost:18085
  - job_name: "replicators"
    static_configs:
      - targets:
          - localhost:10081
          - localhost:10082
          - localhost:10181
          - localhost:10182

Здесь:

  • global:

    • scrape_interval – интервал, с которым Prometheus будет собирать метрики (каждые 5 секунд);

    • evaluation_interval – интервал, с которым будет оцениваться состояние правил в Prometheus (5 секунд);

  • scrape_configs – список задач (jobs) для сбора метрик с различных сервисов или кластеров;

    • targets – список целей, каждая цель указывает на определённый сервис или экземпляр, с которого Prometheus должен запросить метрики;

    • cluster_a – список адресов сервисов из исходного кластера;

    • cluster_b – список адресов сервисов из целевого кластера;

    • replicators – список адресов репликаторов Gateway и Destination.

Примечание

В конфигурации Prometheus важно, чтобы были настроены три задачи (jobs):

  • cluster_a — экземпляры кластера A;

  • cluster_b — экземпляры кластера B;

  • replicators — экземпляры Gateway и Destination.

Конфигурация псевдонима (alias) экземпляра репликатора

Чтобы правильно отображать метрики репликаторов в Grafana, нужно задать псевдоним (alias) Gateway и Destination в конфигурации репликаторов данных, в секциях gateway.alias и destination.alias соответственно:

gateway:
  alias: 'my_gateway_1_2'
destination:
  alias: 'my_destination_1_2'

Здесь:

  • gateway.alias — псевдоним для Gateway;

  • destination.alias — псевдоним для Destination.

Доступные панели и их графики

Панель Grafana

Имя графика

Метрика

Описание графика

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

Replicators info

Events received from gateway

tcf_destination_recv_total

Общее количество событий, полученных от компонента Gateway

График в нуле — кластер простаивает или не работает репликация

Replicators info

Events read from source cluster

tcf_gateway_read_total

Суммарное количество записей, прочитанных с исходного кластера

Ошибок чтения > 10% от общего числа запросов чтения

Replicators info

Events sent to destination cluster (от gateway)

tcf_gateway_sent_total

Суммарное количество записей, отправленных на компонент Destination

Ошибок отправки > 10% от общего числа запросов отправки

Replicators info

Reading from source cluster errors

tcf_gateway_read_errors_total

Суммарное количество ошибок, возникших при чтении данных с исходного кластера

Ошибок > 10% от общего числа запросов чтения

Replicators info

Sending to destination errors

tcf_gateway_sent_errors_total

Суммарное количество ошибок, возникших при отправке данных на компонент Destination

Ошибок > 10% от общего числа запросов отправки

Replicators info

Events sent to destination cluster (от destination)

tcf_destination_push_total

Суммарное количество событий, отправленных в Destination

Ошибок > 10% от общего числа запросов отправки

Replicators info

Reading from gateway errors

tcf_destination_recv_errors_total

Общее количество ошибок при получении данных

Количество ошибок > 10% от общего числа запросов

Replicators info

Sending to destination errors

tcf_destination_push_errors_total

Количество ошибок, возникших в Destination при попытке отправить данные на целевой кластер

Ошибок > 10% от общего числа запросов отправки

Replicators info

Vclock signature received from gateway

tcf_destination_recv_vclock_signature

Сигнатура vclock, полученная от компонента Gateway

Нет

Replicators info

Vclock signature sent to destination cluster

tcf_destination_sent_vclock_signature

Сигнатура vclock, отправленная из Destination

Нет

Replicators info

Vclock signature received from limbo

tcf_gateway_limbo_vclock_signature

Сигнатура vclock из limbo (очереди транзакций)

Нет

Replicators info

Vclock signature sent from gateway

tcf_gateway_sent_vclock_signature

Сигнатура vclock, отправленная из Gateway в Destination

Нет

Source cluster info / Destination cluster info

Is cluster active

tcf_is_active

Активность текущего кластера: зелёный — активный, жёлтый — пассивный

Некорректное состояние кластеров (оба активны/пассивны или не совпадают статусы)

Source cluster info

Vclock signature sent from source cluster

tcf_src_vclock_signature

Сигнатура vclock, отправленная на Gateway из текущего кластера

Нет

Destination cluster info

Vclock signature received from destination cluster

tcf_dst_vclock_signature

Сигнатура vclock, применённая на целевом кластере

Нет

Go runtime of replicator services

Goroutines exist

go_goroutines

Количество активных горутин в программе

Превышение порогового значения

Go runtime of replicator services

Threads created

go_threads

Количество потоков, созданных процессом

Превышение порогового значения

Go runtime of replicator services

Memory in use

go_memstats_alloc_bytes

Объем выделенной памяти, которой владеет программа

Непрерывный рост памяти без снижения

Go runtime of replicator services

Memory allocation

go_memstats_alloc_bytes_total

Общее количество памяти, выделенной процессом с момента его старта

Рост без освобождения памяти

Go runtime of replicator services

Memory obtained from OS

go_memstats_sys_bytes

Общий объем памяти, полученный процессом от операционной системы

Рост без освобождения памяти

Go runtime of replicator services

Objects allocated

go_memstats_heap_objects

Текущее количество живых объектов в куче

Превышение порогового значения

Go runtime of replicator services

Mallocs

go_memstats_mallocs_total

Количество аллокаций объектов на куче было выделено за все время работы программы

Аномальный рост количества malloc

Go runtime of replicator services

Memory

go_memstats_frees_total

Общее количество освобождённой памяти

Стагнация или снижение при росте mallocs

Go runtime of replicator services

Pointer lookups

go_memstats_lookups_total

Количество обращений к указателям (pointer lookups)

Всплеск значений

Go runtime of replicator services

Heap memory in use

go_memstats_heap_alloc_bytes

Объем выделенной и используемой памяти на куче

Рост без снижения

Go runtime of replicator services

Heap memory obtained from OS

go_memstats_heap_sys_bytes

Объем памяти, выделенной процессом из ОС на куче

Нет

Go runtime of replicator services

Heap memory for spans (in-use)

go_memstats_heap_inuse_bytes

Количество байт в куче, которые заняты живыми объектами программы

Нет

Go runtime of replicator services

Heap memory for spans (idle)

go_memstats_heap_idle_bytes

Объем памяти в куче, не используемой в данный момент

Нет

Go runtime of replicator services

Heap memory released

go_memstats_heap_released_bytes

Объем памяти, освобожденной из кучи и возвращенной ОС

Нет

Go runtime of replicator services

Stack memory in use

go_memstats_stack_inuse_bytes

Объем памяти, выделенной на стеке

Нет

Go runtime of replicator services

Stack memory obtained from OS

go_memstats_stack_sys_bytes

Объем памяти, выделенный под стеки горутин

Нет

Go runtime of replicator services

mcache memory in use

go_memstats_mcache_inuse_bytes

Количество байт используется в локальных кешах для горутин

Нет

Go runtime of replicator services

mcache memory obtained from OS

go_memstats_mcache_sys_bytes

Объем памяти, выделенной процессом ОС для структур mcache

Нет

Go runtime of replicator services

mspan memory in use

go_memstats_mspan_inuse_bytes

Объем памяти, используемой структурами mspans

Нет

Go runtime of replicator services

mspan memory obtained from OS

go_memstats_mspan_sys_bytes

Объем памяти, выделенной процессом ОС для mspans-структур

Нет

Go runtime of replicator services

Memory in use for profiling

go_memstats_buck_hash_sys_bytes

Объем памяти, используемой для хеширования и профилирования

Нет

Go runtime of replicator services

Memory in use for garbage collection

go_memstats_gc_sys_bytes

Объем памяти, используемой для работы со сборщиком мусора

Нет

Go runtime of replicator services

Other memory allocations

go_memstats_other_sys_bytes

Объем памяти, выделенной для других нужд системы

Нет

Go runtime of replicator services

Garbage collect duration (average)

go_gc_duration_seconds (avg)

Средняя продолжительность работы сборщика мусора

Время сборки мусора превышает порог

Go runtime of replicator services

Garbage collect duration

go_gc_duration_seconds (0.75 quantile)

75-й процентиль продолжительности работы сборщика мусора

Время сборки мусора превышает порог

Нашли ответ на свой вопрос?
Обратная связь