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: ...
随机推荐
- 0基础如何更快速入门Linux系统?学完Linux有哪些就业方向?
Linux系统是使用Linux内核及开源自由软件组成的一套操作系统,是一种类UNIX系统,其内核在1991年10月5日由林纳斯·托瓦兹首次发布. 它的主要特性:Linux文件一切皆文件.完全开源免费. ...
- golang拾遗:为什么我们需要泛型
从golang诞生起是否应该添加泛型支持就是一个热度未曾消减的议题.泛型的支持者们认为没有泛型的语言是不完整的,而泛型的反对者们则认为接口足以取代泛型,增加泛型只会徒增语言的复杂度.双方各执己见,争执 ...
- C#中的SqlBulkCopy批量插入数据
在C#中,我们可以使用sqlBulkCopy去批量插入数据,其他批量插入方法不在讨论. 1 /// <summary> 2 /// SqlBulkCopy批量插入数据 3 /// < ...
- [C#] (原创)一步一步教你自定义控件——03,SwitchButton(开关按钮)
一.前言 技术没有先进与落后,只有合适与不合适. 本篇的自定义控件是:开关按钮(SwitchButton). 开关按钮非常简单,实现方式也多种多样,比如常见的:使用两张不同的按钮图片,代表开和关,然后 ...
- kettle学习笔记(三)— 定时任务的脚本执行
kettle-定时任务 Kettle 的定时任务可以用kettle中的job工作来定时转换(缺点窗口不可关闭),同时也可以使用bat脚本来启动kettle的 '.ktr'转换. 注:这里对定时任务的时 ...
- vue 路由知识点(一级路由与二级路由嵌套)
本人小白一个,如果问题,麻烦大神指点, 一级路由: path:'/' 默认为显示; 二级路由: path: '',默认显示为index组件,因为二级路有没有写index组件,所以使用redirect: ...
- 论文解读《Plug-and-Play Priors for Model Based Reconstruction》
这篇论文主要概述了model-baesd的方法在解决图像恢复的逆问题的很好的效果,降噪问题其实就是前向模型的H是一个恒等算子,将state-of-the-art的降噪算法(先验模型)和相对应的逆问题的 ...
- E. Median String 解析(思維、大數運算)
Codeforce 1144 E. Median String 解析(思維.大數運算) 今天我們來看看CF1144E 題目連結 題目 給你兩個長度為\(k\)的字串\(s\)和\(t\),求字典序排序 ...
- 进程相关的API函数
0x01. ID与句柄 如果我们成功创建一个进程之后,CreateProcess会返回四个数据,id和句柄 句柄的话就是 当前进程私有的句柄表索引(这是当前进程,给别进程也没用) 每个进程都有一张自己 ...
- 使用udev高效、动态的管理Linux设备文件
导读: 在Linux环境中,所有的设备都以文件的形式存在,在早期的Linux版本中,/dev目录包含了了所有可能出现的设备文件,很难想象Linux用户如何从大量的设备文件中找到想要的设备文件.举个例子 ...