Zabbix lld讲解与发现端口监控
Zabbix3.0入门到生产环境应用实战:
http://www.roncoo.com/course/view/fb3050a5b34b42f39ccad83ebebc89c1
一、软件版本
操作系统:CentOS-6.5-x86_64
zabbix版本:3.0.3
二、lld简介(Low-level discovery):
简单的理解为一种发现规则;跟我们之前讲到的发现有区别,之前讲到的发现规则只能是基于主机;而lld则是基于更底层的发现,能够发现我们去定义的东西。通过返回json数据和调用json数据发现和定制我们的规则;也是zabbix自动化的一个重要功能。
三、首先了解一下系统自带的lld发现规则(可以直接查看linux os模板):
1、查看自动发现规则,可以看到有两个发现规则,一个是发现磁盘一个是发现网卡:
配置--》模板--》linux os-->自动发现规则:
2、用磁盘带的key来做实验操作:key为vfs.fs.discovery:
[root@zabbix_server bin]# ./zabbix_get -s 192.168.63.205 -k vfs.fs.discovery
{"data":[{"{#FSNAME}":"/","{#FSTYPE}":"rootfs"},{"{#FSNAME}":"/proc","{#FSTYPE}":"proc"},{"{#FSNAME}":"/sys","{#FSTYPE}":"sysfs"},{"{#FSNAME}":"/dev","{#FSTYPE}":"devtmpfs"},{"{#FSNAME}":"/dev/pts","{#FSTYPE}":"devpts"},{"{#FSNAME}":"/dev/shm","{#FSTYPE}":"tmpfs"},{"{#FSNAME}":"/","{#FSTYPE}":"ext4"},{"{#FSNAME}":"/proc/bus/usb","{#FSTYPE}":"usbfs"},{"{#FSNAME}":"/boot","{#FSTYPE}":"ext4"},{"{#FSNAME}":"/home","{#FSTYPE}":"ext4"},{"{#FSNAME}":"/proc/sys/fs/binfmt_misc","{#FSTYPE}":"binfmt_misc"},{"{#FSNAME}":"/cgroup/cpuset","{#FSTYPE}":"cgroup"},{"{#FSNAME}":"/cgroup/cpu","{#FSTYPE}":"cgroup"},{"{#FSNAME}":"/cgroup/cpuacct","{#FSTYPE}":"cgroup"},{"{#FSNAME}":"/cgroup/memory","{#FSTYPE}":"cgroup"},{"{#FSNAME}":"/cgroup/devices","{#FSTYPE}":"cgroup"},{"{#FSNAME}":"/cgroup/freezer","{#FSTYPE}":"cgroup"},{"{#FSNAME}":"/cgroup/net_cls","{#FSTYPE}":"cgroup"},{"{#FSNAME}":"/cgroup/blkio","{#FSTYPE}":"cgroup"},{"{#FSNAME}":"/var/lib/docker/devicemapper","{#FSTYPE}":"ext4"}]}
注释:上面的数据复制完粘贴到http://www.json.cn/就能看到完整的json数据。,主要是返回这样的一个json数据,有过编程基础的同学应该很容易就实现,没有的话也没关系,用shell也安装格式打印也是可以实现的。
####上面的格式在json.cn下面打印:
{
"data":[
{
"{#FSNAME}":"/",
"{#FSTYPE}":"rootfs"
}
]
}
***{#FSNAME},和{#FSTYPE}等于就是两个宏变量,在key里面调用即可,我们下面深入看下监控项。
3、具体的监控项原型:第一个item主要是获取返回的这个json值。
主机---》模板---》自定义发现规则---》具体Item
4、通过上面的item获取的返回值,然后创建的监控项原型:
主机---》模板---》自定义发现规则---》具体Item---》监控项原型:
注释:这里的vfs.fs.size[{#FSNAME},free] 类似的kye也是调用了上面的返回值用变量的方式获取即可,然后就匹配了所有的参数值。然后剩下的就是添加一些图形监控之类的了。
5、lld监控总结:
定义好可变的数据,返回json值的宏变量-->创建一个item接收所有的值-->定义监控原型操作每一个监控项调用宏变量。
四、下面以发现端口为例,发现linux下所有的端口,并对所有端口状态进行监控:
1、脚本编写(python方式):
[root@BJ-monitor-h-01 scripts]# cat ports.py
#!/usr/bin/env python
#coding:utf-8
import os, json
port_list=[]
port_dict={"data":None}
cmd='''netstat -tnlp|egrep -i "$1"|awk {'print $4'}|awk -F':' '{if ($NF~/^[0-9]*$/) print $NF}'|sort |uniq 2>/dev/null'''
local_ports=os.popen(cmd).readlines()
for port in local_ports:
pdict={}
pdict["{#TCP_PORT}"]=port.replace("\n", "")
port_list.append(pdict)
port_dict["data"]=port_list
jsonStr = json.dumps(port_dict, sort_keys=True, indent=4)
print jsonStr
2、shell实现方式:
[root@BJ-monitor-h-01 scripts]# cat ports.sh
#!/bin/bash
port_array=(`netstat -tnlp|egrep -i "$1"|awk {'print $4'}|awk -F':' '{if ($NF~/^[0-9]*$/) print $NF}'|sort |uniq 2>/dev/null`)
length=${#port_array[@]}
printf "{\n"
printf '\t'"\"data\":["
for ((i=0;i<$length;i++))
do
printf '\n\t\t{'
printf "\"{#TCP_PORT}\":\"${port_array[$i]}\"}"
if [ $i -lt $[$length-1] ];then
printf ','
fi
done
printf "\n\t]\n"
printf "}\n"
3、测试结果一致:
4、新建一个监控模板,添加一个tcp_port的应用级:
5、点击自动发现,创建发现规则:
6、客户端定义key看是否能够采集到值:
7、有了这些宏变量之后咱们就可以定义监控项了(点击监控项原型、创建监控项详情):
注释:利用之前咱们讲的net.tcp.listen这个内置key,测试看端口是否在运行:如:
[root@zabbix_server bin]# ./zabbix_get -s 192.168.63.205 -k net.tcp.listen[80]
1
返回值为1说明端口再运行,而{#TCP_PORT}就是调用咱们之前采集到的宏变量,
备注:要是net.tcp.listen不是咱们内置key,咱们也需要在agnet端定义,下节课讲到。
8、创建触发器原型(触发器类型,创建触发器原型):
注释:返回的值不是1即触发告警,到此咱们一个端口监控已经完成,:
9、主机关联模板测试,通过触发器发现如下端口:
10、也可以给每个端口添加一个图形,出图数值为1和0咱们就能观察端口的状态趋势了:
模板---》添加图形原型:
总结:到此咱们lld的端口监控已经完成,难点是返回的json数据要求,需要有编程基础的同学,shell的同学照葫芦画瓢也可以实现。
关注微信:

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
spring boot向spirng cloud进发
研究了一段时间spring boot了准备向spirng cloud进发,公司架构和项目也全面拥抱了Spring Cloud。在使用了一段时间后发现Spring Cloud从技术架构上降低了对大型系统构建的要求,使我们以非常低的成本(技术或者硬件)搭建一套高效、分布式、容错的平台,但Spring Cloud也不是没有缺点,小型独立的项目不适合使用,另外对分布式事物的支持暂时也没有。 Spring Cloud是什么鬼? Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单的开发方式。 微服务是可以独立部署、水平扩展、独立访问(或者有独立的数据库)的服务单元,springcloud就是这些微服务的大管家,采用了微服务这种架构之后,项目的数量会非常多,springcloud做为大管家需要管理好这些微服务,自然需要很多小弟来帮忙。 主要的小弟有:Spring Cloud Config、Spring Cloud Netfli...
- 下一篇
常用的分布式事务解决方案介绍
视频教程学习地址: http://www.roncoo.com/course/view/7ae3d7eddc4742f78b0548aa8bd9ccdb 点击链接加入群【分布式微服务架构-2群】:https://jq.qq.com/?_wv=1027&k=46DbqB3 龙果开源支付系统 : 龙果支付系统是国内首款开源的互联网支付系统,其核心目标是汇聚所有主流支付渠道,打造一款轻量、便捷、易用,且集支付、资金对账、资金清结算于一体的支付系统,满足互联网业务系统的收款和业务资金管理需求。 主要特点: 具备支付系统通用的支付、对账、清算、资金账户管理、支付订单管理等功能; 目前已接通“支付宝即时到账”和“微信扫码支付”通道; 支持直连和间连两种支付模式,任君选择; 通过支付网关,业务系统可以轻松实现统一支付接入; 搭配运营后台,支付数据的监控和管理可以兼得; 配套完善的系统使用文档,可轻松嵌入任何需要支付的场景; 龙果支付系统产品技术团队是一支拥有多年第三方支付系统设计研发经验的团队,会为龙果支付系统持续提供商业级的免费开源技术服务支持。 开源中国地址:http://www.osc...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7,CentOS8安装Elasticsearch6.8.6
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- 2048小游戏-低调大师作品
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS8编译安装MySQL8.0.19
- CentOS6,CentOS7官方镜像安装Oracle11G