Zabbix监控之Linux命令行/Shell脚本解析json
本文主要写了在Linux下如何用Shell脚本解析json数据,以便于在Zabbix中添加适合于业务应用的监控项。
为什么要使用json?
json作为一种文本化的数据格式(文本化协议),符合UNIX编程的哲学,既符合透明性(透明性:设计可见,便于审查和调试)又符合文本性(文本性:数据应该保存为文本文件)。关键在于json对Web程序或者java程序非常友好,对于开发人员来说,他们也喜欢使用json数据。业务逻辑、内部的依赖关系以及状态信息由程序员去做,运维人员只需要调用程序员开放出来的API接口就行了。
利于Zabbix监控报警的json数据格式
json数据格式的定制原则(仅供参考)
每一个模块带有一个code(返回值)和一个msg(代表含义),这是便于Zabbix报警的核心设计,code用来作为触发器(Trigger)报警条件,msg作为触发器名称,也是短信报警的实际内容之一
Linux Shell/命令行获取json数据
可以使用Linux通常自带的curl命令获取json数据
通过POST方式提交数据(而不是使用GET),如果有多个参数,则用“ ”连接起来,post提交的数据相当于一种口令,而避免搜索引擎或爬虫搜索到或被恶意利用
合理设置curl的超时时间,并启用silent模式,防止curl输出一些没用的信息,甚至可以与2 /dev/null连用,参见下面的例子
curl -m 10 --connect-timeout 10 -s -d "getcode=secret" http://servername/url/api 2 /dev/null
Linux Shell/命令行解析json数据
可以使用jq命令,结合python的demjson模块,先验证json的合法性,再用jq解析json。
为什么要使用jq?jq作为Linux命令行解析json的神器,具有丰富json解析功能,而且其设计非常符合UNIX编程哲学中的“所有的程序都是数据的过滤器”,相比于按行与列处理文本的awk、grep和sed“文本三剑客”而言,jq就是处理json的利器。而且jq支持CentOS和Ubuntu等Linux主流发行版本。
例如以上面例子中的json,要想获取requirement1的状态,只需要将这个json作为jq的标准输入,命令行如下(二者选一,或者自己改写,awk的用途主要是去掉双引号):
Alibaba Cloud Linux镜像操作系统详解(全方位解析) Alibaba Cloud Linux是阿里云推出的Linux发行版,Alibaba Cloud Linux是基于龙蜥社区OpenAnolis龙蜥操作系统Anolis OS。Alibaba Cloud Linux针对云服务器ECS进行了深度优化,CentOS停止维护完全可以使用Alibaba Cloud Linux代替,Alibaba Cloud Linux兼容CentOS/RHEL生态,CentOS/RHEL中的大多数软件无需或仅需少量改造即可在Alibaba Cloud Linux中运行。
相关文章
- Linux流量监控iftop
- 【工具】tsar 监控Linux系统状态的利器
- Linux下开启关闭SeLinux
- Linux挂载卸载光盘&实践
- linux 监控CPU 内存情况
- Linux性能监控文章参考
- Linux 光盘的挂载和解挂
- Linux 0.11-按下键盘后为什么屏幕上就会有输出-16
- 【JVM与性能调优】Linux监控命令(与网络相关的命令)复盘
- Linux服务器上监控网络带宽的18个常用命令
- Linux系统轻量级监控工具Linux dash的安装方法
- 30 个 Linux 监控的top命令示例
- iotop - 如何在 Linux 中监控磁盘 I/O
- linux基本功系列之find命令实战
- Linux基础命令-ln创建链接文件
- Linux|centos二进制方式安装系统和网络监控神器prometheus+grafana(装逼神器它来了)(基础篇 一)
- Shell脚本之linux服务器服务进程监控
- Linux命令——echo追加和覆盖
- Linux pidstat对运行进程实时监控
- zabbix-sender+crontab+nc实现无agent监控linux主机(二十六)
- Zabbix添加Linux监控主机(三)
- iotop - 如何在 Linux 中监控磁盘 I/O