目录
Template(模板)、Item(监控项)和trigger(触发器)之间的关系
监控系统介绍
(1)Zabbix 是一个自由开放源代码的产品,用户可以对源代码进行任意修改和二次开发。Zabbix 采用GNU General Public License (GPL) version 2 开源协议。
(2)监控系统的数据采集可以分为两种:主动监控(客户端主动上报数据到服务器端)和被动监控(服务器端到客户端采集数据),被动模式对服务器’的开销较大,适合小规模的监控环境: 主动模式对服务器的开销较小,适合大规模的监控环境。在监控软件中,开源的解决方案有流量监控( MRTG 、Cacti 、SmokePing 、Graphite 等)和性能告警( Nagios 、Zabbix 、Zenoss Core 、Ganglia、OpenTSDB等〉可供选择,井且每种软件都有自己的特点和功能。
(3)zabbix报警流程
首先Item(监控项)收集数据,收集到数据后如果它和一个Trigger(触发器)绑定了(有关联),那么会检查Trigger(触发器)是否变为“异常”状态,然后生成一个事件,最后会检查action中的动作,如果符合触发条件,那么就会执行action动作(例如邮件报警)。
安装
-
下载
可以到https://www.zabbix.com/cn/download获取安装包及相关的安装教程,有更为简单的在线安装方法。这里只介绍源码编译安装方式。
-
解压编译
(1)使用源码编译时,需要指定安装的是zabbix server还是zabbix代理,或是zabbix agent,还需要指定使用的数据库类型。此外zabbix还支持很多编译配置,具体可以用./configure --help来查看。
./configure --enable-server --with-mysql --enable-agent
--with-net-snmp --with-libcurl --with-libxml2 --with-openipmi
--with-unixodbc --prefix=/usr/local/zabbix
(2)出现这个表示编译成功
#注意:若出现如下图1-1和1-2中的提示“no package *** found”或者“*** no found”,请根据提示进行相关依赖软件安装:
-
安装并启动服务
(1)安装执行:
make install
(2)修改配置文件
(3)启动:
/usr/local/zabbix/sbin/zabbix_server
-
配置数据库
(1)安装数据库
(2)创建库及数据库登录账号密码
(3)导入初始化的表
在编译目录下的database目录中有对应各类型数据库的目录,在这些目录底下有三个数据库脚本。这里以mysql数据库为例,导入以下三个脚本。如果是使用zabbix proxy,只需要导入schema.sql就行了。
-
安装zabbix web前端
(1)首先安装PHP和httpd
yum install php
yum install httpd
(2)将zabbix安装目录中的frontend/php目录下的内容复制到/var/www/html网站根目录下。之后启动http服务即可看到界面,根据界面向导进行下一步操作即可。
cp -r frontends/php/* /var/www/html/
#注意:可能会出现如下图php错误提示,这时候我们需要编辑/etc/php.ini配置文件参数或安装相关依赖软件,把图中关于PHP提示中,每一个不符合的修改掉,然后重启httpd即可。
可能还需要安装如下
yum install php-mysql
yum install php-bcmath
yum install php-mbstring
yum install php-gd
yum install php-xml
当 所有错误提示消除后,就可以继续安装了
-
完成安装
在web界面输入配置后,下载zabbix前端的配置文件,这个配置文件是根据前端输入的数据库参数、server参数生成的。下载后放在提示位置即可。
完成安装后,默认的用户名密码是Admin和zabbix
配置文件详解
-
zabbix_server.conf
-
zabbix_agent.conf
Server :被动模式,允许哪台服务器连接Agent ;
ServerActive : 主动模式,向哪台服务器传送数据;
Hostname:这里配置的名称要和server端web界面中添加的主机名一致;
AllowRoot=0|1:是否允许agent以root用户身份运行;
User=username:配置以什么用户身份运行进程。若以root用户身份运行,需要先启用AllowRoot项;
一个Agent 是可以同时向多个服务器端发送数据的, 多个IP 用逗号分隔。
说明部分
-
服务端命令
(1)Zabbix-Get 是Zabbix 中的一个程序,用于Zabbix-Server 到Zabbix-Agent 的数据获取,通常可以用来检测验证Agent 的配置或配置的item项等是否正确。zabbix_get 命令可以很方便地知道key 是否能正常获取到数据。不能获取Simple Check、JDC 、SNMP 等其他监控方式的Key 类型的数据。
zabbix_get [-hV] -s <host name or IP> [-p <port>) [-I <IP address>) ] -k <key>
-s:远程Zabbix-Agent 的IP 地址或者是主机名。
-p:远程Zabbix-Agent 的端口。
-I: 本机出去的IP地址,用于一台机器中有多个网卡的情况。
-k: 获取远程Zabbix-Agent 数据所使用的Key 。
示例:
zabbix_get -s 192.168.0.240 -k system.uname
zabbix_get -s 192 .168. 0. 240 -p 10050 -I 127. 0. 0 .1 -k system.uname
(2)宏
也可以理解为变量,可以用在item、trigger,动作等地方。
3>SNMP监控
SNMP 协议在执行前四种操作时,使用UDP 协议,采用161 端口发送报文:执行Trap 操作时,设备使用UDP 协议,采用162 端口发送报文。
主要功能说明
-
添加主机
配置==》主机==》创建主机==》配置主机名称、IP及关联模板
-
Template(模板)、Item(监控项)和trigger(触发器)之间的关系
Item(监控项):用于从被监控客户端中获取监控数据的一系列命令;
trigger(触发器):根据Item(监控项)获取到的值进行判断,并产生一个结果/事件(例如根据监控到值为0,判断该项异常);
Template(模板):就是包含一些Item(监控项)和trigger(触发器)的集合,不仅如此,还有根据Item(监控项)生成的图形等;
-
zabbix重要性能指标
VPS意为每秒的监控数据,它可以比较直观地衡量zabbix承受的压力有多少。
队列(Queue)的相关数据反应zabbix server监控性能情况的重要指标。如下图,绿色背景的指标表示数据在正常范围之内,当有Item延迟时,就会显示其他颜色。有几个延迟是正常的,但是当有大量Item延迟时,需要检查zabbix server或zabbix agent。
-
查看最新监控数据
在“最新数据”界面里,可以查看到某主机的最新的监控项(Item)数据,旁边的“更改”列的数据,其中的加号减号表示这次取到的数据相对于上一次的变化。
-
批量更新主机配置
mass update,意为“批量更新”功能可以修改多台主机的群组、代理、启用|禁用、模板等
-
主动模式被动模式区别
被动模式:server或者proxy向agent请求数据,然后agent将数据发送回server或proxy。
主动模式:agent会先从server获取需要发送的item列表,然后根据item去获取数据,再发送给server。
我们在配置监控项(Item)时,也可以指定监控类型(Type)。
-
Agent配置多台server端同时监控
当需要agent客户端允许多台zabbix server同时监控,只要在zabbix_agent.conf配置文件中修改server/serveractive项,多个IP用逗号隔开即可。
-
取消模板链接的区别
unlink(取消链接):移除template和主机的关联,但不会移除template上item与主机的关联;
unlink and clear(取消链接并清除):移除template、item与主机的关联;
-
在监控项Item中引用变量
Item的名称中可以使用$1、$2等参数,$1指的是下面key里面括号中的第一个参数,如下图
-
通过SSH远程执行命令/脚本
配置监控项(Item)时,选择“SSH客户端”类型,编写相应的命令,最好配置一定的返回值,比如配置命令执行结果的返回值,否则无法查看监控项数据,也就无法知道命令执行成功与否。
效果:
例1:
例2:
#注意,在配置有多条命令时,自己把握是否需要输出值,因为脚本中的命令输出结果也会做为数据返回给监控项,如下图
-
值映射
接上一部分内容,如果我们想让监控项收集到的值(0或1)显示得更为人性化,比如返回0时对应显示“找到文件”,这时可以自定义值映射,所谓“值映射”就是将监控项监控到的返回值进行“数字<-->字符串”之间关联对应,提高数据可读性。
zabbix server中一些自带的“值映射”:
-
报警信息认领处理
当公司有多个运维人员时,并且这时候zabbix平台发送报警异常,那么谁来处理呢?又怎么知道谁在处理呢?
可以借助zabbix报警确认功能,来查看异常处理认领情况。也可以借助该功能设置备注信息,方便日后追溯,例如需要晚上维护的时候再处理这个异常。
-
监控报警频率设置
有没有想过,当人员处于下班、双休日或节假日时,这时候出现很多服务器或网络波动异常,但是过一会就自动恢复了,这期间会发送很多报警信息,假设有漏网之鱼,其中有一台服务器未能自动恢复,这时候运维人员可能会因为众多的报警信息覆盖而忽略处理,这是很严重的问题。所以需要设置假如在半小时内报警信息还未恢复,就再次发送报警消息提醒。
例1:如下图,当出现异常报警时,按步骤顺序执行,先发送两封邮件给test1用户对应的邮箱,间隔60秒,然后继续执行3~5步骤,发送三封邮件给admin用户对应的邮箱,间隔60秒,这样报警动作就完成了。
例2:当有两个操作要同时进行时,如下图配置,会同时发送同一步骤的邮件,如图二
#注意:当有重复的步骤时,时间间隔会以时间最少的为准,如下
-
监控Linux重要文件更改
zabbix server有个自定义的监控文件变化或更改的键值(vfs.file.cksum),如下图,
-
Trigger依赖或报警依赖关系配置
有时候,一个HOST的状态是依赖于其他的host的。比如一个交换机和它后面的一台服务器,当这台交换机出问题的时候,这台服务器自然而然的也是不可用的状态。如果对这两个host都配置了Trigger,那么当交换机出问题时,就会出现两个host的报警,但真实情况是交换机是问题源头。
因为这种依赖性的存在,zabbix在Trigger上设计了依赖关系,配置依赖关系后,只会收到源头的报警,而不是整个相关链路上的报警。如果一个交换机下接着50台服务器,当交换机出现问题时,要是没有使用Trigger依赖,将会收到51个报警,这会有碍于运维工程师排查原因。
在zabbix中,host之间是不能直接有依赖关系的,只能在Trigger之间有依赖关系,一个Trigger可以有多个Trigger依赖于它。
例:吧交换机的hostname定义为switch-a,后面的两台服务器的hostname定义为host-a、host-b,然后在host-a和host-b的Trigger上设置依赖于switch-a的Trigger即可。这样只有在switch-a的Trigger变为problem状态时,host-a和host-b的响应Trigger才会变为problem,并且host-a和host-b不会触发任何action(动作)。
#依赖的配置如下图:
-
聚合图形(screen)
传统图形展示只是单一项,聚合图形就是在单一图形的基础上将多个图形放在一起展示,效果如下图。可用于幻灯片展示。
对应配置:
(1)创建==》编辑==》添加图形==》展示查看
-
幻灯片展示
当屏幕较小,又需要将多个图形进行屏幕展示,可以通过配置多个聚合图形的幻灯片,进行间隔显示,例如隔10s显示一幅聚合图形,一次顺序显示。
配置:
首先配置多个聚合图形==》创建/编辑幻灯片==》选取聚合图形
-
自定义监控项/key键
对于自定义监控点,只要提供一个可以输出值的脚本即可。假设我这里有一个test-tomcat.sh脚本,用于返回tomcat服务是否正常运行情况,返回值是0(故障)或1(正常)。步骤如下:
(1)假设脚本在/test/下,需要在“zabbix_agentd.conf”中添加如下配置。
格式为UserParameter=key_name[*],command
UserParameter=test_tomcat,sh /test/test-tomcat.sh
#第一段的test_tomcat为key名称,这里定义后,可在server端引用。逗号后面为执行的命令。
示例脚本内容如下:
#!/bin/bash
#
netstat -tunlp|grep 8080 &>/dev/null && ps -ef|grep tomcat &>/dev/null
if [ $? == 0 ];then
echo 1 #返回值
else
echo 0 #返回值
fi
#注意:脚本需要添加适当的权限才能执行。需要确认zabbix进程的所属用户/组是否和脚本的所属用户/组一样,否则脚本执行会有权限问题。
(2)重启agent服务后,进行测试
[root@localhost ~]#zabbix_get -s 127.0.0.1 -k test_tomcat
1 #返回的值
(3)在web界面添加监控项(Item)
(4)添加触发器(trigger)
(5)测试。当获取到1值时,tomcat服务状态正常;当获取到0值时,表示tomcat服务异常
(6)扩展知识
1.当脚本需要传入参数时,比如监控远程服务器,需要将IP地址传入。这时格式是这样的,UserParameter=key[*],command,其中的*号意思是方括号中可以有任意多的参数,每个参数由逗号分隔,分别是$1,$2......,它们表示脚本命令行接收到的参数。例如UserParameter=ping[*],echo $1,UserParameter=wc[*],grep -c $2 $1。
2.可以将配置写入到某个文件中,再在zabbix_agentd.conf中用“Include”将文件包括进来。
3.参考zabbix自带的监控项(Item)的写法。
#本博客内容大部分为<Zabbix监控系统深度实践>书籍的读书笔记。
来源:CSDN
作者:樱之魔
链接:https://blog.csdn.net/qq_35229961/article/details/104224250