/usr/local/sbin/database_api.py $1 $2 $3 | grep -Po 'Average":\K[.\d]+' |tail -1
单独把自定义key的后半部分解释一下。在创建item时,database_api.py会通过key获取到三个值
分别是Project,Metric和实例id。然后通过grep提取json字符串中Average对应的值,因为有可能获取
很多值,所以用tail获取最后一个值。
注:主要的坑就是上面的哪个start_time,如果获取不到值就再设置大点就好。下面就是批量增加item的代码。大致参考的是别人的。其中需要注意 的一点就是我是手动获取applicationid的,可以连接上zabbix后通过 zapi.application.get({"filter":{'name':["APPLICATION_NAME"]}})[0]['applicationid'] 获取application的id。其中APPLICATION_NAME就是你的application的名字咯。如果并不需要放入某个application,可以删掉其中的applications那一项。
#!/usr/bin/python
#-*- coding:utf8 -*-
import sys
from zabbix_api import ZabbixAPI
server = "http://YourZabbixServerAddress"
username = "Admin"
password = "password"
zapi = ZabbixAPI(server=server, path="", log_level=0)
zapi.login(username, password)
def get_hostinfo():
#主要用来获取host的id,接口的id,其中HOST_NAME就是你想往哪个host里面增添item。
host_info=zapi.host.get({"selectInterfaces":["interfaceid"],"filter":{"host":["HOST_NAME"]}})
hostid = host_info[0]['hostid']
interfaceid = host_info[0]['interfaces'][0]['interfaceid']
return (hostid,interfaceid)
def create_item(name,key):
a = get_hostinfo()
hostid = a[0]
interfaceid = a[1]
create_item=zapi.item.create(
{
"name":name,
"key_":key,
"hostid":hostid,
"type":0,
"value_type":0,#0是float,3是整数
"interfaceid":interfaceid,
"date_type":0,
"delay":60,
"history":7,
"trends":90,
"status":0,
"applications":[ #如果不放入某个applications可以删掉此项
"2311"
]
}
)
return "item create success"
if __name__ == "__main__":
arg1='CpuUsage'
with open('conf') as f:
#从conf文件中读取实例id和实例名称。
for i in f:
rds=i.split()
key="rds.get_from_cms[acs_rds,%s,%s]"%(arg1,rds[0])
%(rds[1],arg1)
print key,name
result=create_item(name,key) #调用添加函数。
print result
#conf
实例id 实例名称
一些Zabbix相关教程集合:
Ubuntu 14.04下Zabbix2.4.5 源码编译安装 .com/Linux/2015-05/117657.htm
CentOS 7 LNMP环境搭建Zabbix3.0