Плагин устанавливает экспортер и создаёт задачу сбора метрик с него компонентом vmagent_agent.
Правила создания выражений#
Самая важная настройка bash_exporter — выражение в формате YAML, определяющее способы сбора метрик.
Общий вид выражения:
---
labels:
<label_1_name>: "<bash_command_1>"
<label_2_name>: "<bash_command_2>"
# ...
<label_N_name>: "<bash_command_N>"
static_labels:
<static_label_1_name>: "<constant_value_1>"
<static_label_2_name>: "<constant_value_2>"
# ...
<static_label_M_name>: "<constant_value_M>"
series:
value: 1
labels:
# ...
static_labels:
# ...
Здесь:
-
labelsСловарь меток для всех временных рядов.
В качестве ключа используйте название метки, а в качестве значения — Bash-выражение. Результаты его выполнения станут значением метки временного ряда.
-
seriesВАЖНО Обязательный параметр. Список временных рядов, создаваемых для метрики. Элементы списка могут содержать следующие поля:
-
labelsСловарь меток для этого временного ряда.
В качестве ключа используйте название метки, а в качестве значения — Bash-выражение. Результаты его выполнения станут значением метки временного ряда.
-
static_labelsСловарь меток для этого временного ряда.
В качестве ключа используйте название метки. Значением будет метка временного ряда.
-
static_valueВАЖНО Обязательный параметр, если не заполнено поле value.Целое число, задающее константное значение временного ряда.
-
valueВАЖНО Обязательный параметр, если не заполнено поле static_value.Bash-выражение, возвращающее число, которое становится значением временного ряда.
-
-
static_labelsСловарь меток для всех временных рядов.
В качестве ключа используйте название метки. Значением будет метка временного ряда.
Пример создания выражения#
Пусть необходимо создать выражение, которое сохраняет в метку username название учётной записи пользователя, от имени которого выполняется Bash-скрипт.
В этом случае необходимо:
-
В блок
labelsдобавить метку и команду Bash:labels: username: whoami -
Заполнить блок
series, так как это обязательный параметр.-
В самом простом случае можно использовать выражение
echo 1, оно всегда возвращает единицу:labels: username: whoami series: value: "echo 1" -
В более сложном случае можно записать в значение серии идентификатор пользователя:
labels: username: whoami series: value: "id $(whoami) --user"
-
Настройка sudoers#
При установке на узел plagent автоматически создаётся служебная учётная запись vision_bash_exporter с ограниченными привилегиями. От её имени плагин bash_exporter выполняет необходимые команды.
Настройки sudo для пользователя vision_bash_exporter указывайте в конфигурационном файле /etc/sudoers.d/vision_bash_exporter. Заполните его по образцу:
Cmnd_Alias <CMD_1> = <cmd1_list>
Cmnd_Alias <CMD_2> = <cmd2_list>
# ...
Cmnd_Alias <CMD_N> = <cmdN_list>
vision_bash_exporter ALL=(root) NOPASSWD: <CMD_1>, <CMD_2>, ..., <CMD_N>
Здесь:
-
<CMD>– название группы команд.Как правило, записывается большими буквами.
-
Допускается использование букв латинского алфавита, цифр и знаков подчёркивания.
-
Не может начинаться с цифры.
-
-
<cmd_list>– список команд, входящих в группу.Команда состоит из краткого или полного пути к исполняемому файлу и перечня аргументов.
Чтобы разрешить запуск исполняемого файла с любыми аргументами, вместо их перечня укажите символ
*.В качестве разделителя команд используйте запятую.
При заполнении файла придерживайтесь следующих правил:
-
Вносите изменения только в файл
/etc/sudoers.d/vision_bash_exporter.ПРЕДУПРЕЖДЕНИЕ Не изменяйте файл /etc/sudoers! Его содержимое может быть перезаписано при обновлении ОС. Не изменяйте файлы/etc/sudoers.d/visionи/etc/sudoers.d/plagent! Их содержимое будет перезаписано при обновлении Визион. -
Для внесения изменений используйте утилиту
visudo:visudo vision-bash-exporterОна автоматически проверяет синтаксис файла на корректность и при обнаружении ошибок выводит предупреждение.
-
Предоставляйте пользователю только минимально необходимые привилегии.
-
Не разрешайте выполнение команды
shellот имени пользователяroot. -
Используйте абсолютные пути к исполняемым файлам.
Пример заполнения vision_bash_exporter#
Рассмотрим пример заполнения файла /etc/sudoers.d/vision_bash_exporter:
Cmnd_Alias CMD_SHADOW_HASH = /bin/sh -c "/usr/bin/sha256sum /etc/shadow | /usr/bin/awk '{print $1}'"
Cmnd_Alias CMD_NGINX_STATUS = /usr/bin/systemctl is-active nginx
Cmnd_Alias CMD_DISK_AVAIL = /bin/bash -c "/bin/df --output=avail / | /bin/tail -n 1"
vision_bash_exporter ALL=(root) NOPASSWD: CMD_NGINX_STATUS, CMD_DISK_AVAIL, CMD_SHADOW_HASH
Первые три строки связывают псевдонимы CMD_SHADOW_HASH, CMD_NGINX_STATUS и CMD_DISK_AVAIL с соответствующими выражениями Bash.
В последней строке пользователю vision_bash_exporter выдаются привилегии, позволяющие выполнять указанные команды от имени пользователя root без ввода пароля.
Настройка плагина#
Чтобы плагин собирал необходимые метрики, выполняйте его настройку в следующем порядке:
-
Авторизуйтесь в Визион.
-
В главном меню выберите Объекты.
-
На панели Контур выберите нужный ПАК.
-
Выберите вкладку Плагины и убедитесь, что плагин
bash_exporterнаходится в статусе УСТАНОВЛЕН. -
На панели навигации выберите Настройки → Метрики.
-
Нажмите кнопку Добавить.
-
Заполните форму Добавление метрики:
-
Тип метрики: Bash скрипт.
-
Имя: произвольное название метрики.
-
Допускается использование букв латинского алфавита, цифр и знаков подчёркивания.
-
Длина не менее 5 знаков.
-
Имя метрики должно быть уникальным.
-
-
Детальное описание: необязательное описание метрики.
-
Тип объекта: список типов объектов, с которых будет собираться метрика.
-
Выражение: структура в формате YAML, описывающая правило создания временных рядов.
-
Узлы: список узлов, с которых будет собираться метрика.
-
-
Нажмите кнопку Добавить.