实际上从主机进入监控项界面,显示的才是真正的主机id

创建一个模板对应代码(可以用csv生成,用for循环)

相关参数:

# -*- coding: utf-8 -*
# -*- coding: gbk -*
'''
作者:刘恩东
时间:2019.7.27
联系:liu_endong@foxmail.com
环境:python2.7
'''import csv
import urllib2
import json
import requests
import numpy as npip = 'xxx.x.xxx.xxx'      #目标主机ip
# filename = '333.csv'       #需要导入的文件
url = 'http://xxx.x.xxx.xxx/api_jsonrpc.php'                #目标主机ip
headers = {'Content-Type': 'application/json-rpc'}
username = 'Admin'                                        #zabbix登陆账户
password = 'zabbix'                                      #zabbix登陆密码hostName = 'ActiveMq'                       #主机名
templateName = 'test11354135'                    #创建的模板名字  必须和已经存在的不同,这里需要一个判断函数,否则程序报错
groupName = 'Kafka'                         #主机群组名
login_user = 'test3331333313sdaa21323'                        #监控项名字 必须和已经存在的不同,这里需要一个判断函数,否则程序报错
log_user = 'vm.memory.siz41e333'       #监控项键值  必须和已经存在的不同,这里需要一个判断函数,否则程序报错
description = 'The login user is greater than 3  on {HOST.NAME}'   #触发器告警描述信息
expression =  '{Kafka:jmx["kafka.server:type=ReplicaManager,name=IsrShrinksPerSec","Count"].delta(900)}<>0 '   #触发器表达式#获取token
def requestJson(url,values):data = json.dumps(values)req = urllib2.Request(url, data, headers)response = urllib2.urlopen(req, data)output = json.loads(response.read())try:message = output['result']except:message = output['error']['data']print messagequit()return output['result']#获取auth_code
def authenticate(url, username, password):values = {'jsonrpc': '2.0','method': 'user.login','params': {'user': username,'password': password},'id': '0'}auth_code = requestJson(url,values)return auth_code  # 结果是一个token值:cc75ed2a314906a835ac0786266468ac#获取主机id 和 interfaceid
def get_host(auth,hostname):values = {"jsonrpc": "2.0","method": "host.get","params": {"output": ['name','hostid',],"filter": {"host": [hostname,]},"selectInterfaces": [  # 添加这个参数为了获取interfaceid的值"interfaceid","ip"],},"auth": auth,"id": 1}output = requestJson(url, values)interfaceid = output[0]['interfaces'][0]['interfaceid']hostid = output[0]['hostid']return {'interfaceid': interfaceid, 'hostid': hostid}#获取组id
def get_group(auth,group_name):values = {"jsonrpc": "2.0","method": "hostgroup.get","params": {"output": "extend","filter": {  # 如果没有filter 默认会获取所有组信息"name": [group_name,]}},"auth": auth,"id": 1}output = requestJson(url,values)return output[0]['groupid']#新建模板:模板必须至少关联一个主机组
def create_template(auth,template_name,gid,host_id):values = {"jsonrpc": "2.0","method": "template.create","params": {"host": template_name,"groups": {  # 模板关联的主机组(必须要有)"groupid": gid,},"hosts": [{"hostid": host_id}]  # 模板关联的主机# "hosts": [{"hostid": "10084"},{"hostid": "10090"}]  # 模板关联的主机},"auth": auth,"id": 1}output = requestJson(url,values)return output#1、根据模板名称检索
def get_templates_by_templatename(auth):values = {"jsonrpc": "2.0","method": "template.get","params": {"output": ['host', 'templateid'],"filter": {"host": [templateName,  # 要检索的模板名称]}},"auth": auth,"id": 1}output = requestJson(url,values)return output#创建监控项
def create_item(auth, item_name, item_key, hostid, interfaceid):values = {"jsonrpc": "2.0","method": "item.create","params": {"name": item_name,"key_": item_key,  # 键值必须和agent的key值相同"hostid": hostid,"type": 0,"value_type": 3,"interfaceid": interfaceid,# "applications": ["609","610"],  # 监控项可以归属默写 "应用集" 这里就不关联了"delay": "30s"},"auth": auth,"id": 1}output = requestJson(url,values)return output# 创建 一个/多个 触发器
def create_trigger(auth,description,expression):values = {"jsonrpc": "2.0","method": "trigger.create","params": [{"description": description,  # 名称:告警描述信息"expression": expression,  # 表达式"priority": "2",  # 设置告警级别(0:未分类; 1:信息; 2:警告; 3:一般严重 ...)},# {   # 创建多个只需加一个字典即可#     "description": "Too many processes on {HOST.NAME}",#     "expression": "{Linux server:proc.num[].avg(5m)}>300",# }],"auth": auth,"id": 4}output = requestJson(url,values)return output  # 运行后就可以在对应主机的监控项页面看到刚创建的监控项了auth = authenticate(url,username,password)
out_host = get_host(auth,hostName)
host_id = out_host['hostid']
interfaceid = out_host['interfaceid']
gid = get_group(auth,groupName)
# create_template(auth,templateName,gid,host_id)
out_template = get_templates_by_templatename(auth)
templateid = out_template[0]['templateid']
print(templateid)
print create_item(auth, login_user, log_user, templateid, interfaceid)
print create_trigger(auth,description,expression)

(zabix) python创建模板 监控项关联模板、触发器关联模板相关推荐

  1. zabbix模板_基于zabbix网页配置自定义tomcat监控模板--监控项、触发器

    概述 zabbix监控tomcat只有一个zabbix-java-gateway,可以部署在zabbix-sever端也可以部署在其他机器上,需要和zabbix-server网络可达.Zabbix-J ...

  2. 用python创建数据库监控平台(3)安装Python3.5

    本系列文章思路来自微信公众号:宅必备 1.解压包 [root@monit Python]# tar -xzf Python-3.5.2.tgz 2移动 [root@monit Python]# mv ...

  3. mysql libs 5.1.71_用python创建数据库监控平台(1)安装MySQL5.7

    本系列文章思路来自微信公众号:宅必备 1.先卸载原有版本mysql rpm -qa|grep mysql [root@monit usr]# rpm -qa|grep mysql mysql-5.1. ...

  4. 简单研究用于监控数通设备的Zabbix模板:Template Module Interfaces SNMP与Template Module EtherLike-MIB SNMP

    本人的工作环境中已经有一套Zabbix平台用于监控1000台数量以上的交换机,该运维平台主要有如下作用: 查找某个区域的某台设备IP地址以方便管理员远程登录.查看/修改设备配置: 通过SNMP检测设备 ...

  5. Zabbix监控自定义模板,自定义监控项以及图标显示

    [Zabbix监控部署安装]https://blog.csdn.net/ck784101777/article/details/102925367 一.何为模板 模板(template):可以应用到主 ...

  6. Zabbix配置模板监控指定服务器主机

    一.Zabbix监控指定服务器 第一里程:在指定服务器上安装zabbix客户端,即zabbix-agent 访问清华镜像站,找到zabbix-agent镜像 第一步 第二步 第三步 第四步 第五步 第 ...

  7. 利用zabbix自带模板监控网络设备及配置邮件告警

    网络设备配置snmp,这里我们用H3C设备举例,持续关注后续会更新如何创建自定义监控项 这里我们用Tempate Moudule Interfaces SNMP做示例,这个模板包括接口的状态.出入方向 ...

  8. @zabbix监控自定义监控项

    文章目录 一.自定义监控项-SSH 1.创建自定义的监控模板(模板.应用集.监控项等都可以根据规划自行创建) 2.创建自定义监控项 3.在server端测试键值 4.在web页面查看监测结果 5.关闭 ...

  9. 运维监控系统——配置服务监控项(Http,Nginx,MySQL)

    一.添加自带的http监控项 1.在浏览器中给server2添加http的监控项 http是zabbix自带的监控模版 配置 ->主机 -> server2 -> 模板 ->选 ...

最新文章

  1. 光缆能预警地震?谷歌做到了!毫秒级反应速度,140万公里海缆有望成为报警器...
  2. 多线程 并发编程 看了这篇 终于了解了
  3. 计算机在人力资源管理中的应用浅谈,计算机技术在人力资源管理工作中的应用.doc...
  4. 编程珠玑读书笔记之磁盘文件排序
  5. php 命令执行crud_使用活动记录执行CRUD
  6. Android 一直往文件写数据_对标苹果 AirDrop,Google 为安卓开发了一个文件传输利器...
  7. mysql int的长度
  8. cdn刷新api_【第1868期】闲话 CDN
  9. linux数据库哪个难,11 月数据库排名公布:前三难撼动
  10. 一篇文章带你快速弄清楚什么是终端
  11. Day.js 一个轻量级的 JavaScript 时间日期处理库
  12. tableau:人口金字塔图
  13. java后台证件号15转18位
  14. 粒子群算法的matlab实现
  15. 从键盘输入三角形的直角边,利用hypot()函数输出三角形的斜边
  16. Java实操演练1——简单图书管理系统的设计与实现
  17. Java代码实现单元测试
  18. ipad访问ftp文件服务器,ipad肿么访问ftp
  19. python如何输出多个星号_如何使用python输出连续星号?
  20. 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java哈尔滨市道路信息管理系统3msu1

热门文章

  1. Hadoop之FileSystem使用
  2. matlab中注水算法的实现和原理
  3. 浙江省11个地级市行政区划 (2023)
  4. 电脑卡顿,电脑为什么会卡?电脑卡顿应该怎么解决?
  5. axure流程图模式_PRD之道:活用Axure绘制高质量的业务流程图
  6. 5G/NR PDSCH之时域资源分配
  7. Abaqus、Marc以及UG许可证有冲突,只能打开其中某一个的解决方法
  8. 出雾更快安全好用,续航持久操作简单,摩飞除菌加湿器上手
  9. 树莓派屏幕显示不全 Screen Configuration无可用选项
  10. SH-PEG-Silane巯基-聚乙二醇-硅烷试剂简介Silane-PEG-SH