Zabbix自动发现:python-json模块应用介绍
一.JSON模块介绍
json模块是python内置的库,其主要功能是将序列化数据从文件里读取出来或者存入文件。该模块有四个方法:dump()、load()、dumps()、loads(),其中dump()是将数据存入文件中,load()是用于读取文件;而dumps()和loads()是对python对象进行操作。dumps()是将python对象编码成json字符串,loads()是将json字符串解码成python对象。
json模块的操作使用相对较为简单,在使用的时候直接导入就可以。在zabbix运维中,常见的自动发现场景,使用python的json模块,处理起数据,会非常的简单。
二.应用场景示例
以下结果,为调用阿里云的接口数据作为演示,相关敏感数据已做脱敏处理。
2.1自动发现主机
2.1.1 python处理脚本
#!/usr/bin/env python
#coding=utf-8
from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.acs_exception.exceptions import ClientException
from aliyunsdkcore.acs_exception.exceptions import ServerException
from aliyunsdkcore.auth.credentials import AccessKeyCredential
from aliyunsdkcore.auth.credentials import StsTokenCredential
from aliyunsdkslb.request.v20140515.DescribeLoadBalancersRequest import DescribeLoadBalancersRequest
import json
# 这里填 ACCESS_KEY 和SECRET_KEY
credentials = AccessKeyCredential('', '')
# use STS Token
# credentials = StsTokenCredential('<your-access-key-id>', '<your-access-key-secret>', '<your-sts-token>')
# 这里填资源所属区域
client = AcsClient(region_id='cn-hangzhou', credential=credentials)
request = DescribeLoadBalancersRequest()
request.set_accept_format('json')
response = client.do_action_with_exception(request)
res = json.loads(response)
r = []
# 拼接成用于zabbix自动发现资源的格式 ,这里使用 LoadBalancerId 作为主机名称 LoadBalancerName 作为可见名称
for i in res['LoadBalancers']['LoadBalancer']:
buf = {'{#PROJECT}':'acs_slb_dashboard', '{#INSTANCE}':i['LoadBalancerId'], '{#INSTANCE_NANME}':i['LoadBalancerName']}
r.append(buf)
print(json.dumps({"data":r})
2.2.2 返回的原始数据
u'LoadBalancers': {u'LoadBalancer': [{u'BusinessStatus': u'Normal', u'CreateTimeStamp': 1665537209000, u'LoadBalancerStatus': u'active', u'PayType': u'PayOnDemand', u'InternetChargeType': u'4', u'VpcId': u'', u'RegionIdAlias': u'cn-hangzhou', u'Tags': {u'Tag': [{u'TagKey': u'ack.aliyun.com', u'TagValue': u'cc5bc5d2683a44ae9b1a8eb816'}, {u'TagKey': u'kubernetes.do.not.delete', u'TagValue': u'a2d1f65d7fb1d468197ad23ba183fc45'}]}, u'RegionId': u'cn-hangzhou', u'ResourceGroupId': u'rg-acfmxrtftvdl', u'InstanceChargeType': u'PayBySpec', u'VSwitchId': u'', u'InternetChargeTypeAlias': u'paybytraffic', u'Address': u'120.26.67.000', u'AddressIPVersion': u'ipv4', u'LoadBalancerSpec': u'slb.s1.small', u'LoadBalancerId': u'lb-bp1py79ytly0dl', u'AddressType': u'internet', u'MasterZoneId': u'cn-hangzhou-b', u'DeleteProtection': u'on', u'ModificationProtectionReason': u'managed.by.ack', u'SlaveZoneId': u'cn-hangzhou-g', u'Bandwidth': 5120, u'SpecBpsFlag': False, u'ModificationProtectionStatus': u'ConsoleProtection', u'NetworkType': u'classic', u'LoadBalancerName': u'a2d1f65d7fb1d468197ad23ba1', u'CreateTime': u'2022-10-12T09:13Z'}, {u'BusinessStatus': u'Normal', u'CreateTimeStamp': 1665480995000, u'LoadBalancerStatus': u'active', u'InternetChargeType': u'4', u'VpcId': u'vpc-bp1y7ysljuhh0mgz', u'RegionIdAlias': u'cn-hangzhou', u'Tags': {u'Tag': [{u'TagKey': u'ack.aliyun.com', u'TagValue': u'cc5bc5d2683a44ae9b1a8eb816'}]}, u'RegionId': u'cn-hangzhou', u'ResourceGroupId': u'rg-acfmxrtftvdlxuq', u'InstanceChargeType': u'PayBySpec', u'VSwitchId': u'vsw-bp19iupfrliiqgwjnnxoc', u'InternetChargeTypeAlias': u'paybytraffic', u'Address': u'192.168.33.000', u'AddressIPVersion': u'ipv4', u'LoadBalancerSpec': u'slb.s2.small', u'LoadBalancerId': u'lb-bp1wjgyg379yn', u'AddressType': u'intranet', u'MasterZoneId': u'cn-hangzhou-k', u'DeleteProtection': u'on', u'PayType': u'PayOnDemand', u'SlaveZoneId': u'cn-hangzhou-j', u'Bandwidth': 5120, u'SpecBpsFlag': False, u'ModificationProtectionStatus': u'ConsoleProtection', u'NetworkType': u'vpc', u'LoadBalancerName': u'ManagedK8SSlbIntranet-cc5bc5d2683a44ae9b1a8eb80', u'CreateTime': u'2022-10-11T17:36Z'}]}, u'TotalCount': 2, u'PageNumber': 1, u'RequestId': u'034B0F9E-87DE-59F4-9406-456B.', u'PageSize': 2}
2.2.3 处理后的数据
{"data": [{"{#PROJECT}": "acs_slb_dashboard", "{#INSTANCE_NANME}": "a2d1f65d7fb1d468197ad23b", "{#INSTANCE}": "lb-bp1py79ytly0dlt"}, {"{#PROJECT}": "acs_slb_dashboard", "{#INSTANCE_NANME}": "ManagedK8SSlbIntranet-cc5bc5d2683a44ae9b1a8eb", "{#INSTANCE}": "lb-bp1wjgyg379ynw61"}]}
三、结论
对比shell,Python的json模块在数据处理方面,其脚本的可读性、简洁性都会有所提升,并且处理过程也无需花费过多的事件写处理过程的代码,能有效提升运维人员的工作效率。
本期的分享内容到这就结束了。大家好,我是乐乐,专注IT运维技术研究与分享,关注我,学习更多Zabbix使用技巧。同时欢迎小伙伴们到乐维社区留言提问,共同探讨Zabbix技术问题。
Zabbix自动发现:python-json模块应用介绍的更多相关文章
- zabbix自动发现监控mysql
一. 数据库给只读权限 1.1 grant usage on *.* to 'zabbix'@'127.0.0.1' identified by 'zabbix'; flush privileges; ...
- 转 zabbix 自动发现和 zabbix自定义用户key与参数User parameters
########31 https://www.cnblogs.com/yjt1993/p/10883345.html 1.概念 在配置Iterms的过程中,有时候需要对类似的Iterms进行添加,这些 ...
- zabbix/自动发现规则
对于zabbix 我们并不陌生 他是开源的监控系统,现在的一部分企业都在用zabbix,今天给大家分享的是企业级监控zabbix的自动发现规则,有了它我们自定义健康的时候根据宏值可以让他自动发现对 ...
- zabbix自动发现主机并加入组绑定模板
在被监控主机多的情况下,怎样将这些主机加入zabbix server进行监控呢?下面将介绍下zabbix自动发现功能 1.创建自动发现规则 创建“规则名称,配置ip范围及检查方式”,点击“增加”,完成 ...
- zabbix 自动发现
转自:https://blog.csdn.net/yyy72999/article/details/76065374 zabbix自动发现/zabbix自动发现规则 置顶2017年07月25日 14: ...
- zabbix自动发现功能实现批量web url监控
需求: 现在有大量url需要监控,形式如http://www.baidu.com ,要求url状态不为200即报警. 需求详细分析: 大量的url,且url经常变化,现在监控用的是zabbix,如果手 ...
- python shutil模块简单介绍
python shutil模块简单介绍 简介 shutil模块提供了大量的文件的高级操作.特别针对文件拷贝和删除,主要功能为目录和文件操作以及压缩操作. shutil 模块方法: copy(src, ...
- zabbix 自动发现 相关
zabbix自动发现,是zabbix精髓所在. 生产中,一台服务器上可能会存在多个监控实例,比如:A服务器2个,B服务器4个, C服务器1个.单单靠套模板来完成监控,做法那太糟糕了.比如小明有100台 ...
- Zabbix自动发现之fping
原文发表于cu:2016-06-21 Zabbix自动发现功能从配置流程上比较简单:Discovery与Action. 在做Zabbix的自动发现验证时,使用"ICMP ping" ...
- python json模块(15)
JSON 的全称是 JavaScript Object Notation,即 JavaScript 对象符号,它是一种轻量级.跨平台.跨语言的数据交换格式,其设计意图是把所有事情都用设计的字符串来表示 ...
随机推荐
- window下部署单机hadoop环境
window本地部署单机hadoop,修改配置文件和脚本如下,只记录关键配置和步骤,仅供参考 hadoop-2.6.5 spark-2.3.3 1.配置文件core-site.xml <conf ...
- centos编译安装tcpdump
环境 CentOS Linux release 7.9.2009 (Core) 准备安装包 libpcap-1.5.3.tar.gz tcpdump-4.9.2.tar.gz 下载地址:https:/ ...
- Unity框架中的核心类
组件:Component 在Unity中,所有的游戏对象都可以挂载组件.组件控制着游戏对象的行为和外观,例如渲染.动画.碰撞检测等. 而Component就是组件的基类,提供了一些通用的方法和属性,例 ...
- Java微服务SpringCloud+Uniapp+Vue3+Element Plus开源BizSpring商城
产品介绍 BizSpring电商平台概述 BizSpring电商平台,是基于最新Spring Cloud 微服务架构开发的多语言电商平台,使用领先的 Vue3.0+ElementPlus + unia ...
- 借助Rich库实现Pandas DataFrame颜值升级
pandas的DataFrame功能强大自不必说,它可以帮助我们极大的提高统计分析的效率. 不过,使用DataFrame开发我们的分析程序的时候,经常需要打印出DataFrame的内容,以验证和调试数 ...
- Pandas 人口密度案例分析
from turtle import left import pandas as pd """ 需求: 1.导入文件,查看原始数据 2.将人口数据和各州简称数据进行合并 ...
- 序列化协议:Protobuf入门
偶然在网上清华大学电子系科协软件部2023暑期培训的内容中发现了这个东西,后面随着了解发现以后学习有关项目时会用到,便写个随笔记录一下这次学习的经历.作为一种序列化协议,与使用文本方式存储的xml.j ...
- Js获取数据类型
Js获取数据类型 JavaScript有着七种基本类型String.Number.Boolean.Null.Undefined.Symbol.Object,前六种为基本数据类型,Object为引用类型 ...
- Vuepress + GitHub Actions实现文档博客自动部署
说明 接着我上一篇文章,已经使用vuepress+github pages搭建好了自己的文档博客,并且可以在本地打包上传后就可以在pages上查看更新内容.但是有1个比较明显的缺点:打包速度并不快!! ...
- Spring Boot整合JWT实现接口访问认证
最近项目组需要对外开发相关API接口,需要对外系统进行授权认证.实现流程是先给第三方系统分配appId和appSecret,第三方系统调用我getToken接口获取token,然后将token填入Au ...