首页 > 解决方案 > 将python脚本导入zabbix?

问题描述

所以我做了一个简单的 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 文件夹,但我这样做了,现在我不知道如何访问它并添加到图表中。

标签: pythongrafanazabbix

解决方案


您正在处理多个数据库,并且每个数据库都需要大小:您需要为目标主机实现低级发现

发现规则应生成如下 json:

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

然后您必须创建一个使用 {#DBNAME} 作为参考的项目原型,以查询数据库大小。

您可以使用ODBC 支持创建 LLD 和项目原型。

例如,您的OBDC 发现应该是:

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 或通过定义图形原型来绘制它们。


推荐阅读