快速掌握Zabbix配置的高效学习方法
本次博文主要以Zabbix的中文界面为主进行介绍!
创新互联是一家业务范围包括IDC托管业务,网络空间、主机租用、主机托管,四川、重庆、广东电信服务器租用,成都移动机房,成都网通服务器托管,成都服务器租用,业务范围遍及中国大陆、港澳台以及欧美等多个国家及地区的互联网数据服务公司。
一、模板的管理与使用
模板是Zabbix的核心,因为模板中集成了所有要监控的内容以及展示的图形等等,Zabbix的安装部署完成后,自带了很多模板(网络设备模板、操作系统模板、常见应用软件模板),这些模板可以满足我们80%左右的应用需要,所以一般情况下不需要我们单独创建模板了。
如图:
模板是由很多内置项目组成的,基本的内置项目有应用集、监控项、触发器、图形、聚合图形、自动发现、Web检测、链接的模板等这8个部分组成。在这8个部分中,监控项、触发器、图形、自动发现这4个部分是重点,也是难点。下面重点介绍这四个部分的具体实现过程。
在Zabbix自带的模板中,大部分都是可以直接拿来使用的,这里就不需要对每个模板都进行深入了解,只需要对常用的一些模板重点掌握就可以了。下面重点介绍下经常使用的三类模板,保证重点的学习。
1)常用的模板有以下三类:
1)监控系统状态的模板
Template OS Linux //对Linux系统的监控模板
Template OS Windows //对Windows系统的监控模板
Template OS Mac OS X //对Mac OS X系统的监控模板
Template VM VMware //对VM VMware系统的监控模板
2)监控网络和网络设备的模板
Template Module Generic SNMPv1 //开启SNMPv1监控的模板
Template Module Generic SNMPv2 //开启SNMPv2监控的模板
Template Module Interfaces Simple SNMPv2
Template Net Cisco IOS SNMPv2
Template Net Juniper SNMPv2
Template Net Huawei VRP SNMPv2
3)监控应用软件和服务的模板
Template App HTTP Service //对httpd服务的监控模板
Template DB MySQL //对Mysql服务的监控模板
Template App SSH Service //对SSH服务的监控模板
Template Module ICMP Ping //对主机Ping的监控模板
Template App Generic Java JMX //对Java服务的监控模板
Template App Zabbix Agent //对Zabbix Agent状态的监控模板
Template App Zabbix Server //对Zabbix Server状态的监控模板
上面所提到的模板都是可以灵活使用的,也是我们做监控的基础,所以要熟练掌握他们的使用方法和监控特点。
2)创建应用集
这里以Linux系统模板为例,如图:
进入应用集后,就可以看到已有的应用集,也可以创建新的应用集。
应用集的创建非常简单,它其实是一个模板中,针对监控的集合,例如要对CPU的属性进行监控,那么就可以创建一个针对CPU的应用集,这个应用集下可以创建针对CPU的多个监控项。
应用集的出现主要是便于对监控项进行分类和管理,在有多个监控项,多种监控类型需要监控的情况下,就需要创建应用集。
3)创建监控项
如图:
从图中可以看出,默认的监控项的内容,每一个监控项都对应了一个键值,就是具体要监控的内容,键值的写法是有统一规范的,Zabbix针对不同监控项自带了很多键值,用户也可自定义键值,此外,每个监控项还可以添加对应的触发器,也就是说这个监控项如果需要告警的话,就可以添加一个触发器,触发器专门用力啊触发告警。当然不是说每个监控项一定要有一个触发器,需要根据监控项的内容而定。
如图:
1)名称:就是创建监控项的名称,可自定义;
2)类型:设置次监控项通过何种方式进行监控,zabbix可选的监控类型很多,常用的有zabbix客户端,zabbix客户端(主动式)、简单检查、SNMP客户端、zabbix采集器等类型,zabbix客户端监控也成为zabbix客户端(被动式)监控,就是通过在要监控的主机上安装zabbix agent,然后zabbix server主动去抓取数据来实现的监控,这是最常用的监控类型。而zabbix客户端(主动式)监控也需在被监控的机器上安装zabbix agent。只不过zabbix agent会主动汇报数据到zabbix server,这是与zabbix客户端(被动式)监控不同的地方;
3)键值:可以使用zabbix默认自带的,也可以自定义自己的键值,zabbix自带了很多键值,可以满足我们90%的需求,比如我们相对服务器上某个端口的状态进行监控,就可以使用“net.tcp.service.perf[service,<ip>,<port>]”
这个键值,此键值就是zabbix自带的,如果需要查看更多zabbix自带键值,可以点击“键值”选项后的“选择”按钮,zabbix自带的键值就会全部显示出来。
如图:
可以看到,zabbix自带的键值根据监控类型的不同,也分了不i同的监控键值种类,每个键值的含义也都做了详细的描述,我们可以根据需要的监控内容,选择对应的键值即可。
就以net.tcp.service.perf[service,<ip>,<port>]
这个键值为例,net.tcp.service.perf则是键值的名称,后面中括号中的内容是键值的监控项,每个选项含义如下:
1)server:表示服务名称,包括ssh、ntp、ftp、http、pop、imap等;
2)ip:表示IP地址,默认是127.0.0.1,可不添加;
3)port:表示端口,默认情况下为每个服务对应标准的端口;
比如,如果我们监控的httpd服务,那么就可以这样写:
net.tcp.service.perf[http,,80]
4)信息类型:此键值返回的信息类型的浮点型的,所以选择浮点数;
5)更新间隔:这个主要用来设置多久更新一次监控数据,可根据对监控项灵敏度的需要来设定,默认情况下是30秒更新一次;
6)应用集:在创建监控项的最后,还有一个应用集的选择,也就是将这个监控项放到那个监控分类中,可以选择已存在的应用集,也可也添加到一个新的应用集!(本次就将其加入http server应用集中,截图就不附上了,注意一下);
所有设置完成后,点击添加即可!
监控项可以添加到一个已经存在的模板中,也可以在一个新创建的模板中添加监控项,还可以在一个主机下创建监控项。
- 推荐的做法是新建一个模板,然后在此模板下添加需要的应用集、监控项,然后在后面添加主机时,将这个创建的模板链接到主机下即可;
- 不推荐在主机下创建监控项的原因,如果有个多个主机,每个主机都有相同的监控内容,那么就需要在每个主机下创建相同的监控项;
总结:构建zabbix监控,推荐的做法:首先创建一个模板,然后在此模板下创建需要的监控项、触发器等内容,最后在添加主机时直接将此模板链接到每个主机下即可,这样,每个主机就自动链接上了模板中的所有监控项和触发器。
4)创建触发器
触发器是用于故障告警的一个设置,将一个监控项添加触发器后,此监控项如果出现问题,就会激活触发器,然后触发器将自动连接告警动作,最后触发告警。
触发器同样也推荐在模板中创建,以Linux系统模板为例,如图:
如图,有触发器的严重级别、触发器名称、触发器表达式等几个小选项,这里难点是触发器表达式的编写,要学会写触发器的表达式。首先需要了解表达式中常用的一些函数机器含义。
图中有diff、avg、last、nodata等这些标识,这就是触发器表达式中的函数,下面简单介绍一下常用的一些触发器表达式函数及其含义。
1)diff
参数:不需要参数;
支持值类型:float、int、str、test、log;
作用:返回值为1表示最近的值与之前的值不同,即值发生变化,0表示无变化;
2)last
参数:#num
支持值类型:float、int、str、test、log;
作用:获取最近的值,”#num“表示最近第N个值,请注意当前的#num和其他一些函数的#num的意思是不同的,例如:
last(0)或last()等价于last(#1),表示获取最新的值,last(#3)表示最近第3个值(并不是最近的三个值),注意,last函数使用不同的参数将会得到不同的值,#2表示倒数第二个新的数据。例如从老到最新值为1,2,3,4,5,6,7,8,9,10,last(#2)得到的值为9,last(#9)得到的值为2;
另外,last函数必须包含参数;
3)avg
参数:秒或#num;
支持类型:float、int;
作用:返回一段时间的平均值;
例如:avg(5)表示最后5秒的平均值,avg(#5)表示最近5次得到值的平均值,avg(3600,86400)表示一天前的一个小时的平均值;
4)change
参数:无需参数;
支持类型:float、int、str、text、log;
作用:返回最近获得值与之前获得值的差值,返回字符串0表示相等,1表示不同;
例如:change(0)>n表示最近得到的值与上一个值得差值大于n,其中,0表示忽略参数;
5)nodata
参数:秒;
支持值类型:any;
作用:探测是否能接收到数据,当返回值为1表示指定的间隔(间隔不应小于30秒)没有接收到数据,0表示其正常接收数据;
6)count
参数:秒或#num;
支持类型:float、int、str、text、log;
作用:返回指定时间间隔内数值的统计;
例如:
count(600):表示最近10分钟得到值的个数;
count(600,12):表示最近10分钟得到值的个数等于12;
其中,第一个参数是指定时间段,第二个参数是样本数据;
7)sum
参数:秒或#num;
支持值类型:float、int;
作用:返回指定时间间隔中收集到的值的总和,时间间隔作为第一个参数将支持秒或收集值得数目(以#开始);
例如:
sum(600):表示在600秒之内接收到所有值的和;
sum(#5):表示最后5个值的和;
在了解了触发器表达式函数的含义后,就可以创建和编写触发器表达式了,如图:
首先输入触发器名称,然后标记触发器的严重性,有6个等级的划分,这里就选择一般验证了,接下来就是表达式的编写了,点击表达式后面的“添加”按钮,即可开始构建表达式了,在构建表达式页面,首先选择给那个监控项添加触发器,在“条件”界面下点击后面的“选择”按钮,即可打开已经添加好的所有监控项,选择刚刚创建的那个监控项,接着,开始选择触发器表达式的条件,也就是上面介绍过的触发器表达式函数,点击“功能”下拉菜单,可以发现很多触发器表达式函数,那么如何选择函数呢,当然是根据这个监控项的含义和监控返回的值。
刚才自定义的监控项”httpd server 80 status“这个监控项的返回值的是浮点数,当服务故障是返回0,当监控的服务正常时返回连接服务所花费的秒数。因此,我们就将返回0作为一个判断的标准,也就是将返回值为0作为触发器表达式的条件,要获得监控项的最新返回值,那就是使用last()函数,因此选择last()函数,接着,还有个”间隔(秒)“选项,这个保持默认即可,重点是最后这个”结果“,这里是设置last()函数返回值是多少才进行触发,根据前面对监控的了解,last()函数返回0则表示服务故障,因此这里填上0即可!
这样,一个触发器表达式就创建完成了,完整的触发器表达式的内容:
{Template OS Linux:net.tcp.service.perf[http,,80].last()}=0
可以看出,触发器表达式是由4部分组成,第一部分是模板或主机的名称,第二部分是监控项对应的键值,第三部分是触发器表达式的函数,最后一不放呢就是监控项的值。这个表达式的含义:http服务的80端口获取到的最新值如果等于0,那么这个表达式就成立,或者返回true;
触发器创建完成后,两个监控的核心基本就完成了,后面还有创建”图形“、”聚合图形“等选项,这些过于简单,这就省略了!
5)创建主机组和主机
如图:
创建完成后,如图:
可以看到,在主机下,已经有应用集、监控项、触发器、图形等选项和内容了,这就是链接模板后,自动导入到主机中,当然在主机的编辑界面下也可以创建或修改应用集、监控项、触发器、图形等内容。
6)触发器动作配置
动作的配置是zabbix的一个重点,动作的添加根据事件源的不同,可分为触发器动作、自动发现动作、自动注册动作等,首先介绍触发器动作的配置方法,如图:
一个触发器就创建完成!
7)报警媒介配置
报警媒介就是用来设置监控告警的方式,也就是可以通过什么方式将告警信息发送出去。常见的告警媒介有:Email、企业微信等。
默认使用较多的就是通过Email的方式进行消息的发送告警,邮件告警方式的优势就是简单、免费,加上现在很多手机上都可以下载邮件客户端工具,通过简单的邮件告警设置,几乎就可以做到实时收取告警信息。
如图:
至此,zabbix中一个监控项的添加流程就完成了!
最后,我们再来梳理下一个监控添加的流程,一般操作步骤是这压根的:首先创建一个模板,或者再默认模板基础上新增监控项、监控项添加完成,接着对此监控项添加一个触发器,如果有必要,还可以对此监控项添加图形,接着,开始添加主机组和主机,在主机中引用已经存在的或新增的模板,然后创建触发器动作,设置消息发送事件,最后。设置报警媒介,配置消息发送的介质,这就是一个完整的Zabbix配置过程。
8)监控状态查看
当一个监控项配置完成后,要如何查看是否获取到数据了呢?如图:
此图形曲线是自动生成的,无需设置!
如果需要查看其他监控项的图形展示,可以进行以下操作:
从这个界面中可以看CPU、内存、文件系统、Swap等操作系统基础监控信息,而这些基础监控都不需要我们添加,因为zabbix默认已经帮我们安装好了!
————————————本文到此结束,感谢阅读——————————
标题名称:快速掌握Zabbix配置的高效学习方法
标题来源:http://myzitong.com/article/iepidg.html