zabbix api 设置维护模式

  1. 通过zabbix提供的api进行维护模式的设置

#!/usr/bin/env python
# -*-coding:utf-8-*-
import urllib
import urllib2
import json
import sys
import platform
import time

def auth(uid, username, password, api_url):
    """
    zabbix认证
    :param uid:
    :param username:
    :param password:
    :return:
    """
    dict_data = {}
    dict_data[‘method‘] = ‘user.login‘  # 方法
    dict_data[‘id‘] = uid  # 用户id
    dict_data[‘jsonrpc‘] = "2.0"  # api版本
    dict_data[‘params‘] = {"user": username, "password": password}  # 用户账号密码
    jdata = json.dumps(dict_data)  # 格式化json数据
    content = post_data(jdata, api_url)  # post json到接口
    return content  # 返回信息

def post_data(jdata, url):
    """
    POST方法
    :param jdata:
    :param url:
    :return:
    """
    req = urllib2.Request(url, jdata, {‘Content-Type‘: ‘application/json‘})
    response = urllib2.urlopen(req)
    # content = response.read()
    content = json.load(response)
    return content

def create_maintenance(name, hostid, active_since, active_till, period, auth_code, api_url):
    """
    create maintenance
    :return:
    """
    dict_data = {}
    dict_data[‘method‘] = ‘maintenance.create‘  # 方法
    dict_data[‘id‘] = uid  # 用户id
    dict_data[‘jsonrpc‘] = "2.0"  # api版本
    dict_data[‘auth‘] = auth_code  # api版本
    dict_data[‘description‘] = "UPDATE" + hostid  # api版本
    # host
    hostids = [hostid]
    # timeperiods
    timeperiods = [{"timeperiod_type": 0, "start_time": 64800, "period": period}]
    dict_data[‘params‘] = {"name": name, "active_since": active_since, "timeperiods": timeperiods,
                           "active_till": active_till, "hostids": hostids}  # 用户账号密码
    jdata = json.dumps(dict_data)  # 格式化json数据
    content = post_data(jdata, api_url)  # post json到接口
    print content
    return content  # 返回信息

def get_hostid(hostname, auth_code, uid, api_url):
    """
    use hostname get hostid
    :param hostname:
    :param auth:
    :param uid:
    :return:
    """
    dict_data = {}
    dict_data[‘method‘] = ‘host.getobjects‘  # 方法
    dict_data[‘id‘] = uid  # 用户id
    dict_data[‘jsonrpc‘] = "2.0"  # api版本
    dict_data[‘params‘] = {"name": hostname}  # 主机名
    dict_data[‘auth‘] = auth_code  # auth串
    jdata = json.dumps(dict_data)  # 格式化json数据
    content = post_data(jdata, api_url)  # post json到接口
    print content
    return content  # 返回信息

def logout(uid, auth_code, api_url):
    """
    退出
    :param uid:
    :param auth_code:
    :return:
    """
    dict_data = {}
    dict_data[‘method‘] = ‘user.logout‘  # 方法
    dict_data[‘id‘] = uid  # 用户id
    dict_data[‘jsonrpc‘] = "2.0"  # api版本
    dict_data[‘params‘] = []
    dict_data[‘auth‘] = auth_code  # auth串
    jdata = json.dumps(dict_data)  # 格式化json数据
    content = post_data(jdata, api_url)  # post json到接口
    return content  # 返回信息

if __name__ == ‘__main__‘:
    # user info
    uid = 1 # 用户ID
    username = ‘admin‘
    password = ‘123456‘
    api_url = "http://192.168.1.100/api_jsonrpc.php"
    res = auth(1, username, password, api_url)  # 认证
    if res[‘result‘]:
        auth_code = res[‘result‘]  # 认证串
        hostname = platform.node()  # 主机名
        res = get_hostid(hostname, auth_code, uid, api_url)
        if res[‘result‘]:
            period = 600  # 维护时长
            active_since = int(time.time())  # 开始时间
            active_till = int(time.time()) + period  # 结束时间
            hostid = res[‘result‘][0][‘hostid‘]  # 主机
            res = create_maintenance(‘AutoMaintenance_‘ + hostname + ‘_‘ + str(active_since), hostid, active_since, active_till, period,
                                     auth_code, api_url)  # 创建维护
            logout(uid, auth_code, api_url)  # 退出登录
            print res
    else:
        pass

需要修改uid、username、password、api_url以及res中的auth函数的uid值,通过修改period的值来修改维护时长。

该脚本通过platform模块获取到agent的主机名,确保server端的主机名与客户端一致,且存在,否则设置不成功。

设置完成后可在Configuration->Maintenance页面中查看设置的维护模板。

可以通过在Configuration->Hosts页面中查看是否生效。

时间: 2024-08-05 01:50:07

zabbix api 设置维护模式的相关文章

批量启用SCOM代理的维护模式

一.单台设置维护模式 $MachineName = "a.b.local" #获取所有SCOM组件的类的实力 Get-SCOMClass -Name "*Windows*" | Get-SCOMClassInstance #获取名称为$MachineName的SCOM组件类的实例 $Instance = Get-SCOMClassInstance -Name $MachineName #设置维护时间持续10分钟 $Time = ((Get-Date).AddMinu

ansible+jenkins实现zabbix维护模式添加

##主要过程## 1. zabbix 维护模式通过ansible的 zabbix_maintenance 模块来实现 2. jenkins 调用ansible执行playbook ##最终效果##用户可多选应用组,设置维护时长,最终确认操作. ##具体实现##1.一些安全选项,和丢弃策略: 2.设置参数Influence,用来提供多选项,最终用户可选择业务范围,此处插件名称是:Extended Choice Parameter 3.设置文本参数Periods,用来提供时长,文本参数的用意在于让用

zabbix api的使用

1.zabbix api介绍 Zabbix API允许以编程方式检索和修改Zabbix的配置,并提供对历史数据的访问.它广泛用于: 创建新的应用程序以使用Zabbix 将Zabbix与第三方软件集成 自动执行常规任务 Zabbix API是基于Web的API,作为Web前端的一部分提供.它使用JSON-RPC 2.0协议,这意味着两件事: 该API包含一组独立的方法: 客户端和API之间的请求和响应使用JSON格式进行编码. 调用api的过程:发送一个http请求,请求方法,提交数据,请求url

用zabbix生成awstats图表以及通过Python调zabbix API自动化操作

awstats作为一款日志分析软件,功能不错,但是界面过于简单,也没有图表功能,这里我采取了一种变通的方法,将awstats的分析结果(pv.hits(文件数).bandwidth.visits(独立ip))添加到zabbix,并通过zabbix生成趋势图表. 在前两篇文章中,我们队awstats的使用及其工作方式进行了简明扼要的介绍:awstats对每个站点进行分析之后,会生成一个"awstats012016.txt"格式的"数据库"文件:awstats的展示页面

zatree插件优化:支持HTTP Basic Authorization认证访问zabbix API

zatree是监控软件zabbix的一个插件,主要功能是提供host group的树形展示和在item里指定关键字查询及数据排序. zatree项目地址https://github.com/spide4k/zatree,安装方法进到不同版本目录看readme. 最近遇到一个问题,当zabbix的web端使用了http基本认证方式的时候,zatree插件不能正常调用zabbix的api,导致报错. 查看错误信息方法:打开php的显示错误, # vi /etc/php.ini display_err

WSFC 维护模式操作粒度控制

之前曾经在WSFC日常管理操作篇和大家介绍过WSFC的维护模式,简单来说,从WSFC 2012开始,通过维护模式可以帮我们完成暂停节点,自动排水,自动回复的半自动化维护 回顾一下WSFC的维护模式运作流程,此处以WSFC 2012开始为例,在WSFC 2012之前,群集的维护模式仅能暂停节点,但无法自动移动负载 1.手动放置节点为暂停模式 2.节点根据群集角色优先级,参考放置策略,依次排水处理群集负载至合适节点 3.负载都排水到该去的节点后,节点宣告为暂停,不接受任何负载的迁移 4.维护完成后参

(二)Python调用Zabbix api之从入门到放弃——登录并获取身份验证令牌

访问zabbix api的URL是: http://x.x.x.x/zabbix/api_jsonrpc.php x.x.x.x可能是你的IP或者域名 访问流程概览: 1.首先登录 2.认证成功后zabbix server返回一个token 3.带着这个token去访问各种数据,做各种操作 4.完毕! 一.用RESTClient进行登录 在json请求的正文中,具有以下属性: jsonrpc - API使用的JSON-RPC协议的版本; Zabbix API实现JSON-RPC版本2.0; me

调用zabbix API实现批量管理主机及个监控项

首先贴上zabbix官网和中文官网的地址: https://www.zabbix.com/documentation/3.4/manual/api/reference/item/object https://www.zabbix.com/documentation/3.4/zh/manual/api 任何时候任何难题在官网上几乎都能找到答案 首先,我们想用利用zabbix的restful api来访问zabbix,肯定是需要登陆认证的.在zabbix的后续操作中,必须要有一个TOKEN,这也是官

青蛙学Linux—Zabbix Agent的主动模式和被动模式

1.为什么要使用Zabbix Agent的主动模式? 默认情况下,Zabbix Agent运行在被动模式.在这种模式下,Zabbix Server会去每个Zabbix Agent上抓取数据.这种模式在Zabbix Server监控主机少时,不会出现问题.但是,当监控的主机数量过多时,使用这种模式将照成严重的性能问题,表现如下: Zabbix Web操作卡顿,出现502错误 监控数据不准确,报警超时 图层断裂 Zabbix Server开启的poller进程过多,就算减少监控项数量,新加入一定量的