Python获取zabbix问题触发器

news/2024/12/2 22:46:26/

背景:阿里云的ECS服务器因为阿里云升级插件,导致安全防护程序重启,产生不同的端口。导致低自动发现注册的端口 大量报警。

解决:杀掉关于因为非业务 变更的端口检测的触发器。

相关文档:

Zabbix监控之主机端口监控自动发现

zabbix监控端口原理

一个个去添加listen监控tcp的话不现实啊,还是也搞自动发现吧

分割下来也是2步啊

第一步脚本丢zabbix-agent下产生自定义键值

第二步不就是zabbix-server添加自动发现绑定这个键值咯

 

什么是安骑士Agent插件?

Agent 插件_云安全中心(安骑士)-阿里云帮助中心

解决思路

1、根据zabbix的api 获取的token

2、根据token获取到问题主机的触发器id

3、根据触发器id 删除相关的触发器,

4、消停大面积的告警

zabbix相关的API文档 可以查询官方文档或者博客

https://www.cnblogs.com/rxysg/p/15700912.html 

Python调用Zabbix API接口批量修改(禁用/启用)触发器trigger_啥是比亚的技术博客_51CTO博客

1、获取zabbix的token 

# -*- coding: utf-8 -*-
# @Time    : 2023/2/17 16:45
# @Author  : 南宫乘风
# @File    : zabbix_trigger.py
# @Software: PyCharm
import json
import os
import requestsurl = "http://ip/zabbix/api_jsonrpc.php"  # 此处域名修改为相应的地址
headers = {'Content-Type': 'application/json-rpc'
}tokens = '97553b7342457602a0a6452f0058c0ed'def token_get():  # 根据账号密码获取tokendata = {"jsonrpc": "2.0","method": "user.login","params": {"user": "Admin",  # zabbix管理员用户名"password": "密码"  # 账户密码},"auth": None,"id": 1}json_data = json.dumps(data)req = requests.post(url, data=json_data, headers=headers)js_req = req.json()print(js_req['result'])return js_req['result']

2、获取zabbix有问题主机触发器的id


def hosts_get(token):  # 获取有问题主机的触发器id# data = {#     "jsonrpc": "2.0",#     "method": "host.get",#     "params": {#         "output": ["hostid", "name"],#         "filter": {#             # 筛选条件#             "value": 1,  # value值为1表示有问题#             "status": 0  # status为0表示已启用的trigger#         },#     },##     "auth": token,#     "id": 1# }data = {"jsonrpc": "2.0","method": "trigger.get","params": {# output表示输出结果包含参数有哪些"output": ["triggerid","description","status","value","priority","lastchange","recovery_mode","hosts","state",],"selectHosts": "hosts",  # 需包含主机ID信息,以便于根据主机ID查询主机信息"selectItems": "items","filter": {# 筛选条件"value": 1,  # value值为1表示有问题"status": 0  # status为0表示已启用的trigger},},"auth": token,  # 这里的auth就是登录后获取的'id': '1'  # 这个id可以随意}json_data = json.dumps(data)req = requests.post(url, data=json_data, headers=headers)js_req = req.json()print(len(js_req['result']), js_req['result'])id_list = []
#判断 有问题的地自动发现的端口for item in js_req['result']:if 'PROCESS' in item['description']:id_list.append(item['triggerid'])print(len(id_list), id_list)return js_req['result']

3、删除触发器的ID

def del_trigger(id):id_one = []ids = id_one.append(str(id))values = {"jsonrpc": "2.0","method": "trigger.delete","params": id_one,  # 触发器id"auth": tokens,"id": 1}json_data = json.dumps(values)req = requests.post(url, data=json_data, headers=headers)js_req = req.json()print(js_req)# return js_req['result']

完正代码

# -*- coding: utf-8 -*-
# @Time    : 2023/2/17 16:45
# @Author  : 南宫乘风
# @Email   : 1794748404@qq.com
# @File    : zabbix_trigger.py
# @Software: PyCharm
import json
import os
import requestsurl = "http://ip/zabbix/api_jsonrpc.php"  # 此处域名修改为相应的地址
headers = {'Content-Type': 'application/json-rpc'
}tokens = '97553b7342457602a0a6452f0058c0ed'def token_get():  # 根据账号密码获取tokendata = {"jsonrpc": "2.0","method": "user.login","params": {"user": "Admin",  # zabbix管理员用户名"password": "密码"  # 账户密码},"auth": None,"id": 1}json_data = json.dumps(data)req = requests.post(url, data=json_data, headers=headers)js_req = req.json()print(js_req['result'])return js_req['result']def hosts_get(token):  # 获取所有主机信息# data = {#     "jsonrpc": "2.0",#     "method": "host.get",#     "params": {#         "output": ["hostid", "name"],#         "filter": {#             # 筛选条件#             "value": 1,  # value值为1表示有问题#             "status": 0  # status为0表示已启用的trigger#         },#     },##     "auth": token,#     "id": 1# }data = {"jsonrpc": "2.0","method": "trigger.get","params": {# output表示输出结果包含参数有哪些"output": ["triggerid","description","status","value","priority","lastchange","recovery_mode","hosts","state",],"selectHosts": "hosts",  # 需包含主机ID信息,以便于根据主机ID查询主机信息"selectItems": "items","filter": {# 筛选条件"value": 1,  # value值为1表示有问题"status": 0  # status为0表示已启用的trigger},},"auth": token,  # 这里的auth就是登录后获取的'id': '1'  # 这个id可以随意}json_data = json.dumps(data)req = requests.post(url, data=json_data, headers=headers)js_req = req.json()print(len(js_req['result']), js_req['result'])id_list = []for item in js_req['result']:if 'PROCESS' in item['description']:id_list.append(item['triggerid'])print(len(id_list), id_list)return js_req['result']#这边我做了个调试,如果想直接一次运行成功,建议自己改动 启动是的代码id_lists = ['21284', '21244', '21249', '21275', '21264', '21278', '21262', '21263', '21266', '21270', '21272', '21276','21277', '21279', '21267', '21269', '21254', '21282', '21287', '21268', '21273', '21274', '21285', '21289','21283', '21286', '21290', '21251', '21250', '21243']def del_trigger(id):id_one = []ids = id_one.append(str(id))values = {"jsonrpc": "2.0","method": "trigger.delete","params": id_one,  # 触发器id"auth": tokens,"id": 1}json_data = json.dumps(values)req = requests.post(url, data=json_data, headers=headers)js_req = req.json()print(js_req)# return js_req['result']for i in id_lists:del_trigger(i)


http://www.ppmy.cn/news/26199.html

相关文章

java8转换数组。找到最接近指定数据

List<String> lsstrArrays.asList(arear);//数组转listList<String> listWithoutNulls lsstr.stream().filter(Objects::nonNull)//list去掉空值.collect(Collectors.toList());String[] toBeStored new String[listWithoutNulls.size()];//list转数组listWithou…

学习 Python 之 Pygame 开发坦克大战(三)

学习 Python 之 Pygame 开发坦克大战&#xff08;三&#xff09;坦克大战物体碰撞检测编写1. 实现敌方坦克与我方坦克间的碰撞2. 实现敌方坦克间的碰撞3. 实现玩家子弹与敌方坦克间的碰撞4. 实现敌方子弹与我方坦克间的碰撞 和 玩家复活5. 爆炸效果类6. 为子弹爆炸添加爆炸效果…

【数据结构】——队列

文章目录前言一.什么是队列&#xff0c;队列的特点二、队列相关操作队列的相关操作声明队列的创建1.队列的初始化2.对队列进行销毁3.判断队列是否为空队列4.入队操作5.出队操作6.取出队头数据7. 取出队尾数据8.计算队伍的人数总结前言 本文章讲述的是数据结构的特殊线性表——…

管理会计报告和财务报告的区别

财务会计报告是给投资人看的&#xff0c;可以反映公司总体的盈利能力。不过&#xff0c;我们回顾一下前面“第一天”里面提到的问题。如果你是公司的产品经理&#xff0c;目前有三个产品在你的管辖范围内。上级给你一笔新的资金&#xff0c;这笔资金应该投到哪个产品上&#xf…

华为OD机试 - 叠放书籍(Python) | 机试题算法思路 【2023】

最近更新的博客 华为OD机试 - 寻找路径 | 备考思路,刷题要点,答疑 【新解法】 华为OD机试 - 五键键盘 | 备考思路,刷题要点,答疑 【新解法】 华为OD机试 - IPv4 地址转换成整数 | 备考思路,刷题要点,答疑 【新解法】 华为OD机试 - 对称美学 | 备考思路,刷题要点,答疑 …

centos7安装RabbitMQ

1、查看本机基本信息 查看Linux发行版本 uname -a # Linux VM-0-8-centos 3.10.0-1160.11.1.el7.x86_64 #1 SMP Fri Dec 18 16:34:56 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux cat /etc/redhat-release # CentOS Linux release 7.9.2009 (Core)2、创建创建工作目录 mkdir /…

就业大山之下的网络安全:安逸的安服仔

从去年开始&#xff0c;各个互联网大厂就接二连三的放出了裁员消息&#xff0c;整个互联网行业好像都处于寒冬状态。微博、小米、滴滴、知乎、拼多多等在内的一大批互联网知名企业&#xff0c;也相继传出“人员优化”的消息。 除了国内市场的萧条&#xff0c;国外市场也是不容…

day 31 13届其他真题

https://www.lanqiao.cn/problems/?sortstudents_count&category_id3&difficulty30&tags2022&status1求和Sa1⋅a2a1⋅a3⋯a1⋅ana2⋅a3⋯an−2⋅an−1an−2⋅anan−1⋅an化简 a1 * (a2 a3 ... an) a2 * (a3 a4 ... an) ... an-1 * (an)#include<b…