-
Notifications
You must be signed in to change notification settings - Fork 134
hoto_dev
遇见王斌 edited this page Mar 29, 2018
·
12 revisions
定时上报固定的监控项信息到已有的监控服务
主动上报(即程序主动将要监控信息主动上报到监控中心)和被动上报(监控中心直接获取想要的监控项的值)的区别是
主动上报需要知道需要上传那些监控项
即需要先获取到每台机器需要上报的监控项,然后定时获取 zabbix issues 中的异常值,然后进行上报
- 生成每台机器的监控列表(zabbix_tool create_config)
[功能] (1)主机名_IP字典(根据host_list获取) (2)主机名_服务名列表(根据item_list获取) [说明] 可以修改 `/etc/zabbix_tool/zabbix_tool.ini` 中 application 名称以及生成的文件路径
- 启动定时程序时获取机器列表以及监控列表【读取配置文件】
- 获取异常主机列表和正常主机列表【zabbix issues 进行获取】
- 异常主机 获取异常监控项项和非异常监控项
- 正常主机 返回全部OK的信息
进行二次开发是需要了解 Python
基础知识,同时需要熟悉 zabbix_api
使用
import os
import sys
root_path = os.path.split(os.path.realpath(__file__))[0]
os.chdir(root_path)
sys.path.insert(0,'/opt/ZabbixTool/lib_zabbix/')
sys.path.insert(0,'/opt/ZabbixTool/lib_zabbix/w_lib/')
下面是使用 zabbix_api 输出异常监控项的例子,同时可以通过修改 /opt/ZabbixTool/lib_zabbix/zabbix_api.py
中函数的返回值,进而返回不同的内容
#!/usr/bin/python
#coding=utf8
import os
import sys
root_path = os.path.split(os.path.realpath(__file__))[0]
os.chdir(root_path)
sys.path.insert(0,'/opt/ZabbixTool/lib_zabbix/')
sys.path.insert(0,'/opt/ZabbixTool/lib_zabbix/w_lib/')
from zabbix_api import zabbix_api
zabbix=zabbix_api(output=False)
issues_dict=zabbix.issues()
print issues_dict
from zabbix_api import zabbix_api
zabbix=zabbix_api(output=False)
issues_dict=zabbix.issues()
print issues_dict
注:获取到的issues_dict
是个字典,可以通过以下方法显示的优美点
import json
print json.dumps(issues_dict,indent=4)
返回值为
{
"主机名1": [
"异常监控项1的key",
"异常监控项2的key",
"异常监控项3的key",
],
"主机名2": [
"异常监控项1的key",
"异常监控项2的key",
]
}
注意
:如果没有异常则返回 0
Zabbix 中对监控主机是以主机名作为标识的,主机名和 host_id 一样都是唯一的,但有的第三方监控平台是以 IP 作为标识的话,则需要生成主机名与 IP 的对应关系
可以通过如下方法生成字典
host_list=zabbix.host_list()
hostname_ip={}
for host in host_list:
# host[0]---hostid ,host[1]---hostname,host[2]---hostip
hostid=host[0]
hostname=host[1]
hostip=host[2]
hostname_ip[hostname]=hostip
print json.dumps(hostname_ip,indent=4)
程序中导入 zabbix_api 时,工作目录会切换为 /opt/ZabbixTool/lib_zabbix
路径
获取配置和导出文件时建议使用绝对路径
可以查看实例 zabbix_tool
遇到问题可以加入 Zabbix 开源社区群进行讨论 加入微信群方法如下
- (1) 微信添加 zabbix_china(Zabbix_Z小秘)备注说明:(王斌 zabbix_manager)
- (2) 然后让
Zabbix_Z小秘
拉入Zabbix 开源社区群
即可