Zabbix:监控系统知识整理及优化

那年仲夏 提交于 2020-03-08 20:08:53

目录

监控系统介绍

安装

下载

解压编译

安装并启动服务

配置数据库

安装zabbix web前端

完成安装

配置文件详解

zabbix_server.conf

zabbix_agent.conf

说明部分

服务端命令

主要功能说明

添加主机

Template(模板)、Item(监控项)和trigger(触发器)之间的关系

zabbix重要性能指标

查看最新监控数据

批量更新主机配置

主动模式被动模式区别

 Agent配置多台server端同时监控

取消模板链接的区别

在监控项Item中引用变量

通过SSH远程执行命令/脚本

值映射

报警信息认领处理

监控报警频率设置

监控Linux重要文件更改

Trigger依赖或报警依赖关系配置

聚合图形(screen)

幻灯片展示

自定义监控项/key键


 

 

监控系统介绍

(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-1
图1-2

 

 

  • 安装并启动服务

(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监控系统深度实践>书籍的读书笔记。

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!