Панель мониторинга¶
В TCF с версии 0.8.0 реализована панель мониторинга, которая предоставляет информацию о ключевых метриках, таких как состояние Gateway, Destination и экземпляров Tarantool внутри дата-центра.
Панели мониторинга упрощают контроль за состоянием системы: вместо ручного анализа записей в журнале и метрик они сразу показывают отклонения – скачки задержек, ошибки, падение трафика и другие потенциальные проблемы.
Grafana и Prometheus поддерживают настройку предупреждений, которые автоматически уведомляют о критических событиях – например, при недоступности узла или превышении порога задержки. Это снижает время реакции на инциденты и помогает поддерживать стабильную работу системы.
Этот раздел содержит информацию о том, как настроить панель мониторинга. Также представлен пример конфигурации для развертывания кластеров с настроенной панелью мониторинга.
Настройка панели мониторинга¶
Предварительные требования¶
Чтобы настроить панель мониторинга в Grafana, необходимо:
Установить и добавить в переменную окружения
PATH
следующие инструменты:
jsonnet – язык конфигурации;
jb – менеджер пакетов для jsonnet;
jsonnetfmt – инструмент для форматирования файлов
.jsonnet
и .libsonnet
, если необходимо отформатировать эти файлы;mage – инструмент для сборки (build system) на языке Go (альтернатива Make), предназначенный для написания скриптов сборки в виде Go-кода.
Использовать Prometheus версии v3 или выше. Это связано с несовместимостью формата значения квантилей. Дополнительную информацию можно найти в документации Prometheus.
Подготовить архив с дистрибутивом продукта, на котором будут развернуты кластеры и хранилище конфигурации, и архив с дистрибутивом TCF нужной версии для установки. Подробнее об этом читайте в разделе Подготовка архивов для установки.
Сборка панели мониторинга¶
Чтобы собрать панель мониторинга в Grafana и получить результат в формате JSON, выполните команду в корневой директории распакованного архива TCF:
mage buildmonitoring
Форматирование файлов jsonnet¶
Чтобы отформатировать все файлы в папке мониторинга с расширениями .jsonnet
и .libsonnet
, выполните команду:
mage formatjsonnet
Запуск панели мониторинга¶
Запустите стенд TCF. Стенд состоит из двух кластеров Tarantool DB с TCF и общего хранилища конфигурации на основе Tarantool. Для запуска стенда последовательно пройдите инструкции по настройке хранилища конфигурации, кластеров и межкластерных репликаторов данных.
Запустите Docker-контейнеры с конфигурацией Grafana и Prometheus. Для этого перейдите в директорию распакованного архива с TCF
./monitoring
и запустите контейнеры с помощью команды:cd monitoring docker compose up
Для просмотра графиков в 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 |
|
Общее количество событий, полученных от компонента Gateway |
График в нуле — кластер простаивает или не работает репликация |
Replicators info |
Events read from source cluster |
|
Суммарное количество записей, прочитанных с исходного кластера |
Ошибок чтения > 10% от общего числа запросов чтения |
Replicators info |
Events sent to destination cluster (от gateway) |
|
Суммарное количество записей, отправленных на компонент Destination |
Ошибок отправки > 10% от общего числа запросов отправки |
Replicators info |
Reading from source cluster errors |
|
Суммарное количество ошибок, возникших при чтении данных с исходного кластера |
Ошибок > 10% от общего числа запросов чтения |
Replicators info |
Sending to destination errors |
|
Суммарное количество ошибок, возникших при отправке данных на компонент Destination |
Ошибок > 10% от общего числа запросов отправки |
Replicators info |
Events sent to destination cluster (от destination) |
|
Суммарное количество событий, отправленных в Destination |
Ошибок > 10% от общего числа запросов отправки |
Replicators info |
Reading from gateway errors |
|
Общее количество ошибок при получении данных |
Количество ошибок > 10% от общего числа запросов |
Replicators info |
Sending to destination errors |
|
Количество ошибок, возникших в Destination при попытке отправить данные на целевой кластер |
Ошибок > 10% от общего числа запросов отправки |
Replicators info |
Vclock signature received from gateway |
|
Сигнатура vclock, полученная от компонента Gateway |
Нет |
Replicators info |
Vclock signature sent to destination cluster |
|
Сигнатура vclock, отправленная из Destination |
Нет |
Replicators info |
Vclock signature received from limbo |
|
Сигнатура vclock из limbo (очереди транзакций) |
Нет |
Replicators info |
Vclock signature sent from gateway |
|
Сигнатура vclock, отправленная из Gateway в Destination |
Нет |
Source cluster info / Destination cluster info |
Is cluster active |
|
Активность текущего кластера: зелёный — активный, жёлтый — пассивный |
Некорректное состояние кластеров (оба активны/пассивны или не совпадают статусы) |
Source cluster info |
Vclock signature sent from source cluster |
|
Сигнатура vclock, отправленная на Gateway из текущего кластера |
Нет |
Destination cluster info |
Vclock signature received from destination cluster |
|
Сигнатура vclock, применённая на целевом кластере |
Нет |
Go runtime of replicator services |
Goroutines exist |
|
Количество активных горутин в программе |
Превышение порогового значения |
Go runtime of replicator services |
Threads created |
|
Количество потоков, созданных процессом |
Превышение порогового значения |
Go runtime of replicator services |
Memory in use |
|
Объем выделенной памяти, которой владеет программа |
Непрерывный рост памяти без снижения |
Go runtime of replicator services |
Memory allocation |
|
Общее количество памяти, выделенной процессом с момента его старта |
Рост без освобождения памяти |
Go runtime of replicator services |
Memory obtained from OS |
|
Общий объем памяти, полученный процессом от операционной системы |
Рост без освобождения памяти |
Go runtime of replicator services |
Objects allocated |
|
Текущее количество живых объектов в куче |
Превышение порогового значения |
Go runtime of replicator services |
Mallocs |
|
Количество аллокаций объектов на куче было выделено за все время работы программы |
Аномальный рост количества malloc |
Go runtime of replicator services |
Memory |
|
Общее количество освобождённой памяти |
Стагнация или снижение при росте mallocs |
Go runtime of replicator services |
Pointer lookups |
|
Количество обращений к указателям (pointer lookups) |
Всплеск значений |
Go runtime of replicator services |
Heap memory in use |
|
Объем выделенной и используемой памяти на куче |
Рост без снижения |
Go runtime of replicator services |
Heap memory obtained from OS |
|
Объем памяти, выделенной процессом из ОС на куче |
Нет |
Go runtime of replicator services |
Heap memory for spans (in-use) |
|
Количество байт в куче, которые заняты живыми объектами программы |
Нет |
Go runtime of replicator services |
Heap memory for spans (idle) |
|
Объем памяти в куче, не используемой в данный момент |
Нет |
Go runtime of replicator services |
Heap memory released |
|
Объем памяти, освобожденной из кучи и возвращенной ОС |
Нет |
Go runtime of replicator services |
Stack memory in use |
|
Объем памяти, выделенной на стеке |
Нет |
Go runtime of replicator services |
Stack memory obtained from OS |
|
Объем памяти, выделенный под стеки горутин |
Нет |
Go runtime of replicator services |
mcache memory in use |
|
Количество байт используется в локальных кешах для горутин |
Нет |
Go runtime of replicator services |
mcache memory obtained from OS |
|
Объем памяти, выделенной процессом ОС для структур mcache |
Нет |
Go runtime of replicator services |
mspan memory in use |
|
Объем памяти, используемой структурами mspans |
Нет |
Go runtime of replicator services |
mspan memory obtained from OS |
|
Объем памяти, выделенной процессом ОС для mspans-структур |
Нет |
Go runtime of replicator services |
Memory in use for profiling |
|
Объем памяти, используемой для хеширования и профилирования |
Нет |
Go runtime of replicator services |
Memory in use for garbage collection |
|
Объем памяти, используемой для работы со сборщиком мусора |
Нет |
Go runtime of replicator services |
Other memory allocations |
|
Объем памяти, выделенной для других нужд системы |
Нет |
Go runtime of replicator services |
Garbage collect duration (average) |
|
Средняя продолжительность работы сборщика мусора |
Время сборки мусора превышает порог |
Go runtime of replicator services |
Garbage collect duration |
|
75-й процентиль продолжительности работы сборщика мусора |
Время сборки мусора превышает порог |