python - 将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 文件夹,但我这样做了,现在我不知道如何访问它并添加到图表中。
解决方案
您正在处理多个数据库,并且每个数据库都需要大小:您需要为目标主机实现低级发现。
发现规则应生成如下 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 或通过定义图形原型来绘制它们。
推荐阅读
- javascript - 使用 MongoDB 执行 Web 应用程序时出现错误
- ruby-on-rails - 使用 RubyXL 将 excel 文件导入到 rails
- python - 将两个列表中存在的字典转换为 csv
- python - 如何使用 Facebook 营销 api 在单个查询中获取所有广告的见解
- java - 防止应用程序崩溃加载许多资产
- r - R动画ggplot使用'for循环'和列表
- node.js - 尝试使用 firebase-admin 从 Cloud Run 服务访问 FirestoreAdminClient。错误:7 PERMISSION_DENIED:调用者没有权限
- tkinter - tkinter 条目的回调仅执行一次
- maven - 如何使用 pom.xml 中竹子的元数据选项卡下定义的构建特定变量
- python - Python:将列表中的每个项目定义为集合