网络自动发现
- 支持自动发现网络设备和服务器(可通过自动配置自动发现服务规则实现)。
- 支持Agent自动注册。
- 支持自动发现(Low leveldiscover)实现动态监控项的批量监控(支持自定义)。
自动发现lld机制:
1.获取监控数据
脚本获取的数据格式必须是字典,或者字典的列表,因为zabbix discovery只接收json格式
e.g
{
"data": [
{
"{#S2BACKUP}": "3306"
},
{
"{#S2BACKUP}": "3305"
}
]
}
2.调用zabbixdiscovery,创建监控项
调用zabbixdiscovery向server端获取监控项,并且创建监控项
3.调用zabbixsender,数据发送给server
调用zabbixsender,将json格式的监控数据导出为文件中,将文件发送给server端
注意必须将zabbix_agentd.conf中的ServerActive设置为server ip,意思为自动注册的监控数据的接收端
e.g
if __name__ == "__main__":
logutil.make_logger(base_dir='/var/log/zabbix', level='INFO') ##指定日志目录
parser = argparse.ArgumentParser(description='zbx lld') ##调用的argparse模块,主要作用在设置外界传入参数的要求
parser.add_argument('cmd', type=str, nargs=1, choices=[
'discovery', 'report'], help='command to run') ##指定了两种参数,discovery和report,help为自带参数,会显示参数用法
args = parser.parse_args()
cmd = args.cmd[0]
lld_key = 'S2BACKUP'
item_key = 'check.mysql.backup'
if cmd == 'discovery': ##设置运行discovery参数执行的内容
d = ZabbixDiscovery(lld_key=lld_key, lld_list=get_ports()) ##lld_key在Zabbix_Discovery中指定的是item的key list的在item项中的名字{#S2BACKUP},lld_list为key指定的具体key值
d.dump() ##d在此处的类型是dict,d.dump将dict转变为json格式
elif cmd == 'report':
s = ZabbixSender(item_key=item_key) ##为监控项key的前缀,如check.mysql.backup.3306.discovery
data = check_mysql_backup()
print s.send(data)
"""
0 # data sent
-1 # data sent error
"""
zabbix-server机制
1.创建template,添加discovery roles
注:添加filter,根据discovery中{#VALUE}宏名的格式选择合适的filter
2.添加item prototype
自动注册的type此处选择trapper,原因:trapper的类型针对情况为,agent采用zabbix-sender主动发送监控数据到server
3.agent自动注册进入,生成item
trigger prototype
graph prototype
在agent生成的trigger和graph
文章推荐:
lld web设置:https://www.zabbix.com/documentation/3.4/zh/manual/discovery/low_level_discovery
来源:CSDN
作者:lori_jishumeng123
链接:https://blog.csdn.net/Lori_jishumeng123/article/details/84378370