将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?的主要内容,如果未能解决你的问题,请参考以下文章