Zabbix用好LLD,立马感觉高大上许多

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Zabbix⽤好LLD,⽴马感觉⾼⼤上许多
最近2个⽉都在不停的折腾Zabbix,各种各样的监控需求,实施过程中⼜遇到各种各样的问题,总⽽⾔之、⾔⽽总之,就是宝宝好累。

近期会写⼀系列Zabbix⽂章,把我踩过的坑和实施过程中的经验分享给⼤家。

今天正好折腾了LLD,就先写⼀篇关于LLD的⽂章吧。

什么是LLD?
英⽂Low-level discovery的缩写,可以翻译成⾃动发现。

我们要监控的对象如果是固定的,那直接添加⼀个item就可以了,但是如果不是固定的,那就需要⽤LLD。

举⼏个栗⼦:
1、如果要监控CPU(s)使⽤率,这在Linux⾥是⼀个固定的值,添加⼀个item就可以。

如果要监控每个cpu的使⽤率,这就需要LLD了,因为每个机器的cpu个数都不⼀样,我们需要先发现cpu个数,在监控每个cpu的使⽤率。

2、每个机器的分区也不⼀样,需要⽤到LLD
3、每个交换机的⽹⼝个数也不⼀样,需要⽤到LLD
最后你会发现好像要监控的对象⼤部分都是不固定的,到处都是LLD。

Zabbix官⽅其实早就想到了这点,为我们做好了6个⾃动发现功能,真贴⼼
discovery of file systems;(vfs.fs.discovery)
discovery of network interfaces; (net.if.discovery)
discovery of CPUs and CPU cores; (system.cpu.discovery)
discovery of SNMP OIDs; (discovery[{#MACRO1}, oid1, {#MACRO2}, oid2, …,])
discovery using ODBC SQL queries; (db.odbc.discovery[<description>,<dsn>])
discovery of Windows services. (service.discovery)
这⼏个⾃动发现已经满⾜我们⼀些基本需求了,但是我们的需求是⽆穷⽆尽的,所以我们还需要⾃⼰构建⼀些⾃动发现。

在讲构建之前先来⼀点基础知识,Zabbix的⾃动发现可以处理json格式的数据,所以我们写的⾃动发现程序需要输出json格式。

先来看⼏个输出的例⼦:
为了⽅便理解,你可以把这个json数据看成excel⾥的三列,SNMPINDEX、IFDESCR、IFPHYSADDRESS。

再来看⼀个例⼦:
为了⽅便理解,你可以把这个json数据看成excel⾥的两列,HOST、COUNT。

看完这2个例⼦,就容易理解多了吧。

假如我们有⼀个excel,有1列的数据,也有2列的数据,也有3列的数据,按照json输出给zabbix就可以了。

⼏个真实案例:
案例⼀:每⼀⾏写了⼀个url的⽂本⽂件,⽤LLD监控是否可以?
当然可以,虽说系统带了Web scenarios,但是如果有5000⾏url,⼀个⼀个添加也会死⼈的。

假如我们的url.txt内容是。

省略5000⾏。

很明显这相当于只有⼀列的excel,我们可以先建⽴⼀个模板,⾥⾯建⽴⼀个LLD,如果你想让哪个机器去访问这⼏个url,链接到这个模板就可以,如果多个机器链接到这个模板,相当于多机器监控这些url。

如果机器够分布,够多,那岂不是可以监控多机房多链路了?
如果就⼀列,可以把所有数据放到⼀个array⾥,计算⼀下array的长度,除了最后⼀⾏特殊处理⼀下,前⾯的统⼀输出,因为json输出的最后少⼀个逗号,所以要特殊处理⼀下。

不过我为了通⽤,并没这样⽤,哈哈,下⾯有贴我写的程序。

案例⼆、⼀个特殊需求,我们希望绑定HOST去访问url。

省略5000⾏。

这相当于excel⾥的两列,第⼀列URL,第⼆列HOST,所有我就写了⼀个shell,来构造出需要的json数据,这个简单修改⼀下,可以适⽤于任何列。

构造⼀个LLD发现程序就到这⾥了,我们可以触类旁通,想象⼒是⽆穷的,⽐如:
⾃动发现redis、mysql、http、oracle表空间,就是找出要监控的数据输出json数据,总之⼀句话,只要想发现,都可以⾃动发现。

最后就是zabbix_agentd.conf配置⽂件添加key。

再写⼀个shell容许传三个参数(url、host、returncode)进去运⾏后得到返回值,web添加监控项,监控项⾥的key写web.monitor[{#URL},{#HOST},xxx],对于url监控来说,xxx⽆⾮就是监控返回码、相应时间、下载速率,然后添加trigger、action等等,剩下的操作都⽐较常规,我就不讲了。

如果你单位有监控需求,也可以运维帮订阅号后台留⾔联系我。

相关文档
最新文档