Панель мониторинга
В 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 и .libsonnet, выполните команду:
mage formatjsonnet
-
Запустите стенд TCF. Стенд состоит из двух кластеров Tarantool DB с TCF и общего хранилища конфигурации на основе Tarantool. Для запуска стенда последовательно пройдите инструкции по настройке хранилища конфигурации, кластеров и межкластерных репликаторов данных.
-
Запустите Docker-контейнеры с конфигурацией Grafana и Prometheus. Для этого перейдите в директорию распакованного архива с TCF
./monitoringи запустите контейнеры с помощью команды:cd monitoringdocker compose up -
Для просмотра графиков в Grafana перейдите по адресу localhost:3000 в вашем браузере.
global:scrape_interval: 5sevaluation_interval: 5sscrape_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.
Чтобы правильно отображать метрики репликаторов в 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-й процентиль продолжительности работы сборщика мусора | Время сборки мусора превышает порог |