Перейти к содержанию

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

В данном разделе приведена информация о мониторинге запущенного кластера Picodata.

Мониторинг состояния кластера возможен после подключения к кластеру в консоли. После этого можно использовать команды, показывающие состояние raft-группы, отдельных инстансов, собранных из них репликасетов и т.д.

Получение лидера raft-группы

Узнать лидера raft-группы, а также ID и статус текущего инстанса:

pico.raft_status()

Пример вывода:

---
- term: 2
  leader_id: 1
  raft_state: Leader
  id: 1
...

Получение состава raft-группы

Просмотр состава raft-группы и данных инстансов:

box.space._pico_instance:fselect()

Пример вывода:

---
- -+-----------+--------------------------------------+-------+-------------+--------------------------------------+-------------+------------+--------------+
  - ​|instance_id|            instance_uuid             |raft_id|replicaset_id|           replicaset_uuid            |current_grade|target_grade|failure_domain|
  -+-----------+--------------------------------------+-------+-------------+--------------------------------------+-------------+------------+--------------+
  - ​|   "i1"    |"68d4a766-4144-3248-aeb4-e212356716e4"|   1   |    "r1"     |"e0df68c5-e7f9-395f-86b3-30ad9e1b7b07"|["Online",1] |["Online",1]|      {}      |
  - ​|   "i2"    |"24c4ac5f-4981-3441-879c-aee1edb608a6"|   2   |    "r1"     |"e0df68c5-e7f9-395f-86b3-30ad9e1b7b07"|["Online",1] |["Online",1]|      {}      |
  - ​|   "i3"    |"5d7a7353-3e82-30fd-af0d-261436544389"|   3   |    "r2"     |"eff4449e-feb2-3d73-87bc-75807cb23191"|["Online",1] |["Online",1]|      {}      |
  - ​|   "i4"    |"826cbe5e-6979-3191-9e22-e39deef142f0"|   4   |    "r2"     |"eff4449e-feb2-3d73-87bc-75807cb23191"|["Online",1] |["Online",1]|      {}      |
  -+-----------+--------------------------------------+-------+-------------+--------------------------------------+-------------+------------+--------------+
...

Можно отдельно посмотреть список репликасетов, их UUID и вес:

box.space._pico_replicaset:fselect()

Пример вывода:

---
- — ​+-------------+--------------------------------------+---------+------+
  - ​|replicaset_id|           replicaset_uuid            |master_id|weight|
  -+-------------+--------------------------------------+---------+------+
  - ​|    "r1"     |"e0df68c5-e7f9-395f-86b3-30ad9e1b7b07"|  "i1"   |  1   |
  - ​|    "r2"     |"eff4449e-feb2-3d73-87bc-75807cb23191"|  "i3"   |  1   |
  -+-------------+--------------------------------------+---------+------+
...

Таблицы выше позволяют узнать текущий и целевой уровень (grade) каждого инстанса, а также вес (weight) репликасета. Уровни отражают конфигурацию остальных инстансов относительно текущего, а вес репликасета — его наполненность репликами согласно фактору репликации (см. подробнее). Вес репликасета определяет его приоритет при распределении бакетов с данными.

Получение версии схемы данных

Узнать текущую версию схему данных можно с помощью команды:

box.space._pico_property:get("current_schema_version")
---
- ['current_schema_version', 1]
...

Каждое изменение схемы данных в кластере приводит к увеличению этого номера.

Метрики инстанса

Функциональность сбора метрик позволяет получать параметры работы СУБД из инстанса Picodata и предоставлять доступ к ним для внешних систем в формате Prometheus.

Включение сбора метрик

Модуль сбора метрик автоматически включается при использовании встроенного HTTP-сервера в Picodata. Для этого нужно при запуске инстанса использовать параметр --http-listen и задать адрес веб-сервера. Например:

picodata run --http-listen '127.0.0.1:8081'

Получение метрик

Метрики инстанса Picodata можно получить в консоли, используя curl:

curl --location 'http://127.0.0.1:8081/metrics'

Для интеграции Picodata с системой мониторинга событий и оповещений Prometheus настройте новую цель в файле /etc/prometheus/prometheus.yml:

global:
  scrape_interval: 10s

scrape_configs:
  - job_name: 'prometheus'
    scrape_interval: 5s
    static_configs:
      - targets: ['127.0.0.1::9090']

  - job_name: 'picodata'
    scrape_interval: 5s
    metrics_path: /metrics
    static_configs:
      - targets: ['127.0.0.1:8081']