zabbix(10)自动发现规则(low level discovery)

  在配置Iterms的过程中,有时候需要对类似的Iterms进行添加,这些Iterms具有共同的特征,表现为某些特定的参数是变量,而其他设置都是一样的,例如:一个程序有多个端口,而需要对端口配置Iterms。再如,磁盘分区,网卡的名称等等,由于具有不确定性,古配置固定的Items会出现无法通用的问题。

  Low level discovery的Key可以对网卡、文件系统等进行自动发现,当然也支持自定义。

  Low level discovery的使用过程分如下两步:

    (1)自动发现特定变量的名称。

    (2)添加对变量的Items。

  Zabbix中Low level discovery的Key返回值是一个JSON格式。查看Low level discovery Key返回格式如下:

zabbix(10)自动发现规则(low level discovery)

2、案列

  使用Zabbix监控Hadoop集群的进程。每台机器启动的进程不一样,而这个时候想要监控每一台机器的hadoop进程,就需要自动发现规则了,如果配置通用的模板,把每一个监控项(监控每一个hadoop的进程)都配置上,会发现每一台主机对有些监控项是不支持的。

zabbix客户端配置如下:

EnableRemoteCommands=1  开启远程执行命令,默认是0,当监控到hadoop进程掉了以后,自动启动。

Timeout=30  超时

StartAgents=8  开启处理线程 

编写自动发现脚本如下:

[root@manager1 script_py 19:20:09]#cat hadoopDiscovery.py #!/usr/bin/env python3 import os import json with open("/data1/zabbix_sh/jps.txt", "r") as f: text_lst = [i.split("\n")[0] for i in f.readlines()] hadoopProcess = [] for i in text_lst: hadoopProcess += [{\'{#hadoopProcessName}\':i}] print(json.dumps({\'data\':hadoopProcess},sort_keys=True,indent=7,separators=(\',\',\':\')))

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgjwjf.html