将python脚本导入zabbix?

Posted

技术标签:

【中文标题】将python脚本导入zabbix?【英文标题】:Importing python script to zabbix? 【发布时间】:2020-05-07 08:37:05 【问题描述】:

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

【问题讨论】:

好吧,我现在做了一个 crontab 作业将结果写入 txt 文件,我发现你可以使用“userparameter”将文件读入位于“/tmp/file.txt”中的 zabbix "并且我在 zabbix_agent.conf 中添加了一个参数,但是阅读手册我仍然无法理解您应该如何阅读该文件。 zabbix.com/documentation/3.0/manual/config/items/userparameters 【参考方案1】:

您正在处理多个数据库,并且您希望每个数据库的大小:您需要为您的目标主机实现Low Level Discovery。

发现规则应生成如下 json:


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

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

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

例如,您的OBDC discovery 应该是:

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

【讨论】:

以上是关于将python脚本导入zabbix?的主要内容,如果未能解决你的问题,请参考以下文章

python利用zabbix API添加监控

Zabbix3.2邮件告警python脚本

Zabbix3.2邮件告警python脚本

Zabbix3.0.2使用外部python脚本实现邮件报警

zabbix邮件告警python脚本

zabbix邮件报警python脚本