Мониторинг кластера Arenadata DB¶
В документе приведены параметры мониторинга кластера Arenadata DB, а также схема организации мониторинга. Документ может быть полезен администраторам, программистам, разработчикам и сотрудникам подразделений информационных технологий, осуществляющих внедрение кластера.
Important
Для работы с метриками ADB требуется выделенный кластер мониторинга. Информация по разворачиванию кластера мониторинга приведена здесь - https://docs.arenadata.io/mon/ru/index.html
Схема мониторинга¶
Схема мониторинга представлена на Рис.103.

Рис. 103. Схема мониторинга
Сервис мониторинга модульный и состоит из нескольких компонент:
На стороне Arenadata DB
- Diamond – агент мониторинга, который собирает и отправляет системные метрики с серверов в кластере ADB на сервер Graphite.
- Custom scripts - shell и SQL-cкрипты по мониторингу состояния кластера ADB и статуса сегментов
На стороне кластера мониторинга
- Carbon-relay – модуль сервиса Grathite, который принимает метрики, преобразует в бинарный формат и отправляет следующему модулю Carbon-caches;
- Carbon-caches – модуль сервиса Grathite, который принимает метрики и записывает их в базу данных Whisper DB;
- Whisper DB – модуль сервиса Grathite, который является базой данных для хранения метрик;
- Graphite – фронтенд, читающий метрики из Whisper DB и отдающий их в ответ на особые запросы;
- Grafana – инструмент для визуализации метрик из Graphite.
Агент мониторинга Diamond¶
Агент мониторинга Diamond устанавливается локально на сервера кластера СУБД.
Параметры коллекторов, интервал отправки метрик можно найти в конфигурационном файле /etc/diamond/diamond.conf
По умолчанию Default Poll Interval (seconds) = 60
Скрипты по мониторингу состояния кластера ADB и статуса сегментов¶
Помимо информации, которая собирается с помощью агентов мониторинга Diamond, существуют запросы, которые отслеживают статус состояния кластера ADB и статус сегментов и отправляют командой ncat
напрямую на Graphite (default Metrics receiver TCP port 2015/ UDP port 2016).
Скрипты разворачивается на хосте, где master в директории /home/gpadmin/arenadata_configs/
и добавлены в расписание cron.
Скрипт arenadata_segments_monitor.sh
отсылает метрики из ADB по умолчанию раз в 3 минуты:
$ crontab -l | grep arenadata_segments_monitor.sh */3 * * * * /home/gpadmin/arenadata_configs/arenadata_segments_monitor.sh >> /home/gpadmin/arenadata_configs/arenadata_segments_monitor.log 2>&1
Скрипт db_datfrozenxid_alerter.sh
отсылает метрику “Wraparound warn percentage” из ADB по умолчанию раз в 30 минут:
$ crontab -l | grep db_datfrozenxid_alerter.sh */30 * * * * /home/gpadmin/arenadata_configs/db_datfrozenxid_alerter.sh >> /home/gpadmin/arenadata_configs/db_datfrozenxid_alerter.log 2>&1
Вид метрик в Grafana и их описание¶
Dashboard General/Arenadata System metrics¶
CPU Usage (Рис.105.)¶

Рис. 105. CPU Usage
Источник Graphite - System metrics\CPU\Percent
.
Отображает процент загрузки процессора. Загрузка выше 90 процентов считается опасной (нестандартной), требующей анализа. График показывает загрузку CPU на каждом хосте, а также среднее значение. Alerting recommendations: среднее значение по хостам превышает 80% (10 минут).
Load AVG (Рис.106.)¶

Рис. 106. Load AVG
Источник Graphite - System metrics\loadavg\01
.
Отображает потребность в исполняемых потоках (задачах) в виде усреднённого количества исполняемых и ожидающих потоков за последнюю 1 минуту. Может быть получена из Linux консоли, выполнив команду uptime (первое из трех значений). Alerting recommendations: среднее значение превышает Cores X2 или разница между средним и максимальным более 30% с учетом того, что среднее значение превышает 30% (10 минут).
IOPS (Рис.107.)¶

Рис. 107. IOPS
Источник Graphite - System metrics\Iostat\Iops
.
Отображает количество операций ввода/вывода в секунду. Собирается Diamond из /proc/diskstats
.
IO % (Рис.108.)¶

Рис. 108. IO %
Источник Graphite - System metrics\Iostat\util_persentage
.
Отображает нагрузку на диск при операциях ввода/вывода. Собирается Diamond из /proc/diskstats
.
Mb per sec (Рис.109.)¶

Рис. 109. Mb_per_sec
Источник Graphite - System metrics\Iostat\byte_per_second
.
Отображает скорость записи на диск при вводе/выводе информации.
Await (Рис.110.)¶

Рис. 110. Await
Источник Graphite - System metrics\Iostat\await
.
Отображает время простоя (задержки) системы.
Service Time (Рис.111.)¶

Рис. 111. Service Time
Источник Graphite - System metrics\Iostat\service_time
.
Отображает общее время выполнения (обслуживания) запроса.
Network Receive Bytes (Рис.113.)¶

Рис. 113. Network Receive Bytes
Источник Graphite - System metrics\network\rx_byte
.
Отображает скорость получения информации через интерфейс.
Network Transmit Bytes (Рис.114.)¶

Рис. 114. Network Transmit Bytes
Источник Graphite - System metrics\network\tx_byte
.
Отображает скорость передачи информации через интерфейс
Memory Cached (Рис.115.)¶

Рис. 115. Memory Cached
Источник Graphite - System metrics\memory\Cached
.
Отображает объем, занятый в ОЗУ под кэш чтения страниц с диска.
Memory Free (Рис.116.)¶

Рис. 116. Memory Free
Источник Graphite - System metrics\memory\MemFree
.
Отображает неиспользуемый объем памяти, доступный для немедленного выделения процессам.
Disk Space Usage - datadirs (Рис.117.)¶

Рис. 117. Disk Space Usage - datadirs
Источник Graphite - System metrics\diskspace\byte_percentfree
.
Отображает процент свободного пространства на диске.
Disk Space Usage - / (Рис.118.)¶

Рис. 118. Disk Space Usage /
Источник Graphite - System metrics\diskspace\root\byte_percentfree
.
Отображает процент свободного пространства на диске в директории root.
Dashboard General/Arenadata DB system cluster <имя кластера>¶
Screen 1. Section Database (8 panels) (Рис.121.)¶

Рис. 121. Database metrics: 8
Метрики для Database секции отправляются напрямую в Graphite через команду ncat <Graphite_host> 2015
из следующих скриптов обслуживания /home/gpadmin/arenadata_config
:
* arenadata_segments_monitor.sh
* db_datfrozenxid_alerter.sh
Database is (Рис.122.)¶

Рис. 122. Database is
Источник Graphite - Database\available\is_available
Отображает состояние (запущена/остановлена) базы данных. Arenadata.DB.database.available.is_available – checks database availability; (0 – available, 1 – not available). Interval - 3 minutes;
Mirrors as primaries (Рис.123.)¶

Рис. 123. Mirrors as primaries
Отображает соотношение основных и зеркальных сегментов.
Arenadata.DB.database.segments.MIRRORS_AS_PRIMARY – monitor switching between primary and mirror segments (0 – not switched, > 0 – switched). Interval - 3 minutes;
Primaries OK - отображает количество исправных сегментов. Рассчитывается как $TOTAL_PRIMARIES - $MIRRORS_AS_PRIMARIES. Источник для $TOTAL_PRIMARIES - запрос к СУБД select count(1) from gp_segment_configuration where preferred_role='p' and content<>-1;
$MIRRORS_AS_PRIMARIES - отображает количество зеркал (заменяющих) сегментов. Источник - запрос к СУБД select count(1) from gp_segment_configuration where preferred_role='m' and role='p' and content<>-1
Database segments (Рис.124.)¶

Рис. 124. Database segments
Текущее состояние сегментов (сколько работают, и сколько нет).
Segments down - отображает количество нерабочих (или отключенных) сегментов. Рассчитывается как $TOTAL_SEGMENTS - $UP_SEGMENTS. Источник для $TOTAL_SEGMENTS - запрос к СУБД select count(1) from gp_segment_configuration where content<>-1;
$UP_SEGMENTS - отображает количество рабочих (включенных) сегментов. Источник - запрос к СУБД select count(1) from gp_segment_configuration where status ='u' and content<>-1
Arenadata.DB.database.segments.TOTAL_PRIMARY_SEGMENTS – number of primary segments (no thresholds). Interval - 3 minutes;
Arenadata.DB.database.segments.TOTAL_SEGMENTS – number of total segments (primary + mirror) (no thresholds). Interval - 3 minutes;
Arenadata.DB.database.segments.UP_SEGMENTS – number of segments with status UP (must be the same as TOTAL_SEGMENTS, if less – error or warning). Interval - 3 minutes;
Longest Transaction (sec) (Рис.125.)¶

Рис. 125. Longest Transaction (sec)
Arenadata.DB.database.sessions.LONGEST_XACT_TIME - the time the longest current transaction has been already run. Interval - 3 minutes;
$LONGEST_XACT_TIME - рассчитывается как запрос к СУБД select extract(epoch from now() - xact_start) from pg_stat_activity where pid != pg_backend_pid() and xact_start is not null order by xact_start asc limit 1;
Longest Transaction (sess_id) (Рис.126.)¶

Рис. 126. Longest Transaction (sess_id)
Arenadata.DB.database.sessions.LONGEST_XACT_SESS_ID – the number of Session ID with the longest current transaction (no thresholds) . Interval - 3 minutes;
$LONGEST_XACT_SESS_ID - рассчитывается как запрос к СУБД select sess_id from pg_stat_activity where pid != pg_backend_pid() and xact_start is not null order by xact_start asc limit 1;
Master replication state is (Рис.127.)¶

Рис. 127. Master replication state is
График показывает состояние репликации мастера.
Возможные значения:
- 0 – inactive;
- 1 – startup;
- 2 – catchup;
- 3 – backup;
- 4 – streaming.
Alerting: последнее значение меньше 1 (5 минут).
Replication Delay (Рис.128.)¶

Рис. 128. Replication Delay
График показывает задержку репликации с master на secondary master
Wraparound warn percentage (Рис.129.)¶

Рис. 129. Wraparound warn percentage
График показывает значение счетчика транзакций в каждой БД на каждом сегменте. Alerting: максимальное значение превышает 50% (1 час). Отображает процент опасности переполнения счетчика транзакций. Значения более 50 процентов считаются опасным (нестандартными) показателем, требующими тщательного анализа.