mamonsu

mamonsu — агент мониторинга для сбора метрик операционной системы и Postgres Pro.

Синтаксис

mamonsu agent [действие_агента]

mamonsu bootstrap -M пользователь_mamonsu -d база_mamonsu [параметры_подключения]

mamonsu export {template | config} имя_файла [параметры_экспорта]

mamonsu report [параметры_отчёта]

mamonsu tune [параметры_оптимизации]

mamonsu upload [параметры_передачи]

mamonsu zabbix {template | host | hostgroup} действие_сервера

mamonsu zabbix item {error | lastvalue | lastclock} ид_узла

mamonsu --version

mamonsu --help

Описание

Приложение mamonsu представляет собой агент мониторинга, собирающий метрики Postgres Pro и системы, которые можно визуализировать на сервере Zabbix. В отличие от стандартного Zabbix Agent, который тоже можно настроить для сбора метрик Postgres Pro, mamonsu использует одно подключение к базе данных, что позволяет минимизировать влияние на целевую систему.

Агент mamonsu включает следующие компоненты:

  • Руководящий процесс, наблюдающий за активностью системы и базы данных.

  • Модули, определяющие, какие метрики Postgres Pro и системы будут собираться.

  • Файлы конфигурации и шаблона, в которых определяется, какие модули будут использоваться и как будут представляться собранные данные.

mamonsu является активным агентом, что означает, что он передаёт серверу Zabbix данные сразу, по мере их сбора. В mamonsu имеется набор готовых метрик для мониторинга Postgres Pro и системы, но вы можете разработать и дополнительные модули для сбора других интересующих вас метрик.

В mamonsu также реализован интерфейс командной строки для управления некоторыми параметрами сервера Zabbix, для получения общего представления о конфигурации целевой системы, а также для оптимизации параметров Postgres Pro и системы «на лету». Список всех команд mamonsu приведён в Разделе «Справка по командной строке».

Установка и подготовка

Для использования mamonsu вы должны создать учётную запись Zabbix и настроить сервер Zabbix, как описано в документации Zabbix. Естественно, если вы планируете наблюдать за метриками Postgres Pro, у вас должен работать экземпляр Postgres Pro. Если вам нужны инструкции по установке и настройке кластера Postgres Pro, обратитесь к Главе 17 и Разделу 18.2.

Примечание

Тогда как метрики Postgres Pro mamonsu может собирать с удалённого кластера, метрики системы собираются только локально. Поэтому если вы решите собирать метрики удалённого экземпляра Postgres Pro, во избежание путаницы обязательно отключите системные метрики, иначе оба набора будут представлены в Zabbix как метрики одного узла.

Предварительно собранный пакет mamonsu распространяется в составе Postgres Pro Enterprise, но устанавливается отдельным инсталлятором. Завершив установку mamonsu, выполните следующие действия, чтобы начать сбор метрик:

  1. По желанию произведите специальную подготовку mamonsu

    Если вы опустите этот этап, метрики можно будет собирать только с правами суперпользователя, что не рекомендуется.

    1. Создайте непривилегированного пользователя базы данных для mamonsu. Например:

      CREATE USER mamonsu_user WITH PASSWORD 'mamonsu_password';
    2. Создайте базу данных, которая будет применяться для установления подключения к Postgres Pro. Например:

      CREATE DATABASE mamonsu_database OWNER mamonsu_user;
    3. Выполните следующую команду для подготовки mamonsu:

      mamonsu bootstrap -M mamonsu_user [параметры_подключения]

      Здесь параметры_подключения могут содержать аргументы --host, --port, --dbname, --username и --password. В этих аргументах задаются параметры подключения к кластеру Postgres Pro, за которым вы намерены наблюдать. В аргументе --dbname следует указать имя базы (например, mamonsu_database), созданной для целей мониторинга. Заметьте, что в аргументе --username необходимо передать имя суперпользователя в данном кластере.

      Если параметры соединения не задаются явно, mamonsu пытается получить их значения из соответствующих переменных окружения. По умолчанию, то есть когда никакие значения не заданы, mamonsu пытается подключиться к базе postgres локального сервера через порт 5432 с именем пользователя postgres. Если для подключения к вашему кластеру Postgres Pro нужно использовать другие параметры подключения, их необходимо задать явно.

    В результате этой операции в базе данных mamonsu_database создаются функции мониторинга, а пользователю mamonsu_user даются права для их использования. Таким образом, для последующих подключений суперпользователь не требуется. Также в этой базе данных создаётся несколько таблиц с префиксом mamonsu. Не удаляйте эти таблицы, так как они необходимы для работы mamonsu.

  2. Настройте mamonsu

    Отредактируйте конфигурационный файл agent.conf, по умолчанию размещённый в каталоге /etc/mamonsu/>.

    • Настройте параметры, связанные с Zabbix. Значение address должно указывать на работающий сервер Zabbix, а в поле client должно задаваться имя узла Zabbix. Узлы, доступные для вашей учётной записи Zabbix, вы можете увидеть в его веб-интерфейсе на странице Configuration (Настройка) > Hosts (Узлы сети).

      [zabbix]
      ; включён по умолчанию
      enabled = True
      client = имя_узла_zabbix
      address = сервер_zabbix
    • По умолчанию mamonsu будет собирать и метрики Postgres Pro, и системные метрики. При необходимости вы можете запретить сбор метрик первого или второго типа, установив в файле agent.conf для параметра enabled значение False в разделе [postgres] или [system], соответственно.

      [system]
      ; включён по умолчанию
      enabled = True

      Примечание

      Тогда как метрики Postgres Pro mamonsu может собирать с удалённого кластера, метрики системы собираются только локально. Поэтому если вы решите собирать метрики удалённого экземпляра Postgres Pro, во избежание путаницы обязательно отключите системные метрики, иначе оба набора будут представлены в Zabbix как метрики одного узла.

    • Если вы будете собирать метрики Postgres Pro, необходимо задать параметры подключения к кластеру Postgres Pro, за которым вы намерены наблюдать. Для этого задайте в полях user, password и database соответственно имя пользователя (mamonsu_user), пароль (mamonsu_password) и базу данных (mamonsu_database), указанные при подготовке. Если вы пропустили подготовительную процедуру, задайте имя и пароль суперпользователя, а также целевую базу.

      [postgres]
      ; включён по умолчанию
      enabled = True
      user = пользователь_mamonsu
      database = база_mamonsu
      password = пароль_mamonsu
      port = 5432

    Это базовые параметры, позволяющие начать использование mamonsu. Кроме них можно настроить и другие параметры mamonsu, описанные в Разделе «Параметры конфигурации».

  3. Настройте представление метрик на сервере Zabbix

    1. Создайте шаблон, определяющий, как будут представляться собранные метрики на сервере Zabbix:

      mamonsu export template template.xml

      mamonsu формирует файл шаблона template.xml в текущем каталоге. По умолчанию отображаемым в Zabbix именем шаблона будет PostgresPro-OS, где OS — название вашей операционной системы. Чтобы получить шаблон с другим отображаемым именем, в показанную выше команду можно добавить аргумент --template-name.

    2. При желании укажите учётные данные в Zabbix в следующих переменных окружения в той системе, где настраивается мониторинг:

      • Задайте в переменных ZABBIX_USER и ZABBIX_PASSWD имя и пароль вашей учётной записи Zabbix, соответственно.

      • Задайте в переменной ZABBIX_URL адрес http://zabbix/

      Если этого не сделать, вам нужно будет указывать следующие параметры при каждом вызове любой подкоманды mamonsu zabbix:

      --url=http://zabbix/ --user=имя_пользователя_zabbix --password=пароль_пользователя_zabbix
    3. Загрузите шаблон template.xml на сервер Zabbix.

      mamonsu zabbix template export template.xml

      Шаблон также можно загрузить через веб-интерфейс Zabbix: воспользуйтесь своей учётной записью в Zabbix и перейдите на страницу Templates (Шаблоны) > Import (Импорт).

    4. Привяжите полученный шаблон к узлу, за которым будете наблюдать.

      Для этого в веб-интерфейсе Zabbix выберите нужный узел, перейдите на страницу Templates (Шаблоны) > Add (Добавить), выберите шаблон и затем щёлкните Update (Обновить).

      Подсказка

      Если вы хотите связать шаблон с создаваемым узлом в Zabbix, вы можете сделать это в командной строке, используя команды mamonsu zabbix. Подробнее это описывается в Подразделе «Управление параметрами сервера Zabbix в командной строке».

Завершив настройку, запустите mamonsu. Например, в системах Linux вы можете запустить mamonsu в виде службы так:

service mamonsu start

mamonsu считывает все параметры из файла конфигурации mamonsu и начинает мониторинг системы.

Справка по командной строке

agent

Синтаксис:

mamonsu agent { metric-list | metric-get имя_метрики | version }

Предоставляет информацию о собираемых метриках из командной строки. Вы можете задать одно из следующих действий:

metric-list

Вывести список метрик, которые собирает mamonsu. Вывод этой команды включает ключ метрики, её последнее значение и время получения этого значения.

metric-get имя_метрики

Получить последнее значение указанной метрики. Список доступных метрик можно получить с помощью команды metric-list.

version

Вывести версию mamonsu.

bootstrap

Синтаксис:

mamonsu bootstrap -M пользователь_mamonsu [параметры_подключения]

Подготовить mamonsu к работе. В аргументе -M должен указываться непривилегированный пользователь, который будет владеть всеми процессами mamonsu.

Здесь параметры_подключения могут содержать аргументы --host, --port, --dbname, --username и --password. В этих аргументах задаются параметры подключения к кластеру Postgres Pro, за которым вы будете наблюдать. Заметьте, что в аргументе --username необходимо передать имя суперпользователя в данном кластере.

Если параметры соединения не задаются явно, mamonsu пытается получить их значения из соответствующих переменных окружения. По умолчанию, то есть когда никакие значения не заданы, mamonsu пытается подключиться к базе postgres локального сервера через порт 5432 с именем пользователя postgres. Если для подключения к вашему кластеру Postgres Pro нужно использовать другие параметры подключения, их необходимо задать явно.

export

Синтаксис:

mamonsu export config имя_файла.conf  [--add-plugins=каталог_модулей]
mamonsu export template имя_файла.xml [--add-plugins=каталог_модулей]
                                     [--template-name=имя_шаблона]
                                     [--application=имя_приложения]
                                     [--old-zabbix]

Сгенерировать файл конфигурации или файл шаблона для набора метрик. Для настройки набора метрик можно передать дополнительные параметры:

--add-plugins=каталог_модулей

Собирать метрики, определённые в дополнительных модулях, расположенных в заданном каталоге_модулей. Если вы будете использовать какие-либо дополнительные модули, этот параметр нужно передавать при формировании файла конфигурации и шаблона.

--template-name=имя_шаблона

Задаёт название шаблона, которое будет отображаться на сервере Zabbix.

Значение по умолчанию: PostgresPro-OS, где OS — название вашей операционной системы

--application=имя_приложения

Задаёт идентификатор, с которым собранные метрики будут отображаться на сервере Zabbix.

Значение по умолчанию: App-PostgresPro-OS, где OS — название вашей операционной системы

--old-zabbix

Экспортировать шаблон для сервера Zabbix версии 4.2 или старее. По умолчанию шаблон генерируется в формате, совместимом с Zabbix 4.4 и новее.

export zabbix-parameters

Синтаксис:

mamonsu export zabbix-parameters имя_файла.conf [--add-plugins=каталог_модулей]
                                     [--plugin-type={pg | sys | all}]
                                     [--pg-version=версия]
                                     [--config=файл_конфигурации]

Экспортировать конфигурацию метрик для использования со стандартным агентом Zabbix. Для настройки сбора метрик можно передать дополнительные параметры:

--add-plugins=каталог_модулей

Собирать метрики, определённые в дополнительных модулях, расположенных в заданном каталоге_модулей. Если вы будете использовать какие-либо дополнительные модули, этот параметр нужно передавать при формировании файла конфигурации и шаблона.

--plugin-type={pg | sys | all}

Типы метрик, которые должны собираться:

  • pg — метрики Postgres Pro.

  • sys — системные метрики.

  • all — все метрики.

По умолчанию: all

--pg-version=версия

Задаёт основную версию сервера, для которого будет настраиваться набор метрик. Программа mamonsu может собирать метрики во всех поддерживаемых версиях Postgres Pro, а также в PostgreSQL, начиная с версии 9.5.

Значение по умолчанию: 10

--config=файл_конфигурации

Задаёт путь к файлу agent.conf, который будет источником определений метрик.

Значение по умолчанию: /etc/mamonsu/agent.conf

export zabbix-template

Синтаксис:

mamonsu export zabbix-template имя_файла.conf [--add-plugins=каталог_модулей]
                                     [--plugin-type={pg | sys | all}]
                                     [--template-name=имя_шаблона]
                                     [--application=имя_приложения]
                                     [--config=файл_конфигурации]
                                     [--old-zabbix]

Экспортировать шаблон для использования со стандартным агентом Zabbix. Для настройки конфигурации можно передать дополнительные параметры:

--add-plugins=каталог_модулей

Собирать метрики, определённые в дополнительных модулях, расположенных в заданном каталоге_модулей. Если вы будете использовать какие-либо дополнительные модули, этот параметр нужно передавать при формировании файла конфигурации и шаблона.

--plugin-type={pg | sys | all}

Типы метрик, которые должны собираться:

  • pg — метрики Postgres Pro.

  • sys — системные метрики.

  • all — все метрики.

По умолчанию: all

--template-name=имя_шаблона

Задаёт название шаблона, которое будет отображаться на сервере Zabbix.

Значение по умолчанию: PostgresPro-OS, где OS — название вашей операционной системы

--application=имя_приложения

Задаёт идентификатор, с которым собранные метрики будут отображаться на сервере Zabbix.

Значение по умолчанию: App-PostgresPro-OS, где OS — название вашей операционной системы

--config=файл_конфигурации

Задаёт путь к файлу agent.conf, который будет источником определений метрик.

Значение по умолчанию: /etc/mamonsu/agent.conf

--old-zabbix

Экспортировать шаблон для сервера Zabbix версии 4.2 или старее. По умолчанию шаблон генерируется в формате, совместимом с Zabbix 4.4 и новее.

report

Синтаксис:

mamonsu report [--run-system=логическое_значение] [--run-postgres=логическое_значение]
               [--print-report=логическое_значение] [--report-path=файл_отчёта]
               [--disable-sudo] [параметры_подключения]

Вывести подробную информацию об оборудовании, операционной системе, использованию памяти и других характеристиках объекта мониторинга, а также конфигурацию Postgres Pro. Настроить отчёт позволяют следующие дополнительные параметры:

--run-system=логическое_значение

Включить в генерируемый отчёт информацию о системе.

По умолчанию: True (вкл.)

--run-postgres=логическое_значение

Включить в генерируемый отчёт информацию о Postgres Pro.

По умолчанию: True (вкл.)

--print-report=логическое_значение

Вывести отчёт в stdout.

По умолчанию: True (вкл.)

--report-path=файл_отчёта

Вывести отчёт в указанный файл.

Путь по умолчанию: /tmp/report.txt

--disable-sudo

Собирать при формировании отчёта только те данные, для получения которых не нужны права суперпользователя. Этот режим поддерживается только в системах Linux.

параметры_подключения

Задать параметры подключения для кластера Postgres Pro, за которым вы будете наблюдать. Здесь параметры_подключения могут содержать аргументы --host, --port, --dbname, --username и --password. Заметьте, что в аргументе --username необходимо передать имя суперпользователя в данном кластере.

Если параметры соединения не задаются явно, mamonsu пытается получить их значения из соответствующих переменных окружения. По умолчанию, то есть когда никакие значения не заданы, mamonsu пытается подключиться к базе postgres локального сервера через порт 5432 с именем пользователя postgres. Если для подключения к вашему кластеру Postgres Pro нужно использовать другие параметры подключения, их необходимо задать явно.

tune

Синтаксис:

mamonsu tune [--dry-run] [--disable-sudo] [--log-level {INFO|DEBUG|WARN}]
             [--dont-tune-pgbadger] [--dont-reload-postgresql]

Оптимизировать конфигурацию Postgres Pro и системы, исходя из собранной статистики. Настроить оптимизацию позволяют следующие параметры:

--dry-run

Вывести параметры конфигурации системы и Postgres Pro, которые будут настроены, но не изменять их фактически.

--disable-sudo

Оптимизировать только те параметры, для изменения которых не нужны права суперпользователя. Этот режим поддерживается только в системах Linux.

--dont-tune-pgbadger

Не оптимизировать параметры pgbadger.

--log-level { INFO | DEBUG | WARN}

Изменить уровень детализации сообщений.

Значение по умолчанию: INFO

--dont-reload-postgresql

Не допустить выполнения приложением mamonsu функции pg_reload_conf(). В этом случае изменения некоторых параметров, которые вступают в силу только после перезагрузки конфигурации Postgres Pro, не начнут действовать немедленно.

upload

Синтаксис:

mamonsu upload [--zabbix-file=файл_метрик]
               [--zabbix-address=адрес_zabbix] [--zabbix-port=порт] 
               [--zabbix-client=имя_узла_zabbix] [--zabbix-log-level={INFO|DEBUG|WARN}]

Передать данные метрик, ранее сохранённые в файле, на сервер Zabbix для визуализации. Более подробно получение файла метрик рассматривается в Подразделе «Параметры вывода».

Эта команда может принимать следующие параметры:

--zabbix-address=адрес_zabbix

Адрес сервера Zabbix.

Значение по умолчанию: localhost

--zabbix-port=порт

Порт сервера Zabbix.

Значение по умолчанию: 10051

--zabbix-file=файл_метрик

Имя текстового файла с метриками, которые можно визуализировать, например localhost.log.

--zabbix-client=имя_узла_zabbix

Имя узла в Zabbix.

Значение по умолчанию: localhost

--zabbix-log-level={INFO|DEBUG|WARN}

Изменить уровень детализации сообщений.

Значение по умолчанию: INFO

zabbix item

Синтаксис:

mamonsu zabbix item {error | lastvalue | lastclock } имя_узла

Просмотреть заданное свойство последних метрик, полученных сервером Zabbix для указанного узла.

zabbix host

Синтаксис:

mamonsu zabbix host list
mamonsu zabbix host show имя_узла
mamonsu zabbix host id имя_узла
mamonsu zabbix host delete ид_узла
mamonsu zabbix host create имя_узла ид_группы_узлов ид_шаблона адрес_mamonsu
mamonsu zabbix host info {templates | hostgroups | graphs | items} ид_узла

Позволяет управлять узлами Zabbix, выполняя одно из действий, описанных в Подразделе «Управление сервером Zabbix».

zabbix hostgroup

Синтаксис:

mamonsu zabbix hostgroup list
mamonsu zabbix hostgroup show имя_группы_узлов
mamonsu zabbix hostgroup id имя_группы_узлов
mamonsu zabbix hostgroup delete ид_группы_узлов
mamonsu zabbix hostgroup create имя_группы_узлов

Позволяет управлять группами узлов Zabbix, выполняя одно из действий, описанных в Подразделе «Управление сервером Zabbix».

zabbix template

Синтаксис:

mamonsu zabbix template list
mamonsu zabbix template show имя_шаблона
mamonsu zabbix template id имя_шаблона
mamonsu zabbix template delete ид_шаблона
mamonsu zabbix template export файл

Позволяет управлять шаблонами Zabbix, выполняя одно из действий, описанных в Подразделе «Управление сервером Zabbix».

--version

Синтаксис:

mamonsu --version

Вывести версию mamonsu.

--help

Синтаксис:

mamonsu --help

Вывести справку по параметрам командной строки mamonsu.

Управление сервером Zabbix

Используя mamonsu, вы можете управлять некоторой функциональностью Zabbix из командной строки. А именно, вы можете создавать или удалять узлы и группы узлов Zabbix, а также генерировать, импортировать и удалять шаблоны Zabbix с помощью описанных ниже команд. В них имя_объекта должно соответствовать типу объекта Zabbix в команде: template (шаблон), host (узел) или hostgroup (группа узлов).

list

Вывести список доступных шаблонов, узлов или групп узлов.

show имя_объекта

Вывести информацию об указанном шаблоне, узле или группе узлов.

id имя_объекта

Показать идентификатор заданного объекта, назначаемый автоматически сервером Zabbix.

delete ид_объекта

Удалить объект с заданным идентификатором.

create имя_группы_узлов
create имя_узла ид_группы_узлов ид_шаблона адрес_mamonsu

Создать новый узел или группу узлов.

export имя_шаблона

Сформировать шаблон Zabbix.

info {templates | hostgroups | graphs | items} ид_узла

Вывести подробную информацию о шаблонах, группах узлов, графиках и метриках, связанных с узлом с заданным идентификатором.

Параметры конфигурации

Файл конфигурации agent.conf по умолчанию располагается в каталоге /etc/mamonsu. Он содержит несколько групп параметров, определяющих, какие метрики собирать и как выводить собранные данные:

Все параметры должны задаваться в формате параметр = значение.

Параметры подключения

[postgres]

В разделе [postgres] настраивается сбор метрик Postgres Pro и могут содержаться следующие параметры:

enabled

Включает/отключает сбор метрик Postgres Pro при значении, равном True или False, соответственно.

По умолчанию: True (вкл.)

user

Пользователь, от имени которого будут запускаться процессы наблюдения за кластером. Это должен быть пользователь, которого вы указали в ключе -M команды bootstrap, либо суперпользователь, если вы пропустили подготовительную процедуру.

Имя по умолчанию: postgres

password

Пароль указанного пользователя.

database

База данных, через подключение к которой будут собираться метрики.

Имя по умолчанию: postgres

host

Адрес сервера базы данных.

Значение по умолчанию: localhost

port

Целевой порт на сервере.

Значение по умолчанию: 5432

application_name

Имя приложения, идентифицирующее процесс mamonsu, выполняющийся в кластере Postgres Pro.

Значение по умолчанию: mamonsu

query_timeout

Значение statement_timeout для сеанса mamonsu, в секундах. Если запрос метрики Postgres Pro не успевает выполниться за указанное время, он прерывается.

Значение по умолчанию: 10

[system]

В разделе [system] настраивается сбор системных метрик и могут содержаться следующие параметры:

enabled

Включает/отключает сбор системных метрик при значении, равном True или False, соответственно.

По умолчанию: True (вкл.)

[zabbix]

В разделе [zabbix] настраиваются свойства подключения к серверу Zabbix и могут содержаться следующие параметры:

enabled

Включает/отключает передачу собранных метрик на сервер Zabbix при значении, равном True или False, соответственно.

По умолчанию: True (вкл.)

client

Имя узла в Zabbix.

address

Адрес сервера Zabbix.

Значение по умолчанию: 127.0.0.1

port

Порт сервера Zabbix.

Значение по умолчанию: 10051

[agent]

В разделе [agent] задаётся расположение службы mamonsu и включается возможность обращения к метрикам в командной строке:

enabled

Включает/отключает сбор метрик в командной строке с помощью команды agent.

По умолчанию: True (вкл.)

host

Адрес системы, в которой работает mamonsu.

Значение по умолчанию: 127.0.0.1

port

Порт, через который mamonsu принимает соединения.

Значение по умолчанию: 10052

[sender]

В разделе [sender] определяется размер очереди, в которой накапливаются данные, прежде чем они передаются серверу Zabbix:

queue

Максимальное количество собранных значений метрик, которое может накапливаться локально, прежде чем mamonsu передаст их на сервер Zabbix. После передачи накопленных данных очередь очищается.

Значение по умолчанию: 2048

Параметры вывода

[metric_log]

В разделе [metric_log] настраивается сохранение собранных значений метрик в локальных текстовых файлах. Этот раздел может содержать следующие параметры:

enabled

Включает/отключает сохранение собранных значений метрик в текстовом файле. Если этот параметр равен True, mamonsu создаёт файл localhost.log для сохранения значений метрик.

Значение по умолчанию: False

directory

Указывает каталог, в котором будут сохранятся данные метрик.

Каталог по умолчанию: /var/log/mamonsu

max_size_mb

Максимальный размер файла метрик, в мегабайтах. По достижении заданного размера этот файл переименовывается в localhost.log.archive, и создаётся новый файл localhost.log.

Значение по умолчанию: 1024

[log]

В разделе [log] настраивается запись сообщений в журнал mamonsu и могут содержаться следующие параметры:

file

Задаёт имя файла журнала; может также задавать полный путь.

level

Задаёт уровень отладки. Этот параметр может принимать значение DEBUG, ERROR или INFO.

Значение по умолчанию: INFO

format

Формат записываемых сообщений.

Значение по умолчанию: [%(asctime)s] %(asctime)s - %(name)s - %(message)s

Здесь levelname — уровень важности сообщения, asctime — текущее время, name — имя модуля, выдавшего это сообщение (либо root, если сообщение выдано не модулем), и message — собственно текст сообщения.

Параметры модулей

[plugins]

В разделе [plugins] описываются дополнительные модули, осуществляющие сбор метрик, и могут содержаться следующие параметры:

enabled

Включает/отключает дополнительные модули, осуществляющие сбор метрик, при значении равном True или False, соответственно.

Значение по умолчанию: False

directory

Задаёт каталог, содержащий дополнительные модули. При значении, равном None, использование дополнительных модулей отключается.

Значение по умолчанию: /etc/mamonsu/plugins

Если вы хотите настроить модуль, который вы дополнительно добавили в mamonsu после установки, для него нужно добавить раздел параметров в файл agent.conf.

Синтаксис, которому должен соответствовать этот раздел, показан в примере в Подразделе «Разделы отдельных модулей».

Разделы отдельных модулей

Все встроенные модули устанавливаются в составе mamonsu. Чтобы настроить такой модуль, найдите соответствующий ему раздел под заголовком Individual Plugin Sections (Разделы отдельных модулей) и измените значения параметров.

Чтобы отключить какой-либо модуль, присвойте его параметру enabled значение False, а чтобы включить — значение True. Эти значения задаются с учётом регистра.

В следующем примере показаны разделы, соответствующие встроенным модулям preparedtransaction и pgprobackup:

[preparedtransaction]
max_prepared_transaction_time = 60
interval = 60

[pgprobackup]
enabled = false
interval = 300
backup_dirs = /backup_dir1,/backup_dir2
pg_probackup_path = /usr/bin/pg_probackup-11

[preparedtransaction]

Этот модуль получает возраст старейшей подготовленной транзакции в секундах, а также число всех транзакций, подготовленных для двухфазной фиксации. За дополнительными сведениями обратитесь к PREPARE TRANSACTION и Разделу 50.69.

Параметр max_prepared_transaction_time задаёт в секундах пороговое значения для возраста подготовленной транзакции.

Параметр interval позволяет изменить интервал сбора метрик.

Данный модуль собирает две метрики: pgsql.prepared.count (число подготовленных транзакций) и pgsql.prepared.oldest (возраст старейшей подготовленной транзакции в секундах).

Если значение pgsql.prepared.oldest превышает порог, заданный параметром max_prepared_transaction_time, срабатывает триггер со следующим сообщением: "PostgreSQL prepared transaction is too old on {host}" (Слишком старая подготовленная транзакция PostgreSQL на {узел}).

[pgprobackup]

Этот модуль обращается к программе pg_probackup для отслеживания состояния её резервных копий, а также вычисляет объём каталогов, в которых хранятся все файлы копий.

Заметьте, что этот модуль подсчитывает общий объём всех файлов в целевом каталоге. Убедитесь в том, что в целевой каталог не попадают посторонние файлы.

Параметр backup_dirs задаёт разделённый запятыми список путей к каталогам, для которых будут собираться метрики.

Параметр pg_probackup_path задаёт путь к программе pg_probackup.

Параметр interval позволяет изменить интервал сбора метрик.

По умолчанию этот модуль отключён. Чтобы включить его, задайте для параметра enabled значение True.

Данный модуль собирает две метрики: pg_probackup.dir.size[#каталог_копий] (объём целевого каталога) и pg_probackup.dir.error[#каталог_копий] (ошибки копий) для каждого указанного каталога_копий.

Если какая-либо копия имеет ошибочное состояние, например ERROR, CORRUPT, ORPHAN, этот модуль вызывает срабатывание триггера.

Использование

Сбор и просмотр метрик

Сразу после запуска mamonsu начинает сбор метрик системы и Postgres Pro. Команда agent позволяет в реальном времени получать текущие значения собираемых метрик в командной строке.

Чтобы просмотреть список имеющихся метрик, воспользуйтесь командой agent metric-list:

mamonsu agent metric-list

Вывод этой команды включает ключ метрики, её последнее значение и время получения этого значения. Например:

system.memory[active]      7921004544    1564570818
system.memory[swap_cache]      868352    1564570818
pgsql.connections[idle]           6.0    1564570818
pgsql.archive_command[failed_trying_to_archive]    0    1564570818

Чтобы просмотреть текущее значение определённой метрики, воспользуйтесь командой agent metric-get:

mamonsu agent metric-get имя_метрики

Здесь имя_метрики — ключ интересующей вас метрики, представленный в выводе команды metric-list. Например: pgsql.connections[idle].

Вы можете просмотреть графики собранных метрик в веб-интерфейсе Zabbix в разделе Graphs (Графики). Подробнее об использовании Zabbix рассказывается в его официальной документации по адресу https://www.zabbix.com/documentation/current/ru/.

Если вы решили сохранять все собираемые метрики в файле как описано в «Параметры вывода», собранные метрики можно передать на сервер Zabbix для визуализации, воспользовавшись командой upload.

Добавление дополнительных модулей

Вы можете расширить функциональность mamonsu, добавив собственные дополнительные модули следующим образом:

  1. Сохраните все нужные вам дополнительные модули в одном каталоге, например, в /etc/mamonsu/plugins.

  2. Убедитесь в том, что этот каталог указан в файле конфигурации в разделе [plugins]:

    [plugins]
    directory = /etc/mamonsu/plugins
  3. Сгенерируйте новый шаблон Zabbix, включающий информацию дополнительных модулей:

    mamonsu export template template.xml --add-plugins=/etc/mamonsu/plugins
  4. Загрузите сгенерированный template.xml на сервер Zabbix, как описано в Разделе «Установка и подготовка».

Оптимизация конфигурации Postgres Pro и системы

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

Вы можете получить подробную информацию об оборудовании, операционной системе, использовании памяти и других характеристиках объекта мониторинга, а также конфигурацию Postgres Pro, выполнив команду:

mamonsu report

Чтобы только просмотреть предлагаемые для оптимизации изменения, но не применять их, запустите команду tune с ключом --dry-run:

mamonsu tune --dry-run

Чтобы предлагаемые изменения были применены, запустите команду tune без каких-либо параметров:

mamonsu tune

Вы можете исключить некоторые параметры из отчёта или отключить некоторые методы оптимизации, передав дополнительные аргументы. Полный список аргументов команд report и tune приведён в Разделе «Справка по командной строке».

Управление параметрами сервера Zabbix в командной строке

Приложение mamonsu позволяет работать с сервером Zabbix, используя командную строку. В частности, вы можете загружать файлы шаблонов на сервер Zabbix, создавать и удалять узлы и группы узлов Zabbix, привязывать шаблоны к узлам и получать последние значения метрик.

Чтобы настроить узел мониторинга в Zabbix с самого начала, вы можете выполнить следующие действия:

  1. При желании укажите учётные данные в Zabbix в следующих переменных окружения в той системе, где настраивается мониторинг:

    • Задайте в переменных ZABBIX_USER и ZABBIX_PASSWD имя и пароль вашей учётной записи Zabbix, соответственно.

    • Задайте в переменной ZABBIX_URL адрес http://zabbix/

    Если этого не сделать, вам нужно будет указывать следующие параметры при каждом вызове любой подкоманды mamonsu zabbix:

    --url=http://zabbix/ --user=имя_пользователя_zabbix --password=пароль_пользователя_zabbix
  2. Сгенерируйте новый файл шаблона и загрузите его на сервер Zabbix:

    mamonsu export template template.xml
    mamonsu zabbix template export template.xml
  3. Создайте новую группу узлов:

    mamonsu zabbix hostgroup create имя_группы_узлов
  4. Определите идентификаторы созданной группы и загруженного шаблона, назначаемые автоматически сервером Zabbix:

    mamonsu zabbix hostgroup id имя_группы_узлов
    mamonsu zabbix template id имя_шаблона
  5. Создайте узел, связанный с этой группой, и привяжите к нему загруженный шаблон с помощью одной команды:

    mamonsu zabbix host create имя_узла ид_группы_узлов ид_шаблона адрес_mamonsu
           

    Здесь имя_узла — имя создаваемого узла, ид_группы_узлов и ид_шаблона — уникальные идентификаторы, полученные на предыдущем шаге, а mamonsu_address — IP-адрес системы, в которой работает mamonsu.

Создав узел в Zabbix, произведите настройку целевой системы, как описано в Разделе «Установка и подготовка».

Экспорт метрик для стандартного агента Zabbix

Используя mamonsu, вы можете преобразовать определения метрик системы и Postgres Pro в формат, который поддерживает стандартный агент Zabbix.

В настоящее время эта функциональность имеет следующие ограничения:

  • В Windows экспорт метрик mamonsu не поддерживается.

  • Определения метрик входящего в Postgres Pro Enterprise расширения pg_wait_sampling и механизма CFS не преобразуются.

Чтобы использовать агент Zabbix для сбора метрик mamonsu, выполните следующее:

  1. Сгенерируйте файл конфигурации, совместимый со стандартным агентом Zabbix, и поместите его в /etc/zabbix/zabbix_agent.d/. Вы можете добавить нужный путь перед именем файла:

    mamonsu export zabbix-parameters /etc/zabbix/zabbix_agent.d/zabbix_agent.conf

    Все имеющиеся параметры команды export zabbix-parameters описаны в Разделе «Справка по командной строке».

  2. Сгенерируйте шаблон для стандартного агента Zabbix:

    mamonsu export zabbix-template template.xml

    Все параметры команды export zabbix-template описаны в Разделе «Справка по командной строке».

  3. Загрузите сгенерированный шаблон на сервер Zabbix, как описано в Разделе «Установка и подготовка».

  4. Если вы намерены собирать метрики Postgres Pro, после загрузки шаблона измените в веб-интерфейсе следующие макросы:

    • Вместо {$PG_CONNINFO} укажите параметры подключения к серверу Postgres Pro, за которым вы намерены наблюдать.

    • Вместо {$PG_PATH} укажите путь к каталогу, где установлена программа psql.