1. Общая информация#
Метрика доступности разработана для мониторинга доступности аппаратного и программного обеспечения соответствующих модулей в рамках поставки ПАК. Метрика позволяет определить, доступен ли тот или иной модуль, или же он находится в неисправном состоянии. Сама метрика - 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
Собираемая метрика выглядит следующим образом:
2. Создание промежуточных метрик#
Название метрики | Описание | Способ получения метрики | Экспортер |
---|---|---|---|
mbd_g_bm_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 |
blackbox_exporter |
mbd_g_bmur1_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 |
blackbox_exporter |
mbd_g_bmur1_sw_availability | Метрика доступности программного обеспечения Базового модуля управления и распределения | 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 |
greenplum_sql_exporter |
mbd_g_mvh_d1_hw_availability | Метрика доступности оборудования Модуля вычисления и хранения D | 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 |
mbd_g_mvh_d1_sw_availability | Метрика доступности программного обеспечения Модуля вычисления и хранения D | sum(namedprocess_namegroup_num_procs{groupname="postgres", _module_id="X", _pak_id="X"}) by (_module_id, _pak_id) > bool 0 |
process_exporter |
mbd_g_mvh_t1_hw_availability | Метрика доступности оборудования Модуля вычисления и хранения T | 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 |
mbd_g_mvh_t1_sw_availability | Метрика доступности программного обеспечения Модуля вычисления и хранения T | sum(namedprocess_namegroup_num_procs{groupname="postgres", _module_id="X", _pak_id="X"}) by (_module_id, _pak_id) > bool 0 |
process_exporter |
mbd_g_mkvh1_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 |
blackbox_exporter |
mbd_g_mkvh1_sw_availability | Метрика доступности программного обеспечения Модуля коммутации, вычисления и хранения | sum(namedprocess_namegroup_num_procs{groupname="postgres", _module_id="X", _pak_id="X"}) by (_module_id, _pak_id) > bool 0 |
process_exporter |
mbd_g_mkvh6_hw_availability | Метрика доступности оборудования Модуля коммутации, вычисления и хранения тип 6 | 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 |
mbd_g_mkvh6_sw_availability | Метрика доступности программного обеспечения Модуля коммутации, вычисления и хранения тип 6 | sum(namedprocess_namegroup_num_procs{groupname="postgres", _module_id="X", _pak_id="X"}) by (_module_id, _pak_id) > bool 0 |
process_exporter |
mbd_g_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 |
blackbox_exporter |
mbd_g_bma_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 |
blackbox_exporter |
mbd_qm_bm_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 |
blackbox_exporter |
mbd_qm_bmur1_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 |
blackbox_exporter |
mbd_qm_bmur1_sw_availability | Метрика доступности программного обеспечения Базового модуля управления и распределения | sum(systemd_unit_state{name="zookeeper.service", state="active", _module_id="X", _pak_id="X"}) by (_module_id, _pak_id) > bool 0 |
systemd_exporter |
mbd_qm_mvh_d1_hw_availability | Метрика доступности оборудования Модуля вычисления и хранения D | 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 |
mbd_qm_mvh_d1_sw_availability | Метрика доступности программного обеспечения Модуля вычисления и хранения D | 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 |
clickhouse_sql_exporter |
mbd_qm_mvh_t1_hw_availability | Метрика доступности оборудования Модуля вычисления и хранения T | 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 |
mbd_qm_mvh_t1_sw_availability | Метрика доступности программного обеспечения Модуля вычисления и хранения T | ((sum(systemd_unit_state{name="hadoop-hdfs-datanode.service", state="active", _module_id="X", _pak_id="X"}) by (_pak_id, _module_id) > bool 0) + (sum(systemd_unit_state{name="zookeeper.service", state="active", _module_id="X", _pak_id="X"}) by (_pak_id, _module_id) > bool 0)) > bool 1 |
systemd_exporter |
mbd_qm_mkvh1_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 |
blackbox_exporter |
mbd_qm_mkvh1_sw_availability | Метрика доступности программного обеспечения Модуля коммутации, вычисления и хранения | 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) > |
clickhouse_sql_exporter |
mbd_qm_bmrk_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 |
blackbox_exporter |
mbd_qm_bma_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 |
blackbox_exporter |
mbd_h_bm_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 |
blackbox_exporter |
mbd_h_bmur1_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 |
blackbox_exporter |
mbd_h_bmur1_sw_availability | Метрика доступности программного обеспечения Базового модуля управления и распределения | ((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 |
systemd_exporter |
mbd_h_mvh_d1_hw_availability | Метрика доступности оборудования Модуля вычисления и хранения D | 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 |
mbd_h_mvh_d1_sw_availability | Метрика доступности программного обеспечения Модуля вычисления и хранения D | sum(systemd_unit_state{name="hadoop-hdfs-datanode.service", state="active", _module_id="X", _pak_id="X"}) by (_pak_id, _module_id) > bool 0 |
systemd_exporter |
mbd_h_mvh_t1_hw_availability | Метрика доступности оборудования Модуля вычисления и хранения T | 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 |
mbd_h_mvh_t1_sw_availability | Метрика доступности программного обеспечения Модуля вычисления и хранения T | sum(systemd_unit_state{name="hadoop-hdfs-datanode.service", state="active", _module_id="X", _pak_id="X"}) by (_pak_id, _module_id) > bool 0 |
systemd_exporter |
mbd_h_mgf1_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 |
blackbox_exporter |
mbd_h_mgf1_sw_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 |
blackbox_exporter |
mbd_h_mkvh1_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 |
blackbox_exporter |
mbd_h_mkvh1_sw_availability | Метрика доступности программного обеспечения Модуля коммутации, вычисления и хранения | sum(systemd_unit_state{name="hadoop-hdfs-datanode.service", state="active", _module_id="X", _pak_id="X"}) by (_pak_id, _module_id) > bool 0 |
systemd_exporter |
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 |
blackbox_exporter |
Метрики агрегируются из уже готовых метрик. Для сбора метрики на узлах нужно развернуть экспортеры, представленные в столбце “Способ получения”, кроме blackbox_exporter - его достаточно один раз развернуть на Визион.Proxy.
При заведении метрик стоит учитывать:
- метки
- количество узлов в модуле
Метки уже прописаны - вместо Х нужно будет подставить значение из объектной модели. Прописать имя модуля и имя ПАК, к которому будет относиться метрика, или IP-адрес узла, который проверяется с помощью метрики probe_success (доступность hardware).
Так как количество узлов может отличаться, не стоит относиться к количеству метрик внутри запроса для агрегации метрики доступности как к фиксированному значению - можно скопировать часть запроса и продублировать его для ещё одного узла. Например:
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)
Такая гибкость позволяет учитывать изменения в конфигурации ПАК.
Метрики следует завести в разделе “Метрики” UI Визиона - они автоматически получат префикс usr_
.
Если агрегирующих метрик меньше, чем тех, что перечислены в 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)
Пример пользовательской промежуточной метрики:
3. Конфигурация плагинов для корректного мониторинга#
blackbox_exporter - в таргетах следует указать адреса узлов, которые следует мониторить:
process_exporter - в конфигурации плагина следует указать:
process_names:
- name: "postgres"
comm:
- "postgres"
Для clickhouse_sql_exporter и greenplum_sql_exporter- заполнить поле таргетов и выбрать соответствующий коллектор.