mamonsu

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

Синтаксис

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

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

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

mamonsu report [параметры_отчёта] [параметры_подключения]

mamonsu tune [параметры_оптимизации] [параметры_подключения]

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

mamonsu zabbix dashboard upload имя_шаблона

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

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

mamonsu zabbix version

mamonsu [-c | --config] [-d | --daemonize]

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, обратитесь к Главе 16 и Разделу 17.2.

Примечание

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

Приложение mamonsu поставляется вместе с Postgres Pro Standard в виде отдельного предварительно собранного пакета mamonsu (подробные инструкции по установке приведены в Главе 16). Завершив установку mamonsu, выполните следующие действия, чтобы начать сбор метрик:

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

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

    На этом этапе команда bootstrap задаёт пользователя mamonsu, создаёт схему mamonsu в базе данных, заданной явно или по умолчанию, а также расширения и объекты, необходимые для мониторинга.

    Команда bootstrap не имеет обязательных параметров. При запуске без параметров она берёт необходимые значения из файла конфигурации (по умолчанию — /etc/mamonsu/agent.conf). Ниже приведён простой пример подготовительной процедуры:

    1. В разделе [postgres] файла agent.conf укажите параметры подключения для кластера Postgres Pro, за которым вы собираетесь наблюдать. За дополнительными сведениями обратитесь к разделу Параметры подключения.

    2. Выполните следующую команду для подготовки mamonsu:

      mamonsu bootstrap

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

    В следующем примере параметры bootstrap передаются явно.

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

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

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

      mamonsu bootstrap -M mamonsu_user -x -c /etc/mamonsu/agent.conf -d mamonsu_database -U postgres --host myhost --port 5432

      Для получения подробной информации о параметрах -M, -x и -c см. bootstrap. За дополнительными сведениями о других параметрах обратитесь к разделу Параметры подключения. Эта команда создаст функции мониторинга в базе_mamonsu и предоставит право выполнять их пользователю_mamonsu. Кроме того, будет создано расширение pg_buffercache, позволяющее собирать метрики общего кеша буферов. При этом задаётся другой путь к файлу конфигурации.

    В результате суперпользователь не требуется для дальнейших подключений. Обратите внимание, что в этой базе данных создаётся несколько таблиц в схеме 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 имя пользователя
        [-c[ файл конфигурации] | --config[=файл конфигурации]]
        [-x | --create-extensions] [параметры подключения]

Подготовить mamonsu к работе. Данная команда может принимать следующие параметры:

-M

Задаёт имя пользователя, который будет владеть всеми процессами mamonsu. Указанный пользователь не должен быть привилегированным.

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

Задаёт файл agent.conf, в котором раздел [postgres] содержит имя базы данных, которое будет использоваться, если параметр --dbname не указан среди параметров подключения.

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

-x
--create-extensions

Создаёт вспомогательные расширения. Будет создано расширение pg_buffercache, которое больше не создаётся по умолчанию. Для Postgres Pro версии 12 или выше команда bootstrap -x создаст функции для работы с pgpro_stats и предоставит права на их выполнение пользователю mamonsu.

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

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

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.

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

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

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 dashboard upload

Синтаксис:

mamonsu dashboard upload имя_шаблона

Загрузить панель Zabbix с метриками mamonsu в шаблон на сервере Zabbix версии 6.0 или выше.

zabbix item

Синтаксис:

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

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

zabbix version

Синтаксис:

mamonsu zabbix version

Получить версию сервера Zabbix, к которой подключён агент mamonsu.

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».

[--config] [--daemonize]

Синтаксис:

mamonsu [-c файл конфигурации | --config=файл конфигурации]
        [-d | --daemonize]

Запустить в качестве агента мониторинга на переднем плане или в фоновом режиме, используя параметры, загруженные из файла конфигурации. Если указанный файл конфигурации или стандартный файл конфигурации не существует, завершиться с ошибкой. Полезно для отладки. Принимаются следующие параметры:

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

Задаёт файл agent.conf для загрузки параметров конфигурации.

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

-d
--daemonize

Запустить в фоновом режиме. Без этого указания mamonsu будет работать на переднем плане.

--version

Синтаксис:

mamonsu --version

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

--help

Синтаксис:

mamonsu --help

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

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

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

Если вы не зададите параметры_подключения, 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

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

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

password

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

database

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

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

host

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

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

port

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

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

application_name

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

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

query_timeout

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

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

Также вместо параметров конфигурации можно использовать следующие переменные среды: PGUSER, PGPASSWORD, PGHOST, PGDATABASE, PGPORT и PGAPPNAME. За подробным описанием этих переменных обратитесь к Разделу 32.14 для их значения.

[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

timeout

Максимальное время ожидания при подключении к серверу Zabbix (в секундах).

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

[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

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

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

interval

Указывает интервал работы модуля в секундах. Параметр задаётся целым числом. Можно установить разные интервалы для разных модулей. Для модулей, собирающих метрики PostgreSQL/Postgres Pro, например autovacuum, checkpoint и т. д., это интервал, в течение которого mamonsu обращается к экземпляру Postgres Pro для сбора метрик. Для системных модулей, например diskstats, memory и т. д., это интервал, в течение которого осуществляется обращение к операционной системе. Для служебных модулей, например agentapi, logsender, zbxsender, это интервал, в течение которого вызываются их функции. Обратите внимание, что параметр interval модуля zbxsender связан с параметром timeout раздела [zabbix]. Максимальное время ожидания ответа сервера Zabbix, превышающее интервал работы модуля, может привести к неправильному поведению модуля zbxsender: модуль перезапускается с сообщением об ошибке, если подключение или передача данных занимают больше времени, чем значение, указанное в параметре interval.

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

В следующем примере показаны разделы, соответствующие встроенным модулям 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.77.

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

Данный модуль собирает две метрики: 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.

По умолчанию этот модуль отключён. Чтобы включить его, задайте для параметра 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/manual.

Если вы решили сохранять все собираемые метрики в файле как описано в «Параметры вывода», собранные метрики можно передать на сервер 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 необходимо экспортировать все параметры в формат, который поддерживается стандартным агентом Zabbix.

Чтобы использовать агент 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.

Замечания о совместимости

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

  • Если вам нужно сохранить собранные данные, выполните следующее:

    1. Установите новую версию mamonsu.

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

    3. Если вы выполняли специальную подготовительную процедуру в предыдущей версии mamonsu, запустите команду bootstrap ещё раз.

    4. Загрузите новый шаблон на сервер Zabbix.

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

    6. Создайте новый узел для той же системы и привяжите к нему новый шаблон.

    7. Перезапустите службу mamonsu. Она будет собирать данные для нового узла. Старый узел больше не будет использоваться, но собранные для него данные будут по-прежнему доступны.

  • Если вам не нужно сохранять собранные данные, выполните следующее:

    1. Установите новую версию mamonsu.

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

    3. Если вы выполняли специальную подготовительную процедуру в предыдущей версии mamonsu, запустите команду bootstrap ещё раз.

    4. Загрузите новый шаблон на сервер Zabbix.

    5. В параметрах узла Zabbix привяжите к узлу новый шаблон вместо старого.

    6. Перезапустите службу mamonsu, чтобы начался сбор данных. Все данные, собранные ранее, будут потеряны.