zabbix自动发现的python方式数据生成
前言
zabbix里面有个功能是自动发现,比如文件系统和网卡的获取的时候,因为预先无法知道这个网卡的名称,所以就有了这个自动发现的功能,这里我是因为要用到存储池的自动发现,所以需要对数据进行生成
实现
我们看下原生的接口的数据类型:
[root@lab8106 ~]# zabbix_get -s 127.0.0.1 -k "net.if.discovery"
{"data":[{"{#IFNAME}":"enp3s0"},{"{#IFNAME}":"virbr0-nic"},{"{#IFNAME}":"docker0"},{"{#IFNAME}":"enp4s0"},{"{#IFNAME}":"enp2s0f0"},{"{#IFNAME}":"enp2s0f1"},{"{#IFNAME}":"virbr0"},{"{#IFNAME}":"lo"}]}
数据为格式化好了的json数据,这个地方弄了好半天,因为网上很多人是用字符串拼接的方式,实际这个是字典嵌套了列表,列表又嵌套了字典,就是后面的地方开始没弄懂怎么有大括号的
我们同样的来看看ceph原生的命令的json接口
[root@lab8106 ~]# ceph -s -f json
{"health":{"health":{"health_services":[{"mons":[{"name":"lab8106","kb_total":52403200,"kb_used":32905432,"kb_avail":19497768,"avail_percent":37,"last_updated":"2016-10-28 01:15:29.431854","store_stats"{"bytes_total":20206814,"bytes_sst":16929998,"bytes_log":3080192,"bytes_misc":196624,"last_updated":"0.000000"},"health":"HEALTH_OK"}]}]},"timechecks":{"epoch":4,"round":0,"round_status":"finished"},"summary":[],"overall_status":"HEALTH_OK","detail":[]},"fsid":"fae7a8db-c671-4b45-a784-ddb41e633905","election_epoch":4,"quorum":[0],"quorum_names":["lab8106"],"monmap":{"epoch":1,"fsid":"fae7a8db-c671-4b45-a784-ddb41e633905","modified":"2016-10-19 22:26:28.879232","created":"2016-10-19 22:26:28.879232","mons":[{"rank":0,"name":"lab8106","addr":"192.168.8.106:6789\/0"}]},"osdmap":{"osdmap":{"epoch":63,"num_osds":2,"num_up_osds":2,"num_in_osds":2,"full":false,"nearfull":false,"num_remapped_pgs":0}},"pgmap":{"pgs_by_state":[{"state_name":"active+clean","count":80}],"version":19174,"num_pgs":80,"data_bytes":45848191333,"bytes_used":45966077952,"bytes_avail":551592390656,"bytes_total":597558468608},"fsmap":{"epoch":5,"id":1,"up":1,"in":1,"max":1,"by_rank":[{"filesystem_id":1,"rank":0,"name":"lab8106","status":"up:active"}]}}
同样也是这个类型的数据,好了,这里直接上代码:
def get_cluster_pools():
try:
pool_list=[]
data_dic = {}
cluster_pools = commands.getoutput('timeout 10 ceph osd pool ls -f json 2>/dev/null')
json_str = json.loads(cluster_pools)
for item in json_str:
pool_dic = {}
pool_dic['{#POOLNAME}'] = str(item)
pool_list.append(pool_dic)
data_dic['data'] = pool_list
return json.dumps(data_dic,separators=(',', ':'))
except:
return 0
输出如下
{"data":[{"{#POOLNAME}":"rbd"},{"{#POOLNAME}":"metedata"},{"{#POOLNAME}":"data"}]}
跟上面的格式一样了,关键在对字典进行赋值的处理,然后进行一个空格处理就完成了
总结
还是接触的太少,造成简单的处理都需要花费比较久的时间
变更记录
| Why | Who | When |
|---|---|---|
| 创建 | 武汉-运维-磨渣 | 2016-10-28 |
zabbix自动发现的python方式数据生成的更多相关文章
- 转 zabbix 自动发现和 zabbix自定义用户key与参数User parameters
########31 https://www.cnblogs.com/yjt1993/p/10883345.html 1.概念 在配置Iterms的过程中,有时候需要对类似的Iterms进行添加,这些 ...
- zabbix自动发现主机并加入组绑定模板
在被监控主机多的情况下,怎样将这些主机加入zabbix server进行监控呢?下面将介绍下zabbix自动发现功能 1.创建自动发现规则 创建“规则名称,配置ip范围及检查方式”,点击“增加”,完成 ...
- Zabbix自动发现之fping
原文发表于cu:2016-06-21 Zabbix自动发现功能从配置流程上比较简单:Discovery与Action. 在做Zabbix的自动发现验证时,使用"ICMP ping" ...
- zabbix自动发现监控mysql
一. 数据库给只读权限 1.1 grant usage on *.* to 'zabbix'@'127.0.0.1' identified by 'zabbix'; flush privileges; ...
- zabbix自动发现功能实现批量web url监控
需求: 现在有大量url需要监控,形式如http://www.baidu.com ,要求url状态不为200即报警. 需求详细分析: 大量的url,且url经常变化,现在监控用的是zabbix,如果手 ...
- zabbix/自动发现规则
对于zabbix 我们并不陌生 他是开源的监控系统,现在的一部分企业都在用zabbix,今天给大家分享的是企业级监控zabbix的自动发现规则,有了它我们自定义健康的时候根据宏值可以让他自动发现对 ...
- zabbix 自动发现
转自:https://blog.csdn.net/yyy72999/article/details/76065374 zabbix自动发现/zabbix自动发现规则 置顶2017年07月25日 14: ...
- zabbix 自动发现 相关
zabbix自动发现,是zabbix精髓所在. 生产中,一台服务器上可能会存在多个监控实例,比如:A服务器2个,B服务器4个, C服务器1个.单单靠套模板来完成监控,做法那太糟糕了.比如小明有100台 ...
- zabbix自动发现主机(转)
zabbix自动发现主机 2018年06月15日 18:02:52 loyal-Wang 阅读数:817更多 个人分类: zabbix 版权声明:本文为博主原创文章,转载请注明出处. https: ...
随机推荐
- Token 、Cookie和Session的区别
本文转至http://blog.csdn.net/tobetheender/article/details/52485948 https://blog.csdn.net/axin66ok/articl ...
- spring boot: 通过filter过滤器实现中文的简体繁体字符集转换(spring boot 2.3.1)
一,为什么要使用filter来实现简繁体转换? 项目中有时会有同时支持简体和繁体两种字符集的要求, 或者搜索引擎有支持繁体输入字符的需求. 针对繁体字符的显示, 我们通常会在数据库和模板.文案配置中默 ...
- centos 下安装redis 通过shell脚本
#! /bin/bash echo -e "开始安装redis服务\n" download_url=http://download.redis.io/releases/redi ...
- .net 添加打印 源代码
<div style="margin-top: auto; text-align: center;" id="buttondiv"> <obj ...
- 手撸了一个HTTP框架:支持Sprng MVC、IOC、AOP,拦截器,配置文件读取...
https://github.com/Snailclimb/jsoncat :仿 Spring Boot 但不同于 Spring Boot 的一个轻量级的 HTTP 框架 距离上一次给小伙伴们汇报简易 ...
- 逻辑运算 - js笔记
&& 与 || undefined null NaN "" 0 => false 在 && 中,当第一个值为false停止运行,返回该值,即遇 ...
- eclipse 包与子包的视图显示方式切换
上图Package Presentation ---> Hierarchical(如下图显示父包与子包) 参考:https://zhidao.baidu.com/question/2205086 ...
- CorelDRAW x4 提示非法软件产品被禁用解决方法教程
偶尔翻开移动硬盘,找到这货,CorelDraw X4简体中文正式版.网上现在比较难下载得到了,X4是我最常用的一个.现在把它分享出来,有需要的可以去下载使用. CDR全名CorelDRAW ,是加拿大 ...
- js内建函数reduce()
reduce函数,是ECMAScript5规范中出现的数组方法.在平时的工作中,相信大家使用的场景并不多,一般而言,可以通过reduce方法实现的逻辑都可以通过forEach方法来变相的实现,虽然不清 ...
- react-native 常见问题
1.webpack使用babel-loader后编译报错 报错ERROR in ./entry.js Module build failed: SyntaxError: /Users/yixin/De ...