zabbix自动发现数据库表数据

zabbix可以处理json格式,并将其以键值的方式在监控项中展示出来,下面模拟一个从数据库中获取数据的低级自动发现规则示例.

1.需求分析

在oracle数据库中有一个表,如下:

SQL> select * from ds.tt;

NAME               ID    REC
------------------------------ ---------- ----------
a                   1     88
b                   2     99
c                   3    100

我需要在zabbix中配置监控项的方式,获取REC的值,也就是创建三个监控项,分别以name为命名,每个监控项的值取REC的值.

这些REC的值会不停的变,NAME也有可能会变,但是变化不怎么频繁.

2.创建低级自动发现

这里由于name的值是会变的,所以需要使用低级自动发现功能.由于变化频率不高,所以自动发现的频率可以降低.连接数据库采用odbc的方式连接(你需要在zabbix-server上配置正确odbc).

lld自动发现是基于主机或者模版的,下面以基于主机开始创建lld自动发现:

主机->自动发现规则->创建自动发现

在这里插入图片描述

在这里插入图片描述

名称随意,建议写上XXX Discovery

类型选择数据库监控

键值:名称随意填写,后面添加DSN的名字,这里我使用变量{$DSN}

用户名和密码:这里使用变量

SQL查询:这里写上我们需要的sql查询.注意这里如果没有实际的列名,需要使用别名.记住这里的别名就是后面的监控项所需要用到的

更新间隔:可以适当调大点,例如1h发现一次

3.测试监控项

点击测试进行发现测试:

在这里插入图片描述

手工输入变量的值,例如这里的txyun,zabbix,zabbix,点击get value and test,会获取到结果

在这里插入图片描述

我们点击值,获取到json数组,

在这里插入图片描述

将数组在网页中bjson中进行格式化后结果如下:

[{
    "{#NAME}": "a",
    "{#ID}": "1",
    "{#REC}": "88"
}, {
    "{#NAME}": "b",
    "{#ID}": "2",
    "{#REC}": "99"
}, {
    "{#NAME}": "c",
    "{#ID}": "3",
    "{#REC}": "100"
}]

这里自动发现了三个数组.

4.创建监控项原型

选择监控项原型->创建监控项原型

在这里插入图片描述

在这里插入图片描述

名称:这里一般都是以自动发现的名称打头,即{#NAME} ,这里的NAME就是上面json数组中返回的键的名字

类型:选择可计算的

键值:这里的名称可以随意取,但是必须要包含你需要的键的名称{#NAME},一般我们取比较有意义的名称,可以一眼看出这取的是什么值,例如这里的REC[{#NAME}]

公式:写上在JSON中你要获取的键的名字,这里我们需要的REC,所以为{#REC}

根据需要配置合适的监控间隔和应用集

5.测试监控项原型

点击测试,在宏上面写上json中的值,点击get value and test,如果能正确的获取到你想要的值,则表示监控项原型完成.

在这里插入图片描述

6.执行自动发现

在完成所有的配置之后,回到自动发现界面,点击Execute Now立刻执行:

在这里插入图片描述

这样在监控项中可以看到刚刚自动发现的监控项:

在这里插入图片描述

在最新数据中可以查看到最新获取的值:

在这里插入图片描述

到此处理完成.

7.后续

其实这个示例非常实用,例如在检查表空间或者ASM磁盘组的监控的时候,以前我们往往实用自定义监控项写脚本的方式实现,用了这种方式可以很方便的直接在zabbix中配置.

下面是获取oracle表空间使用率的sql语句,有兴趣的朋友可以自己配置一下:

select a.tablespace_name,trunc(used) used ,trunc(total-used) free,trunc(total) total,trunc(used*100/total) pct_used from (select tablespace_name,sum(decode(maxbytes,0,bytes,maxbytes))/1024/1024 total from dba_data_files group by tablespace_name) a, (select tablespace_name,sum(bytes)/1024/1024 used from dba_segments group by tablespace_name) b where a.tablespace_name=b.tablespace_name order by 5 desc;
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值