Дополнительная метрика доступности

Общая информация#

Метрика доступности разработана для мониторинга доступности аппаратного и программного обеспечения соответствующих модулей в рамках поставки ПАК. Метрика позволяет определить, доступен ли тот или иной модуль, или же он находится в неисправном состоянии. Сама метрика - module_availability.

Метрика является агрегирующей и состоит из следующего запроса:

label_set(sum(usr_mbd_g_bm_hw_availability) without(src_type), "module_type",
"Базовый модуль", "pak_type", "МБД.Г")
  or label_set(sum(usr_mbd_g_bmur1_hw_availability + usr_mbd_g_bmur1_sw_availability > bool 1)
    without(src_type), "module_type", "Базовый модуль управления и распределения", "pak_type",
    "МБД.Г")
  or label_set(sum(usr_mbd_g_mvh_d1_hw_availability + usr_mbd_g_mvh_d1_sw_availability > bool 1)
    without(src_type), "module_type", "Модуль вычисления и хранения D", "pak_type", "МБД.Г")
  or label_set(sum(usr_mbd_g_mvh_t1_hw_availability + usr_mbd_g_mvh_t1_sw_availability > bool 1)
    without(src_type), "module_type", "Модуль вычисления и хранения T", "pak_type", "МБД.Г")
  or label_set(sum(usr_mbd_g_mkvh1_hw_availability + usr_mbd_g_mkvh1_sw_availability > bool 1)
    without(src_type), "module_type", "Модуль коммутации, вычисления и хранения", "pak_type",
    "МБД.Г")
  or label_set(sum(usr_mbd_g_mkvh6_hw_availability + usr_mbd_g_mkvh6_sw_availability > bool 1)
    without(src_type), "module_type", "Модуль коммутации, вычисления и хранения тип 6",
    "pak_type", "МБД.Г")
  or label_set(sum(usr_mbd_g_mrk_hw_availability) without(src_type), "module_type",
    "Базовый модуль резервного копирования", "pak_type", "МБД.Г")
  or label_set(sum(usr_mbd_g_bma_hw_availability) without(src_type), "module_type",
    "Базовый модуль агрегации", "pak_type", "МБД.Г")
  or label_set(sum(usr_mbd_qm_bm_hw_availability) without(src_type), "module_type",
    "Базовый модуль", "pak_type", "МБД.КХ")
  or label_set(sum(usr_mbd_qm_bmur1_hw_availability + usr_mbd_qm_bmur1_sw_availability > bool 1)
    without(src_type), "module_type", "Базовый модуль управления и распределения",
    "pak_type", "МБД.КХ")
  or label_set(sum(usr_mbd_qm_mvh_d1_hw_availability + usr_mbd_qm_mvh_d1_sw_availability > bool 1)
    without(src_type), "module_type", "Модуль вычисления и хранения D", "pak_type", "МБД.КХ")
  or label_set(sum(usr_mbd_qm_mvh_t1_hw_availability + usr_mbd_qm_mvh_t1_sw_availability > bool 1)
    without(src_type), "module_type", "Модуль вычисления и хранения T", "pak_type", "МБД.КХ")
  or label_set(sum(usr_mbd_qm_mkvh1_hw_availability + usr_mbd_qm_mkvh1_sw_availability > bool 1)
    without(src_type), "module_type", "Модуль коммутации, вычисления и хранения", "pak_type",
    "МБД.КХ")
  or label_set(sum(usr_mbd_qm_bmrk_hw_availability) without(src_type), "module_type",
    "Базовый модуль резервного копирования", "pak_type", "МБД.КХ")
  or label_set(sum(usr_mbd_qm_bma_hw_availability) without(src_type), "module_type",
    "Базовый модуль агрегации", "pak_type", "МБД.КХ")
  or label_set(sum(usr_mbd_h_bm_hw_availability) without(src_type), "module_type",
    "Базовый модуль", "pak_type", "МБД.Х")
  or label_set(sum(usr_mbd_h_bmur1_hw_availability + usr_mbd_h_bmur1_sw_availability > bool 1)
    without(src_type), "module_type", "Базовый модуль управления и распределения", "pak_type",
    "МБД.Х")
  or label_set(sum(usr_mbd_h_mvh_d1_hw_availability + usr_mbd_h_mvh_d1_sw_availability > bool 1)
    without(src_type), "module_type", "Модуль вычисления и хранения D", "pak_type", "МБД.Х")
  or label_set(sum(usr_mbd_h_mvh_t1_hw_availability + usr_mbd_h_mvh_t1_sw_availability > bool 1)
    without(src_type), "module_type", "Модуль вычисления и хранения T", "pak_type", "МБД.Х")
  or label_set(sum(usr_mbd_h_mgf1_hw_availability + usr_mbd_h_mgf1_sw_availability > bool 1)
    without(src_type), "module_type", "Модуль граничных функций", "pak_type", "МБД.Х")
  or label_set(sum(usr_mbd_h_mkvh1_hw_availability + usr_mbd_h_mkvh1_sw_availability > bool 1)
    without(src_type), "module_type", "Модуль коммутации, вычисления и хранения", "pak_type",
    "МБД.Х")
  or label_set(sum(usr_mbd_h_mrk_hw_availability)
    without(src_type), "module_type", "Базовый модуль резервного копирования", "pak_type",
    "МБД.Х")

Концептуально внутри запроса лежит join, который заполняет метрику данными из промежуточных, создаваемых пользователем, метрик доступности каждого модуля. С помощью функции label_set новая метрика обогащается метками “Модуль” и “ПАК”. Значения временного ряда будут получены из значений метрик, используемых в качестве первого аргумента label_set

Собираемая метрика выглядит следующим образом:

Создание промежуточных метрик#

Метрики агрегируются из уже готовых метрик. Для сбора метрики на узлах нужно развернуть соответствующие экспортеры, за исключением blackbox_exporter – его достаточно развернуть только на Визион.Proxy.

При заведении метрик учитывайте:

  • метки;

  • количество узлов в модуле.

Метки уже прописаны. Вместо Х нужно подставить значение из объектной модели, прописать имя модуля и имя ПАК, к которому будет относиться метрика, или IP-адрес узла, который проверяется с помощью метрики probe_success (доступность оборудования).

Так как количество узлов может отличаться, не стоит относиться к количеству метрик внутри запроса для агрегации метрики доступности как к фиксированному значению – можно скопировать часть запроса и продублировать его для ещё одного узла, например:

mbd_h_mrk_hw_availability - sum(probe_success{instance="X", _module_id="X",_pak_id="X"}) by (_pak_id, _module_id) + sum(probe_success{instance="X", _module_id="X",_pak_id="X"}) by (_pak_id, _module_id) > bool 0

В данном случае проверяются два узла. Можно добавить третий в запрос, просто скопировав sum:

sum(probe_success{instance="X", _module_id="X",_pak_id="X"}) by (_pak_id, _module_id) + sum(probe_success{instance="X", _module_id="X",_pak_id="X"}) by (_pak_id, _module_id) > bool 0 + sum(probe_success{instance="X", _module_id="X",_pak_id="X"}) by (_pak_id, _module_id)

Такая гибкость позволяет учитывать изменения в конфигурации ПАК.

Если агрегирующих метрик меньше, чем тех, что перечислены в module_availability, это не повлияет на работоспособность, просто недостающие не будут участвовать в запросе.

Если с помощью одного Визиона мониторятся несколько ПАК одного типа, можно объединить их внутри метрики оператором or:

(sum(probe_success{instance="1.1.1.1", _module_id="Module1",_pak_id="PAK1"}) by (_pak_id, _module_id) + sum(probe_success{instance="2.2.2.2", _module_id="Module1",_pak_id="PAK1"}) by (_pak_id, _module_id) > bool 0) or (sum(probe_success{instance="3.3.3.3", _module_id="Module2",_pak_id="PAK2"}) by (_pak_id, _module_id) + sum(probe_success{instance="4.4.4.4", _module_id="Module2",_pak_id="PAK2"}) by (_pak_id, _module_id) > bool 0)

Для создания метрик выберите на панели навигации menu:Настройки[Метрики].

Примечание
К названиям созданных метрик автоматически добавляется префикс usr_.

Промежуточные метрики#

  • mbd_g_bm_hw_availability

    Метрика доступности оборудования Базового модуля.

    Экспортер: blackbox_exporter.

    Выражение PromQL:

    sum(probe_success{instance="X", _module_id="X",_pak_id="X"}) by (_pak_id, _module_id) + sum(probe_success{instance="X", _module_id="X",_pak_id="X"}) by (_pak_id, _module_id) > bool 0
    
  • mbd_g_bmur1_hw_availability

    Метрика доступности оборудования Базового модуля управления и распределения.

    Экспортер: blackbox_exporter.

    Выражение PromQL:

    sum(probe_success{instance="X", _module_id="X",_pak_id="X"}) by (_pak_id, _module_id) + sum(probe_success{instance="X", _module_id="X",_pak_id="X"}) by (_pak_id, _module_id) > bool 0
    
  • mbd_g_bmur1_sw_availability

    Метрика доступности программного обеспечения Базового модуля управления и распределения.

    Экспортер: greenplum_sql_exporter.

    Выражение PromQL:

    sum(greenplum_database_status{_module_id="X", _pak_id="X"} or absent(greenplum_database_status{_module_id="X", _pak_id="X"}) * 0) by (_module_id, _pak_id) > bool 0
    
  • mbd_g_mvh_d1_hw_availability

    Метрика доступности оборудования Модуля вычисления и хранения D.

    Экспортер: blackbox_exporter.

    Выражение PromQL:

    sum(probe_success{instance="X", _module_id="X",_pak_id="X"}) by (_pak_id, _module_id) + sum(probe_success{instance="X", _module_id="X",_pak_id="X"}) by (_pak_id, _module_id) > bool 0
    
  • mbd_g_mvh_d1_sw_availability

    Метрика доступности программного обеспечения Модуля вычисления и хранения D.

    Экспортер: process_exporter.

    Выражение PromQL:

    sum(namedprocess_namegroup_num_procs{groupname="postgres", _module_id="X", _pak_id="X"}) by (_module_id, _pak_id) > bool 0
    
  • mbd_g_mvh_t1_hw_availability

    Метрика доступности оборудования Модуля вычисления и хранения T.

    Экспортер: blackbox_exporter.

    Выражение PromQL:

    sum(probe_success{instance="X", _module_id="X",_pak_id="X"}) by (_pak_id, _module_id) + sum(probe_success{instance="X", _module_id="X",_pak_id="X"}) by (_pak_id, _module_id) > bool 0
    
  • mbd_g_mvh_t1_sw_availability

    Метрика доступности программного обеспечения Модуля вычисления и хранения T.

    Экспортер: process_exporter.

    Метрика PromQL:

    sum(namedprocess_namegroup_num_procs{groupname="postgres", _module_id="X", _pak_id="X"}) by (_module_id, _pak_id) > bool 0
    
  • mbd_g_mkvh1_hw_availability

    Метрика доступности оборудования Модуля коммутации, вычисления и хранения.

    Экспортер: blackbox_exporter.

    Выражение PromQL:

    sum(probe_success{instance="X", _module_id="X",_pak_id="X"}) by (_pak_id, _module_id) + sum(probe_success{instance="X", _module_id="X",_pak_id="X"}) by (_pak_id, _module_id) > bool 0
    
  • mbd_g_mkvh1_sw_availability

    Метрика доступности программного обеспечения Модуля коммутации, вычисления и хранения.

    Экспортер: process_exporter.

    Выражение PromQL:

    sum(namedprocess_namegroup_num_procs{groupname="postgres", _module_id="X", _pak_id="X"}) by (_module_id, _pak_id) > bool 0
    
  • mbd_g_mkvh6_hw_availability

    Метрика доступности оборудования Модуля коммутации, вычисления и хранения тип 6.

    Экспортер: blackbox_exporter.

    Выражение PromQL:

    sum(probe_success{instance="X", _module_id="X",_pak_id="X"}) by (_pak_id, _module_id) + sum(probe_success{instance="X", _module_id="X",_pak_id="X"}) by (_pak_id, _module_id) > bool 0
    
  • mbd_g_mkvh6_sw_availability

    Метрика доступности программного обеспечения Модуля коммутации, вычисления и хранения тип 6.

    Экспортер: process_exporter.

    Выражение PromQL:

    sum(namedprocess_namegroup_num_procs{groupname="postgres", _module_id="X", _pak_id="X"}) by (_module_id, _pak_id) > bool 0
    
  • mbd_g_mrk_hw_availability

    Метрика доступности оборудования Базового модуля резервного копирования.

    Экспортер: blackbox_exporter.

    Выражение PromQL:

    sum(probe_success{instance="X", _module_id="X",_pak_id="X"}) by (_pak_id, _module_id) + sum(probe_success{instance="X", _module_id="X",_pak_id="X"}) by (_pak_id, _module_id) > bool 0
    
  • mbd_g_bma_hw_availability

    Метрика доступности оборудования Базового модуля агрегации.

    Экспортер: blackbox_exporter.

    Выражение PromQL:

    sum(probe_success{instance="X", _module_id="X",_pak_id="X"}) by (_pak_id, _module_id) + sum(probe_success{instance="X", _module_id="X",_pak_id="X"}) by (_pak_id, _module_id) > bool 0
    
  • mbd_qm_bm_hw_availability

    Метрика доступности оборудования Базового модуля.

    Экспортер: blackbox_exporter.

    Выражение PromQL:

    sum(probe_success{instance="X", _module_id="X",_pak_id="X"}) by (_pak_id, _module_id) + sum(probe_success{instance="X", _module_id="X",_pak_id="X"}) by (_pak_id, _module_id) > bool 0
    
  • mbd_qm_bmur1_hw_availability

    Метрика доступности оборудования Базового модуля управления и распределения.

    Экспортер: blackbox_exporter.

    Выражение PromQL:

    sum(probe_success{instance="X", _module_id="X",_pak_id="X"}) by (_pak_id, _module_id) + sum(probe_success{instance="X", _module_id="X",_pak_id="X"}) by (_pak_id, _module_id) > bool 0
    
  • mbd_qm_bmur1_sw_availability

    Метрика доступности программного обеспечения Базового модуля управления и распределения.

    Экспортер: systemd_exporter.

    Выражение PromQL:

    sum(systemd_unit_state{name="zookeeper.service", state="active", _module_id="X", _pak_id="X"}) by (_module_id, _pak_id) > bool 0
    
  • mbd_qm_mvh_d1_hw_availability

    Метрика доступности оборудования Модуля вычисления и хранения D.

    Экспортер: blackbox_exporter.

    Выражение PromQL:

    sum(probe_success{instance="X", _module_id="X",_pak_id="X"}) by (_pak_id, _module_id) + sum(probe_success{instance="X", _module_id="X",_pak_id="X"}) by (_pak_id, _module_id) > bool 0
    
  • mbd_qm_mvh_d1_sw_availability

    Метрика доступности программного обеспечения Модуля вычисления и хранения D.

    Экспортер: clickhouse_sql_exporter.

    Выражение PromQL:

    sum(clickhouse_test_connection{_module_id="X", _pak_id="X"} or absent(clickhouse_test_connection{_module_id="X", _pak_id="X"}) * 0) by (_pak_id, _module_id) > bool 0
    
  • mbd_qm_mvh_t1_hw_availability

    Метрика доступности оборудования Модуля вычисления и хранения T.

    Экспортер: blackbox_exporter.

    Выражение PromQL:

    sum(probe_success{instance="X", _module_id="X",_pak_id="X"}) by (_pak_id, _module_id) + sum(probe_success{instance="X", _module_id="X",_pak_id="X"}) by (_pak_id, _module_id) > bool 0
    
  • mbd_qm_mvh_t1_sw_availability

    Метрика доступности программного обеспечения Модуля вычисления и хранения T.

    Экспортер: clickhouse_sql_exporter.

    Выражение PromQL:

    sum(clickhouse_test_connection{_module_id="X", _pak_id="X"} or absent(clickhouse_test_connection{_module_id="X", _pak_id="X"}) * 0) by (_pak_id, _module_id)
    
  • mbd_qm_mkvh1_hw_availability

    Метрика доступности оборудования Модуля коммутации, вычисления и хранения.

    Экспортер: blackbox_exporter.

    Выражение PromQL:

    sum(probe_success{instance="X", _module_id="X",_pak_id="X"}) by (_pak_id, _module_id) + sum(probe_success{instance="X", _module_id="X",_pak_id="X"}) by (_pak_id, _module_id) > bool 0
    
  • mbd_qm_mkvh1_sw_availability

    Метрика доступности программного обеспечения Модуля коммутации, вычисления и хранения.

    Экспортер: clickhouse_sql_exporter.

    Выражение PromQL:

    sum(clickhouse_test_connection{_module_id="X", _pak_id="X"} or absent(clickhouse_test_connection{_module_id="X", _pak_id="X"}) * 0) by (_pak_id, _module_id) > bool 0
    
  • mbd_qm_bmrk_hw_availability

    Метрика доступности оборудования Базового модуля резервного копирования.

    Экспортер: blackbox_exporter.

    Выражение PromQL:

    sum(probe_success{instance="X", _module_id="X",_pak_id="X"}) by (_pak_id, _module_id) + sum(probe_success{instance="X", _module_id="X",_pak_id="X"}) by (_pak_id, _module_id) > bool 0
    
  • mbd_qm_bma_hw_availability

    Метрика доступности оборудования Базового модуля агрегации.

    Экспортер: blackbox_exporter.

    Выражение PromQL:

    sum(probe_success{instance="X", _module_id="X",_pak_id="X"}) by (_pak_id, _module_id) + sum(probe_success{instance="X", _module_id="X",_pak_id="X"}) by (_pak_id, _module_id) > bool 0
    
  • mbd_h_bm_hw_availability

    Метрика доступности оборудования Базового модуля.

    Экспортер: blackbox_exporter.

    Выражение PromQL:

    sum(probe_success{instance="X", _module_id="X",_pak_id="X"}) by (_pak_id, _module_id) + sum(probe_success{instance="X", _module_id="X",_pak_id="X"}) by (_pak_id, _module_id) > bool 0
    
  • mbd_h_bmur1_hw_availability

    Метрика доступности оборудования Базового модуля управления и распределения.

    Экспортер: blackbox_exporter.

    Выражение PromQL:

    sum(probe_success{instance="X", _module_id="X",_pak_id="X"}) by (_pak_id, _module_id) + sum(probe_success{instance="X", _module_id="X",_pak_id="X"}) by (_pak_id, _module_id) > bool 0
    
  • mbd_h_bmur1_sw_availability

    Метрика доступности программного обеспечения Базового модуля управления и распределения.

    Экспортер: systemd_exporter.

    Выражение PromQL:

    ((sum(systemd_unit_state{name="hadoop-hdfs-namenode.service", state="active",_module_id="X",_pak_id="X"}) by (_module_id, _pak_id) > bool 0) + (sum(systemd_unit_state{name="zookeeper.service", state="active",_module_id="X",_pak_id="X"}) by (_module_id, _pak_id) > bool 0)) > bool 1
    
  • mbd_h_mvh_d1_hw_availability

    Метрика доступности оборудования Модуля вычисления и хранения D.

    Экспортер: blackbox_exporter.

    Выражение PromQL:

    sum(probe_success{instance="X", _module_id="X",_pak_id="X"}) by (_pak_id, _module_id) + sum(probe_success{instance="X", _module_id="X",_pak_id="X"}) by (_pak_id, _module_id) > bool 0
    
  • mbd_h_mvh_d1_sw_availability

    Метрика доступности программного обеспечения Модуля вычисления и хранения D.

    Экспортер: systemd_exporter.

    Выражение PromQL:

    sum(systemd_unit_state{name="hadoop-hdfs-datanode.service", state="active", _module_id="X", _pak_id="X"}) by (_pak_id, _module_id) > bool 0
    
  • mbd_h_mvh_t1_hw_availability

    Метрика доступности оборудования Модуля вычисления и хранения T.

    Экспортер: blackbox_exporter.

    Выражение PromQL:

    sum(probe_success{instance="X", _module_id="X",_pak_id="X"}) by (_pak_id, _module_id) + sum(probe_success{instance="X", _module_id="X",_pak_id="X"}) by (_pak_id, _module_id) > bool 0
    
  • mbd_h_mvh_t1_sw_availability

    Метрика доступности программного обеспечения Модуля вычисления и хранения T.

    Экспортер: systemd_exporter.

    Выражение PromQL:

    sum(systemd_unit_state{name="hadoop-hdfs-datanode.service", state="active", _module_id="X", _pak_id="X"}) by (_pak_id, _module_id) > bool 0
    
  • mbd_h_mgf1_hw_availability

    Метрика доступности оборудования Модуля граничных функций.

    Экспортер: blackbox_exporter.

    Выражение PromQL:

    sum(probe_success{instance="X", _module_id="X",_pak_id="X"}) by (_pak_id, _module_id) + sum(probe_success{instance="X", _module_id="X",_pak_id="X"}) by (_pak_id, _module_id) > bool 0
    
  • mbd_h_mgf1_sw_availability

    Метрика доступности программного обеспечения Модуля граничных функций.

    Экспортер: blackbox_exporter.

    Выражение PromQL:

    sum(probe_success{instance="X", _module_id="X",_pak_id="X"}) by (_pak_id, _module_id) + sum(probe_success{instance="X", _module_id="X",_pak_id="X"}) by (_pak_id, _module_id) > bool 0
    
  • mbd_h_mkvh1_hw_availability

    Метрика доступности оборудования Модуля коммутации, вычисления и хранения.

    Экспортер: blackbox_exporter.

    Выражение PromQL:

    sum(probe_success{instance="X", _module_id="X",_pak_id="X"}) by (_pak_id, _module_id) + sum(probe_success{instance="X", _module_id="X",_pak_id="X"}) by (_pak_id, _module_id) > bool 0
    
  • mbd_h_mkvh1_sw_availability

    Метрика доступности программного обеспечения Модуля коммутации, вычисления и хранения.

    Экспортер: systemd_exporter.

    Выражение PromQL:

    sum(systemd_unit_state{name="hadoop-hdfs-datanode.service", state="active", _module_id="X", _pak_id="X"}) by (_pak_id, _module_id) > bool 0
    
  • mbd_h_mrk_hw_availability

    Метрика доступности оборудования Базового модуля резервного копирования.

    Экспортер: blackbox_exporter.

    Выражение PromQL:

    sum(probe_success{instance="X", _module_id="X",_pak_id="X"}) by (_pak_id, _module_id) + sum(probe_success{instance="X", _module_id="X",_pak_id="X"}) by (_pak_id, _module_id) > bool 0
    

Конфигурация плагинов для корректного мониторинга#

  • blackbox_exporter — в параметрах таргетов укажите адреса узлов.

  • clickhouse_sql_exporter — укажите данные таргетов и выберите соответствующий коллектор.

  • greenplum_sql_exporter — укажите данные таргетов и выберите соответствующий коллектор.

  • process_exporter — в конфигурации плагина укажите:

    process_names:
      - name: "postgres"
        comm:
          - "postgres"