zabbix调用api实现主机批量添加监控项和触发器
准备操作:
1.先认证api
2.获取到hostid
3.给主机批量添加监控端口和触发器
#!/bin/bash port=" 80 需要监控的端口 8080
3306 " i=0
for node_port in $port;do name=( nginx 对应端口定义名称 tomcat
mysql
) #echo ${name[i++]} me=${name[i++]} curl -s -XPOST -H 'Content-Type: application/json-rpc' -d ' { "jsonrpc": "2.0", "method": "item.create", "params": { "name": "'$me'_'${node_port}' ", 设置监控项的名称 "key_": "net.tcp.listen['${node_port}']", 设置监控项的key "hostid": "10397", 设置主机id "type": 0, "value_type": 3, "interfaceid": "7", 设置接口接口标识符 "delay": 30 }, "auth": "81326093a70bc5fa130d2bd7fb369632", 设置认证令牌 "id": 1 }' http://192.168.12.2:20002/api_jsonrpc.php | python -m json.tool 设置zabbix_server地址 curl -s -XPOST -H 'Content-Type: application/json-rpc' -d ' { "jsonrpc": "2.0", "method": "trigger.create", "params": { "description": " '$me'_'${node_port}'_error on {HOST.NAME}", 设置触发器的名称 "expression": "{192.168.12.3:net.tcp.listen['${node_port}'].last()}=0", 设置触发器的表达式 "priority": "2", 设置事件等级 "recovery_mode": "1", "recovery_expression": "{192.168.12.3:net.tcp.listen['${node_port}'].last()}=1" 设置触发器的恢复表达式 }, "auth": "81326093a70bc5fa130d2bd7fb369632", 设置认证令牌 "id": 1 }' http://192.168.12.2:20002/api_jsonrpc.php | python -m json.tool 设置zabbix_server地址 done
以上就是给某个主机批量添加监控项和触发器,解决zabbix手动添加相同监控项的痛点,批量添加主机,添加模板在下面章节也会一一介绍的,感谢大家支持。