我行我素 发表于 2018-11-5 11:26:20

DevOps微课之Zabbix配置

本帖最后由 adminlily 于 2018-11-5 11:38 编辑



本文介绍Zabbix的快速配置使用,介绍配置流程,通过浏览器访问http://ServerIP/zabbix开始配置和使用Zabbix。0 配置流程Zabbix完整的监控配置流程可以简单描述为:

Host Groups(主机组)→Hosts(主机)→Applications(监控项组)→Items(监控项)→Triggers(触发器)→Event(事件)→Actions(处理动作)→User groups(用户组)→Users(用户)→Medias(告警方式)→Audit(日志审计)。在实际使用的时候,Items、Trigger、Graph通常采用模板进行配置,模板的特点就是可以对相同需求的监控项重复使用,无须对每台主机进行逐个设置。

对于使用Zabbix来说,配置Graph不是必需的,因为没有配置图形,数据的获取也不影响,数据。但是对用户(Zabbix的Web界面用户)来说,没有图形,就无法看到可视化的数据,因此,需要对最关心的Items添加图形,以便将数据可视化。

配置Trigger不是必需的,但是对于特别关注的数据,需要对取到的值进行条件判断,这时配置触发器就是必需的。

另外,如果想集中查看图形,可以使用Screens功能,将多个图形配置到一个界面上。(遗憾的是,Screens功能并不十分完美,只能满足一般需求)

Zabbix的运行流程可以用下面这张图来简单的描述:

1 添加主机组
分组的目的是将统一属性的主机归类,便于查看和统计。

主机组中可以包含主机,也可以包含模板。



如何添加新主机组呢?方法是单击“配置”——“主机群组”界面右上角的“创建主机群组”按钮,跳转到添加新主机组的界面:

填写“组名”,从右侧列表选择主机移到左侧列表中,将这些设备添加到新建的组中。点击“保存”。

2 添加模板监控项、触发器、图形、Web、Discovery等都是存在于主机之上的,由于多个主机都会用相同的监控配置,因此可以对这部分同类的数据进行归纳抽象,将这些数据做成模板。当我们需要对其他主机进行配置的时候,只需要对相应的主机添加对应的模板即可。

单击“配置”——“模板”界面右上角的“创建模板”按钮,跳转到添加新模板的界面:

填写模板名称和所属的组。如果是将模板加到已有的组,则从“其他群组”中将指定的组移到左侧的列表;如果是将模板加到新的组,则在“新的群组”中填写组名。


模板具有继承的功能(将一个模板在另一个模板中使用),在“链接的模板”Tab页中:

注意,选择了链接的模板后先点“链接指示器”那里的小字“添加”。


模板中亦可以定义宏。宏主要是对变量的定义,设置宏的作用是方便在Items、Trigger中使用,在模板中配置一个宏,在不同的主机对该宏设置不同的变量值,从而达到模板通用化的目的。

注意,宏的名称为{$名称},宏的字符范围为“A~Z、0~9、_、.”,如果不是这个范围的字


注意,宏的名称为{$名称},宏的字符范围为“A~Z、0~9、_、.”,如果不是这个范围的字符,一律是无效的。

查看刚添加的模板:



可以看到这个模板从Template App Zabbix Agent模板中继承了三个监控项:




关于如何在模板中添加其他的Items,后面再说^_^


3 添加主机添加主机的目的是对具体的设备进行监控,步骤为:点击“配置”——“主机”界面右上角的“创建主机”:



参数说明如下:


主机名:主机名不能重复。该名称对应Agent的配置文件中Hostname,只允许大小写字母、数字、标点符号和下划线。

可见的名称:可以不设置,设置了那么在其他地方展示时就显示这个名称,而不是主机名。


[*]群组:选择主机所属的群组。一个主机必须属于至少一个主机群组。



[*]新主机组:一个新的群组将被创建,然后自动链接到该主机上。如果为空,该项将被忽略。



[*] Agent代理程序的接口:填写被监控主机的IP地址或者域名,在“连接到”选择对应的方式,端口默认是10050。



[*]SNMP接口、JMX接口和IPMI接口根据需要添加。



[*] 由agent代理程序监测:主机可以通过Server或Proxy监控。如果是通过Proxy监控的,那么这里下拉选择对应的代理。



[*]状态:是否启用。

选择模板:



如果还想配置IPMI、宏、主机资产信息,依次配置即可。



4 配置图形Graph是将数据展示为图像,以视觉化的形式展示,Graph的配置存在于主机和模板中。

在所在的主机(模板)中,选择“图形”:



点击右上角的“添加图形”,打开新建图形的界面,输入图形名称,选择所需的监控项:




保存后就能在“监测中”——“图形”中选择“群组”、“主机”和“图形”看到了:




有些情况下,我们并不需要对多有的监控项配置图形,可以在“监测中”——“最新数据”直接查看某个监控项的图形,甚至也可以勾选多个监控项点表格最下面的“显示数据图”或“显示堆叠数据图”:





5 配置聚合图形聚合图形将多种信息放在一起展示,便于集中展示某个主机的多个信息,或是将多个主机的同一种信息放在一起显示。通过点击“监测中”——“聚合图形”——“创建聚合图形”:

6 使用GraphTreeGraphtree 由OneOaaS开发并开源出来,用来解决Zabbix的聚合图形配置繁琐的问题,集中展示图形,性能较好。

安装方式是,下载Graphtree补丁包,使用patch打补丁,即可,具体请参考OneOaaS/graphtrees。

效果如下:

7 配置Web监控Web monitoring(Web监控)是用来监控Web程序的,可以监控到Web程序的下载速度、返回码及响应时间,还支持把一组连续的Web动作作为一个整体进行监控。

Web监控即对HTTP服务的监控,模拟用户去访问网站,对特定的结果进行比较,如状态码、返回字符串等特定的数据进行比较和监控,从而判断网站Web服务的可用性。

点击“配置”——“主机”——“Web监测”——“创建Web场景”。



名称:Web场景的名称。



[*]应用集/新的应用集:选择已有的或新建应用集。



[*]数据更新间隔:Web场景间隔的时间,单位是秒。



[*] 尝试次数:重试机制,默认是1,最多支持10次重试。



[*]HTTP代理:只是简单的认证才支持代理,默认的端口是1080。



[*] 变量:场景级的变量可以在场景的步骤中使用。如果值中含有正则表达式,正则表达式匹配会从Web页面搜索,如果找到,则将变量替换为对应的值。



[*]头:HTTP请求的Header信息。

切换到“步骤”Tab页,添加步骤:


[*]名称:步骤的名称。




[*]URL:监控的Web页面(注:必须是全路径带页面名)。



[*]Post:传递给页面的参数,多个参数之间用&连接,此处可引用前面定义的变量。



[*]变量:设置变量。



[*] 头:HTTP请求的Header。



[*]超时:超时时间。



[*]要求的字串:期望的页面中能匹配到的字符,若不匹配,则认为出错。



[*]要求的状态码:期望的页面状态码。

如果有多个URL,则一次添加步骤:



添加完成后,在“监测中”——“Web监测”中可以查看:




Web监控实际上也是多个监控项组成的,如下图。所以也可以配置触发器,触发器的如何配置,下次再说。





8 配置监控项监控项可以配置获取数据的方式、取值的数据类型、获取数值的间隔、历史数据保存时间、趋势数据保存时间、监控项所属的应用集。

监测周期的长短直接影响了数据的获取,也影响了Zabbix Server的性能。

监控的方式非常多,ZAbbix支持的监控方式有:




其中,最常用的有:


[*]Zabbix客户端:由Zabbix Server向Agent请求监控数据。



[*]Zabbix客户端(主动式):Agent定期从Server拉取主动式监控项清单,然后根据每个监控项的数据采集间隔定时向Server上报监控数据。



[*]简单检查:支持Ping、TCP及UDP监控,被监控主机无需安装Agent。



[*]可计算的:对已有的一个或多个监控项的值计算作为新的监控项。


监控项可以存在于模板中,也可以存在于主机中,模板的作用是可以复用,对需要重复配置的监控项归类。

监控项的添加方式为,打开“配置”——“模板”/“主机”,点击对应的模板或主机的“监控项”,再点击页面右上角“创建监控项”:


创建监控项的页面:





[*]名称:监控项的名称,可以使用宏变量:$1,$2,…,$9,代表Key的第1,2,…,9个参数。



[*]类型:可以选择“Zabbix客户端”、“Zabbix客户端(主动式)”或“可计算的”等等。



[*]键值:Zabbix内置了很多监控项可以使用,也可以使用自定义监控项(后面会说)。



[*]主机接口:选择Agent或者JMX、SNMP、IPMI等接口。



[*]信息类型:监控项数据的类型,有“数字(无正负)”、浮点数、字符、日志、文字。



[*] 数据类型:数字的进制。

单位:数据的单位符号,Zabbix将会处理接收到的数据,并且把数值转换为需要显示的单位。默认情况下,如果原始值超过1000,则除以1000并相应地显示。例如,设置bps为单位,如果接收到的值为881764,将会显示881.76Kbps。有个特殊情况,当单B(byte)、Bps(bytes每秒),时将会除以1024。


[*]使用自定义倍数:如果开启该选项,收到的数值将会被乘以该倍数。



[*]数据更新间隔:监控项的采集频率,单位是秒。



[*] 自定义时间间隔:可配置不同时间段采集频率不同。



[*] 历史数据保留时长:采集的数据保留的期限,单位是天。超过保留期限的数据会被Houserkeeper清理。



[*] 趋势数据存储周期:对于数字或浮点数类型的监控项,Zabbix会对监控项每个小时的所有数据进行统计,得到每个小时的最小值、平均值和最大值。查看监控数据图形时,超过历史数据保留时长的时间段就用这三个值绘制。注意,非数值数据(字符、日志、文本)不能保存趋势数据。



[*]存储值:存储采集的数据或者存储数据的差量。



[*]查看值:选择值映射。值映射不会改变接收到的值,仅仅改变显示,便于阅读。



[*]新的应用集/应用集:选择或新建应用集。

如何确认我们配置的Key是正确可用的呢?答案就是用前面介绍的zabbix_get啦。

8.1 监控项的Key

Key可以带参数,该参数为一个数组列表,可以同时传递多个参数,多个参数之间用半角逗号隔开。例如:

vfs.fs.size[/]vfs.fs.sizesystem.cpu.load

举个例子,创建个自定义监控:




这里,/etc/passwd为$1,root为$2,则Key最终运行的命令为 grep –c root /etc/passwd。

顺便介绍下用户自定义参数(UserParameter)。UserParameter配置在zabbix_agentd.conf中或Include指定的配置文件中。Key自定义的不带参数的格式为:

UserParameter=key, command

带参数的格式为:

UserParameter=key, command $1 $2 $3…

添加了UserParameter后要重启zabbix-agent服务才会生效。

注:Zabbix内置了很多关于网络流量、端口、进程、CPU、内存、磁盘、文件监控的Key,可以查阅官方文档。

9 配置触发器告警是监控的重要功能,是指将达到某一阈值事件的消息发送给用户,让用户在事件发生的时候即可知道监控项处于不正常状态,从而让用户来决定是否采取相关措施。

在Zabbix中,告警是由一系列的流程组成的,首先是触发器达到阈值,接下来是动作对事件信息进程处理,其中包含两部分:第一部分是发送消息,即将告警信息发送给用户;第二部分是执行命令,即将事件用命令进行处理,达到对事件故障自动尝试恢复的效果。触发器的状态分为“OK/正常”和“Problem/问题”。

触发器的状态是在Zabbix Server每次接收到监控项的新数据时,就会对值进行判断。对于触发器中的时间函数nodata()、date()、dayofmonth()、dayofweek()、time()、noew(),Zabbix Server会每隔30秒进行重新判断。

一个监控项可以对应多个触发器,通过不同的阈值来设置不同的告警级别,实现分故障级别的告警。

触发器的配置是在“配置”——“主机”/“模板”——“触发器”——“创建触发器”:




触发器比较复杂的就是告警表达式的配置。点击“添加”按钮,打开表达式构造页面:




Zabbix支持很多条件判断:




选择一个判断条件后,在下面的 “N”文本框中填入阈值数字:




插入后就生成表达式了:




表达式支持监控项&组成复杂的判断条件。




添加触发器时可以为触发器选择一个“严重性”,然后就可以根据告警的严重性来配置不同的动作。

10 配置报警媒介在定义动作配置告警之前,我们要先配置告警媒介,并给用户配置告警的收件人。

在“管理”——“报警媒介类型”界面:




Zabbix支持短信和SMTP邮件,还有自定义脚本的方式。例如上图的邮件和短信都是用自定义脚本的方式。

自定义脚本的报警媒介需要指定脚本名称和脚本参数。这里的参数是用宏定义的,在动作中调用报警媒介时会将该动作的收件人、标题和内容传递给脚本。




Zabbix Server在调用脚本的时候,会按顺序将参数作为位置参数传给脚本。上图的配置中则$1为收件人,$2为消息标题,$3为消息内容。

11 配置用户要让用户能收到告警通知,需要对该用户配置告警媒介的收件人信息。

在“管理”——“用户”的“报警媒介”Tab页中添加:




12 配置动作如果想在产生事件后,即当触发条件被满足时,采取一些操作,比如,发送事件通知、远程执行命令等,则需要配置动作。动作可以对以下四种类型的事件进行响应:

创建动作的方法是,打开“配置”——“动作”界面,在“事件源”下拉菜单中选择事件来源,点击“创建动作”,配置动作的信息、条件和操作。

“动作”Tab页需要配置动作的名称、消息的标题和内容、是否发送恢复消息和恢复消息的标题及内容。标题和内容中可以使用宏来获取触发器的相关参数:



“条件”Tab页可以配置哪些主机群组、主机、触发器等触发该动作,多个条件之间的关系可以是and或者or:




“操作”Tab页配置动作的具体操作,“操作类型”分为发送消息和远程命令。发送消息则配置发送到的用户组和/或用户,以及发送到的报警媒介;远程命令则选择要执行命令的主机或主机群组,以及要执行的命令和远程命令的执行方式。操作可以配置多个步骤,实现告警升级。




不同类型事件的动作可选的操作不同:

触发器事件:发送消息、执行远程命令

自动发现事件:发送消息、执行远程命令、添加主机、删除主机、启用主机、停用主机、添加到主机群组、从主机群组中移除、关联模板、取消关联模板、设置主机清单模式

自动注册事件:发送消息、执行远程命令、添加主机、启用主机、添加到主机群组、关联模板、设置主机清单模式

动作发送消息的日志可以在“报表”——“动作日志”中查看。

13 维护时间在某些场合中,我们不需要进行告警,例如,业务的正常维护,所以此时维护时间功能特别有用。

在“配置”——“维护”,创建维护期间,配置维护的时间段和主机/群组:




维护时间和动作中的配置紧密相关,动作中配置了不在维护时间内才发送告警,因此,启用维护时间不会产生告警:



14 事件确认当事件出现状态为Problem的时候,在“监测中”——“触发器”/“事件”界面可以查看事件的详细信息:




事件的确认有“No/不”和“Yes/是”两种状态。点击“不”弹出确认界面,输入内容,确认并返回:




然后事件的确认状态就是“是”了,表示有用户修改过状态:




点击“是”可以查看具体的内容:




原创:吴坤
页: [1]
查看完整版本: DevOps微课之Zabbix配置