Маніторынг PostgreSQL з выкарыстаннем Zabbix

Маніторынг PostgreSQL з выкарыстаннем Zabbix
Даклад Дар'і Вілкавай для Zabbix Meetup Online

Я хачу пазнаёміць вас са сродкам маніторынгу PostgreSQL і аперацыйнай сістэмы, які распрацоўваецца нашай кампаніяй з выкарыстаннем Zabbix.

Мы выбралі Zabbix у якасці сродку маніторынгу ўжо даўно, таму што гэта платформа з адкрытым зыходным кодам, якая падтрымліваецца актыўнай супольнасцю, якая карыстаецца вялікай папулярнасцю ў Расіі.

Мы стварылі актыўны агент – Mamonsu, які забяспечваў больш гнуткі маніторынг, чым на той момант дазвалялі стандартныя сродкі, і забяспечваў збор метрык і іх адпраўку на Zabbix Server. У нашай кампаніі Mamonsu выкарыстоўваецца пры правядзенні аўдыту.

Mamonsu

Mamonsu – актыўны агент (Zabbix Trapper) для маніторынгу PostgreSQL і аперацыйнай сістэмы. Mamonsu (напісаны на Python) дазваляе наладзіць параметры маніторынгу PostgreSQL і аперацыйнай сістэмы за пяць хвілін.

Mamonsu валодае дадатковымі прыладамі:

  • mamonsu tune - каманда, якая рэдагуе параметры налады ў канфігурацыйным файле PostgreSQL пад машыну на які ўсталяваны агент Mamonsu.
  • mamonsu report - каманда, якая стварае адказы аб аперацыйнай сістэме і PostgreSQL.

Mamonsu усталёўваецца на сервер СКБД, збірае інфармацыю, кампануе яе ў JSON, які адпраўляе для візуалізацыі на Zabbix Server, дзе павінен быць шаблон для яго метрык.

Маніторынг PostgreSQL з выкарыстаннем Zabbix

Схема працы Mamonsu

Магчымасці Mamonsu

  • Эфектыўная праца з PostgreSQL. Пастаяннае злучэнне з PostgreSQL - галоўная перавага Mamonsu. Пры гэтым максімальная колькасць злучэнняў роўная максімальнай колькасці баз дадзеных, да якіх ён падключаецца.
  • Пашыральнасць. Mamonsu цалкам «плагінны» агент, і, дзякуючы фіксаванай структуры кожнага плагіна і адноснай прастаце Python, можна лёгка навучыцца пісаць новыя ці рэдагаваць стандартныя плагіны, т. е. параметры збору метрык.
  • Шырокі ахоп метрык для маніторынгу для PotgreSQL у тым ліку метрык спецыфічных пашырэнняў.
  • Хуткі запуск, даступнасць «са скрынкі».
  • Выгрузка шаблонаў і канфігурацыйных файлаў, а таксама загрузка на Zabbix Server.
  • кросплатформеннасць, Што важна для нашых заказчыкаў, якія карыстаюцца рознымі дыстрыбутывамі Linux, у тым ліку айчыннымі.
  • BSD-clause license.

На дадзены момант мы прапануем мноства плагінаў і ў кожнай наступнай версіі імкнемся дадаць нешта новае.

  • 14 плагінаў для PostgreSQL,
  • 8 плагінаў для OS Linux,
  • 4 плагіна для OS Windows.

Mamonsu збірае больш за 110 метрык PostgreSQL і аперацыйных сістэм:

  • 70 метрык PostgreSQL,
  • 40 метрык OS Linux,
  • 8 метрык OS Windows.

Асноўныя метрыкі ўключаюць даступнасць СКБД, колькасць злучэнняў, памер базы дадзеных, чэкпойнты, хуткасць чытання / запісы, блакіроўкі, колькасць працэсаў аўтавакуум і хуткасць генерацыі WAL. Поўны спіс даступных метрык, а таксама падрабязнае апісанне ўсіх інструментаў даступныя ў рэпазітары на сайце GitHub.

Маніторынг PostgreSQL з выкарыстаннем Zabbix

Спіс даступных метрык на сайце GitHub

Запуск Mamonsu за 5 хвілін

Для наладкі маніторынг PostgreSQL і аперацыйнай сістэмы з дапамогай Mamonsu можна за 5 хвілін, выканаўшы 5 простых дзеянняў.

  1. Устаноўка Mamonsu. Mamonsu можна сабраць з зыходнікаў ці скарыстацца даступнымі пакетамі.

$ git clone ... && cd mamonsu && python setup.py

build && python setup.py install

  1. Настройка злучэнняў. Неабходна прапісаць параметры злучэння c PostgreSQL і Zabbix Server у файле agent.conf.

/etc/mamonsu/agent.conf

  1. Экспарт шаблону ў Zabbix Server.

$ mamonsu zabbix template export

/usr/share/mamonsu/example.xml

  1. Даданне вузла сеткі ў Zabbix Server. Экспартаваны шаблон будзе аўтаматычна падлучаны да новага вузла сеткі на Zabbix Server.

$ mamonsu zabbix host create mamonsu-demo

  1. запуск.

$ service mamonsu start

Напрамкі развіцця Mamonsu

У рамках развіцця Mamonsu мы плануем дапрацоўваць метрыкі і ствараць новыя плагіны, напрыклад плягін маніторынгу памеру асобных табліц. Мы таксама плануем паляпшаць і ствараць дадатковыя прылады, а таксама пашыраць магчымасці аўтаналадкі праз каманду mamonsu tune.

Модуль маніторынгу PostgreSQL у складзе Zabbix Agent 2

Для злучэння з PostgreSQL выкарыстоўваецца хуткі і папулярны драйвер pgx (PG driver and toolkit for Go).

Пакуль мы выкарыстаем два інтэрфейсу: Exporter, які выклікае апрацоўшчык па ключы, і Configurator Zabbix Agent 2, які счытвае і правярае параметры злучэння з серверам, зададзеныя ў канфігурацыйным файле.

Мы пастараліся аптымізаваць працу СКБД, групуючы метрыкі і выкарыстоўваючы апрацоўшчык (handler) для метрык і груп метрык, а таксама выкарыстоўваючы групы метрык у JSON як залежныя зменныя (dependency items), і нізкаўзроўневае выяўленне (discovery rules).

асноўныя магчымасці

  • захаванне сталага злучэння з PostgreSQL паміж праверкамі;
  • падтрымка гнуткіх інтэрвалаў апытання;
  • сумяшчальнасць з версіямі PostgreSQL, пачынальна з 10, і Zabbix Server, пачынальна з версіі 4.4;
  • магчымасць падключэння і маніторынгу некалькіх інстансаў PostgreSQL адначасова дзякуючы таму, што Zabbix Agent 2 дазваляе ствараць некалькі сесій.

Узроўні параметраў падлучэння да PostgreSQL

Усяго даступныя тры ўзроўні параметраў падлучэння да PostgreSQL, т. е. задач і налад:

  • Глабальны,
  • Sessions,
  • Макрасы.

  1. Параметры Global задаюцца на ўзроўні агента, параметры Session і Macros вызначаюць параметры падключэння базе.

  2. Параметры падлучэння да PostgreSQL - Sessions задаюцца ў файле zabbix_agent2.conf.

Маніторынг PostgreSQL з выкарыстаннем Zabbix

Параметры падлучэння да PostgreSQL - Sessions

  • Пасля ключавога слова Сеансы паказваецца ўнікальнае імя сесіі, якое павінна быць пазначана ў ключы (шаблоне).
  • Параметры URI и UserName абавязковыя для кожнай сесіі.
  • Калі імя базы не зададзена, выкарыстоўваецца агульнае па змаўчанні імя базы для ўсіх сесій для PostgreSQL, якое таксама задаецца ў канфігурацыйным файле.

  1. Параметры падлучэння да PostgreSQL – Macros задаюцца ў ключы метрыкі ў шаблоне (аналагічна спосабу, выкарыстанаму ў Zabbix Agent 1), т. е. ствараюцца ў шаблоне і далей паказваюцца як параметры ў ключы. Пры гэтым паслядоўнасць макрасаў фіксаваная, т. е., напрыклад, URI заўсёды паказваецца на першым месцы.

Маніторынг PostgreSQL з выкарыстаннем Zabbix

Параметры падлучэння да PostgreSQL - Macros

Модуль маніторынгу PostgreSQL уключае ўжо больш за 95 метрык, якія дазваляюць ахапіць даволі шырокі аб'ём параметраў PostgreSQL, уключаючы:

  • колькасць злучэнняў,
  • аб'ём баз дадзеных,
  • архівацыя wal-файлаў,
  • кантрольныя кропкі,
  • колькасць «раздуліся» табліц,
  • статус рэплікацыі,
  • адставанне рэплікі.

Метрыкі PostgreSQL не інфарматыўныя без параметраў аперацыйнай сістэмы. Але Zabbix Agent 2 ужо ўмее збіраць параметры аперацыйнай сістэмы, таму для атрымання поўнай карціны проста падлучальны да вузла сеткі неабходныя шаблоны.

Апрацоўшчык (handler)

Апрацоўшчык (handler) - асноўная адзінка модуля, у якой выконваецца сам запыт і якая дазваляе атрымліваць метрыкі.

Каб атрымаць простую метрыку:

  1. Ствараем файл для атрымання новай метрыкі:

zabbix/src/go/plugins/postgres/handler_uptime.go

  1. Падлучальны пакет і паказваем унікальны ключ (ключы) метрык:

Маніторынг PostgreSQL з выкарыстаннем Zabbix

  1. Ствараем апрацоўшчык (handler) з запытам, т. е. ініцыюем зменную, у якой будзе вынік:

Маніторынг PostgreSQL з выкарыстаннем Zabbix

  1. Выконваем запыт:

Маніторынг PostgreSQL з выкарыстаннем Zabbix

Неабходна праверыць запыт на прадмет памылак, пасля чаго вынік будзе падхоплены працэсам Zabbix Agent 2.

  1. Рэгіструем ключ новай метрыкі:

Маніторынг PostgreSQL з выкарыстаннем Zabbix

Пасля рэгістрацыі метрыкі можна перазбіраць агент з новай метрыкай.

Модуль даступны, пачынаючы з Zabbix 5.0 на сайце https://www.zabbix.com/download. У гэтай версіі Zabbix параметры задаюцца асобна праз host і port. У версіі Zabbix 5.0.2, якая хутка выйдзе, параметры падлучэння будуць скампанаваныя ў адзін URI.

Дзякуй за ўвагу!

Карысныя спасылкі

GitHub Mamonsu

Дакументацыя па Mamonsu

Zabbix Git

Крыніца: habr.com

Дадаць каментар