Мониторинг кластера Arenadata DB

В документе приведены параметры мониторинга кластера Arenadata DB, а также схема организации мониторинга. Документ может быть полезен администраторам, программистам, разработчикам и сотрудникам подразделений информационных технологий, осуществляющих внедрение кластера.

Important

Для работы с метриками ADB требуется выделенный кластер мониторинга. Информация по разворачиванию кластера мониторинга приведена здесь - https://docs.arenadata.io/mon/ru/index.html

Схема мониторинга

Схема мониторинга представлена на Рис.102.

../_images/scheme.png

Рис. 102. Схема мониторинга

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

На стороне 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

Screen 1 (7 panels at the top) (Рис.103.)

../_images/screen1_system7.png

Рис. 103. System metrics: 7 panels at the top

CPU Usage (Рис.104.)

../_images/cpu_usage.png

Рис. 104. CPU Usage

Источник Graphite - System metrics\CPU\Percent.

Отображает процент загрузки процессора. Загрузка выше 90 процентов считается опасной (нестандартной), требующей анализа. График показывает загрузку CPU на каждом хосте, а также среднее значение. Alerting recommendations: среднее значение по хостам превышает 80% (10 минут).

Load AVG (Рис.105.)

../_images/load_avg.png

Рис. 105. Load AVG

Источник Graphite - System metrics\loadavg\01.

Отображает потребность в исполняемых потоках (задачах) в виде усреднённого количества исполняемых и ожидающих потоков за последнюю 1 минуту. Может быть получена из Linux консоли, выполнив команду uptime (первое из трех значений). Alerting recommendations: среднее значение превышает Cores X2 или разница между средним и максимальным более 30% с учетом того, что среднее значение превышает 30% (10 минут).

IOPS (Рис.106.)

../_images/iops.png

Рис. 106. IOPS

Источник Graphite - System metrics\Iostat\Iops.

Отображает количество операций ввода/вывода в секунду. Собирается Diamond из /proc/diskstats.

IO % (Рис.107.)

../_images/io_percent.png

Рис. 107. IO %

Источник Graphite - System metrics\Iostat\util_persentage.

Отображает нагрузку на диск при операциях ввода/вывода. Собирается Diamond из /proc/diskstats.

Mb per sec (Рис.108.)

../_images/mp_per_sec.png

Рис. 108. Mb_per_sec

Источник Graphite - System metrics\Iostat\byte_per_second.

Отображает скорость записи на диск при вводе/выводе информации.

Await (Рис.109.)

../_images/await.png

Рис. 109. Await

Источник Graphite - System metrics\Iostat\await.

Отображает время простоя (задержки) системы.

Service Time (Рис.110.)

../_images/service_time.png

Рис. 110. Service Time

Источник Graphite - System metrics\Iostat\service_time.

Отображает общее время выполнения (обслуживания) запроса.

Screen 2 (8 panels in the bottom) (Рис.111.)

../_images/screen2_system.png

Рис. 111. System metrics: 8 panels in the bottom

Network Receive Bytes (Рис.112.)

../_images/network_receive_bytes.png

Рис. 112. Network Receive Bytes

Источник Graphite - System metrics\network\rx_byte. Отображает скорость получения информации через интерфейс.

Network Transmit Bytes (Рис.113.)

../_images/network_transmit_bytes.png

Рис. 113. Network Transmit Bytes

Источник Graphite - System metrics\network\tx_byte.

Отображает скорость передачи информации через интерфейс

Memory Cached (Рис.114.)

../_images/memory_cached.png

Рис. 114. Memory Cached

Источник Graphite - System metrics\memory\Cached.

Отображает объем, занятый в ОЗУ под кэш чтения страниц с диска.

Memory Free (Рис.115.)

../_images/memory_free.png

Рис. 115. Memory Free

Источник Graphite - System metrics\memory\MemFree.

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

Disk Space Usage - datadirs (Рис.116.)

../_images/disk_space_usage_datadirs.png

Рис. 116. Disk Space Usage - datadirs

Источник Graphite - System metrics\diskspace\byte_percentfree.

Отображает процент свободного пространства на диске.

Disk Space Usage - / (Рис.117.)

../_images/disk_space_usage.png

Рис. 117. Disk Space Usage /

Источник Graphite - System metrics\diskspace\root\byte_percentfree.

Отображает процент свободного пространства на диске в директории root.

Processes Running (Рис.118.)

../_images/processes_running.png

Рис. 118. Processes Running

Источник Graphite - System_metrics\$host\loadavg\processes_running.

Отображает количество запущенных (активных) процессов.

Processes Total (Рис.119.)

../_images/processes_total.png

Рис. 119. Processes Total

Источник Graphite - System_metrics$hostloadavgprocesses_total.

Отображает общее количество процессов

Dashboard General/Arenadata DB system cluster <имя кластера>

Screen 1. Section Database (8 panels) (Рис.120.)

../_images/screen1_database.png

Рис. 120. Database metrics: 8

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

Database is (Рис.121.)

../_images/database_is.png

Рис. 121. 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 (Рис.122.)

../_images/mirrors_as_primaries.png

Рис. 122. 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 (Рис.123.)

../_images/database_segments.png

Рис. 123. 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) (Рис.124.)

adb_monitoring/./images/longeсt_transaction_sec.png

Рис. 124. 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) (Рис.125.)

../_images/longest_transaction_sessid.png

Рис. 125. 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 (Рис.126.)

../_images/master_replication_state_is.png

Рис. 126. Master replication state is


График показывает состояние репликации мастера.

Возможные значения:

  • 0 – inactive;
  • 1 – startup;
  • 2 – catchup;
  • 3 – backup;
  • 4 – streaming.

Alerting: последнее значение меньше 1 (5 минут).

Replication Delay (Рис.127.)

../_images/replication_delay.png

Рис. 127. Replication Delay


График показывает задержку репликации с master на secondary master

Wraparound warn percentage (Рис.128.)

../_images/wraparound_warn_percent.png

Рис. 128. Wraparound warn percentage


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

Screen 2. Section System (15 panels) (Рис.129.)

../_images/screen1_system15.png

Рис. 129. System metrics (15 panels)

В этой секции отображаются метрики аналогичные Arenadata System Metrics, с фильтром хостов по кластеру <имя кластера>