Импортировать скрипт python в zabbix? - PullRequest
0 голосов
/ 21 января 2020

Итак, я создал простой python скрипт для контроля размеров БД в моем postgres, но теперь мне нравится формировать графики о результатах, которые нужно отслеживать. Однако я не могу найти какой-либо способ поместить этот скрипт в WEB GUI для использования в zabbix / grafana. Кроме того, мы используем zabbix и grafana просто потому, что grafana выглядит намного лучше.

# pip install psycopg2-binary
import psycopg2

connection = psycopg2.connect(user = "postgres", password = "password", host = "server", port = 
"5432", database = "postgres")
cursor = connection.cursor()
cursor.execute("SELECT datname FROM pg_database WHERE datistemplate = false")
records = cursor.fetchall()

for record in records:
    cursor.execute("SELECT pg_size_pretty( pg_database_size('{}'))".format(record[0]))
    row = cursor.fetchone()
    print("DB:{} Size:{}".format(record[0], row[0]))

Я гуглял все утро, но не могу найти никакой информации об этом. Я обнаружил, что он должен быть добавлен в папку / zabbix / externalscripts, но я сделал это, и теперь я понятия не имею, как получить к нему доступ и добавить в график.

1 Ответ

0 голосов
/ 21 января 2020

Вы имеете дело с несколькими базами данных, и для каждой из них вам нужен размер: вам нужно реализовать Низкоуровневое обнаружение для вашего целевого хоста.

Правило обнаружения должно создать json like:

{
    "data":  [
                 {
                     "{#DBNAME}":  "Database 1",
                     "{#SOMEOTHERPROPERTY}":  "XXX"
                 },
                 {
                     "{#DBNAME}":  "Database 2",
                     "{#SOMEOTHERPROPERTY}":  "YYY"
                 }
             ] }

Затем необходимо создать прототип элемента, который использует {#DBNAME} в качестве ссылки, для запроса размера базы данных.

Вы можете создать оба LLD и прототип изделия с использованием ODB C поддержки .

Например, ваше OBD C обнаружение должно быть:

Key = db.odbc.discovery[get_databases,{HOST.NAME}]
Params = SELECT datname FROM pg_database WHERE datistemplate = false

И ваш прототип элемента:

Key = db.odbc.select[Used size on {#datname},{HOST.NAME}]
Params = SELECT pg_size_pretty( pg_database_size('{#datname}'))

После этой настройки у вас будет элемент для каждой базы данных (и новые базы данных будут обнаружены динамически): вы можете построить их с последними данными, с помощью Grafana или определив Граф прототипов.

...