分布式监控系统——Zabbix(3)配置

文章目录

  • 分布式监控系统——Zabbix(3)配置
    • 一、监控项
      • 1.定义一个不带参数的监控项
      • 2.定义一个带参数的监控项
      • 3.删除监控项
      • 4.监控项存储的值
    • 二、触发器
      • 1.简介
      • 2.触发器表达式
      • 3.定义一个触发器
      • 4.触发器的依赖关系
      • 5.定义动作(action)
        • 1.简介
        • 2.定义一个媒介(media)
        • 3.定义一个动作(action)

分布式监控系统——Zabbix(3)配置

一、监控项

1.定义一个不带参数的监控项

分布式监控系统——Zabbix(3)配置_第1张图片

分布式监控系统——Zabbix(3)配置_第2张图片

更新即可,事实上,需要关注的指标有很多种,一一添加进来即可。以上定义的监控项是很简单的,制定一个key即可,但是有些监控项是带有参数的,这样一来,监控项就更有灵活性。

2.定义一个带参数的监控项

分布式监控系统——Zabbix(3)配置_第3张图片

  • []就是需要参数的意思,里面的值即为参数。
  • <>为不可省略的。

例:if表示是接口名;表示是哪种模式,包括但不限于:packets(包)、bytes(字节)、errors(错误)、dropped(丢包)、overuns等等(上述内容通过ifconfig查看)。

设置一个监控值:

分布式监控系统——Zabbix(3)配置_第4张图片

分布式监控系统——Zabbix(3)配置_第5张图片

通过命令行来查看:

查看网页的显示情况:

分布式监控系统——Zabbix(3)配置_第6张图片

3.删除监控项

如果有一个监控项,用不上了,就可以删除掉。但是如果你直接删除的话,默认数据是会留下的,所以要先清楚数据,然后再删除,具体步骤如下:

分布式监控系统——Zabbix(3)配置_第7张图片

4.监控项存储的值

对于监控项的值,老一点的版本只有以下三种方式:

  1. AS is:不对数据做任何处理(存储为原始值)。
  2. Delta:(simple change变化),本次采样减去前一次采样的值的结果。
  3. Delta:(speed per second速率),本次采样减去前一次采样的值,再除以经过的时长。

在3.4版本之后有了更多的表现形式:

分布式监控系统——Zabbix(3)配置_第8张图片

二、触发器

1.简介

当采集的值定义完了以后,就可以来定义触发器了。触发器的定义是:界定某特定的item采集到的数据的非合理区间或非合理状态。通常为逻辑表达式。逻辑表达式(阈值):通常用于定义数据的不合理区间,其结果如下:

  • OK(不符合条件):正常状态——》较老的zabbix版本叫FALSE。
  • PROBLEM(符合条件):非正常状态——》较老的zabbix版本叫TRUE。

评定采样数值是否为合理区间的比较稳妥的方法是一一根据最后N次的平均值来判定结果;这个最后N次通常有两种定义方式:

  • 最近N分钟所得结果的平均值
  • 最近N次所得结果的平均值

触发器存在可调用的函数:

函数 描述
nodata() 是否采集到数据,采集不到则为异常
last() 最近几次
date() 时间,返回当前时间,格式YYYYMMDD
time() 返回当前时间,格式HHMMSS
now() 返回距离Epoch(1970年1月1日00:00:00UTC)时间的秒数
dayofmonth() 返回当前是本月的第几天

注:能用数值保存的就不要使用字符串

2.触发器表达式

基本的触发器表达式格式如下所示

{:.()}
  • server:主机名称

  • key:主机上关系的响应监控项的key

  • function:评估采集到的数据是否在合理范围内时所使用的函数,其评估过程可以根据采集的数据,当前时间及其他因素进行

  • 目前触发器所支持的函数有avg、change、dayofweek、delta、diff、iregexp、last、max、min、nodata、now、sum等

  • parameter:函数参数;大多数数值函数可以接受秒数为其参数,而如果在数值参数之前使用“#”作为前缀,则表示为最近几次的数值,如sum(300)表示300秒内所有取值之和,而sum(#10)则表示最近10次取值之和

  • 此外,avg、count、last、min和max还支持使用第二个参数,用于完成时间限定;例如max(1h,7d)将返回一周之前的最大值

  • 表达式所支持的运算符及其如下图所示:

    分布式监控系统——Zabbix(3)配置_第9张图片

3.定义一个触发器

查看一下aaa监控项的值,并以其为标准确定我们的非正常的值:

分布式监控系统——Zabbix(3)配置_第10张图片

添加成功后再去最新数据里面查看图形,可以看到里面就有了一根线,就是定义的值:

分布式监控系统——Zabbix(3)配置_第11张图片

超过线的即为异常状态,看起来非常直观。现在即使超过了这根线,也仅仅会产生一个触发器时间而不会做其他任何事。因此,需要去定义一个动作(action)

4.触发器的依赖关系

触发器彼此之间可能会存在依赖关系的,一旦某一个触发器被触发了,那么依赖之歌触发器的其余触发器都不需要再报警。

多台主机是通过交换机的网络连接来实现被监控的。如果交换机出了故障,我们的主机自然也无法继续被监控,如果此时,所有主机统统报警,要解决这样的问题,就是定义触发器之间的依赖关系,当交换机挂掉,只有自己报警就可以了,其他的主机就不要再报警了。这样也更易于我们判断真正故障所在。

注意:目前zabbix不能够直接定义主机间的依赖关系,其依赖关系仅能通过触发器来定义。

定义一个依赖关系:打开任意一个触发器,上面就有依赖关系,我们进行定义即可:

分布式监控系统——Zabbix(3)配置_第12张图片

分布式监控系统——Zabbix(3)配置_第13张图片

触发器可以有多级依赖关系,比如:

分布式监控系统——Zabbix(3)配置_第14张图片

5.定义动作(action)

1.简介

  • 需要去基于一个对应的事件为条件来指明该做什么事,一般就是执行远程命令或者发警报。
  • 有一个告警升级的机制,所以,当发现问题的时候,一般是先执行一个远程操作命令,如果能够解决问题,就会发一个恢复操作的讯息给接收人,如果问题依然存在,则会执行发警报的操作,一般默认的警报接收人是当前系统中有的zabbix用户,所以当有人需要收到警报操作的话,我们则需要把它加入我们的定义之中。
  • 每一个用户也应该有一个接收告警信息的方式,即媒介,就像我们接收短信需要有手机号一样。
  • 每一个监控主机,能够传播告警信息的媒介有很多种,就算我们的每一种大的媒介,能够定义出来的实施媒介也有很多种,而对于一个媒介来说,每一个用户都有一个统一的或者不同的接收告警信息的端点,我们称之为目标地或者目的地。

综上为了能够发告警信息

  • 第一,我们要事先定义一个媒介
  • 第二,还要定义这个媒介上用户接收信息的端点(当然,在用户上,也称之为用户的媒介)。

系统内建的媒介类型:

分布式监控系统——Zabbix(3)配置_第15张图片

这只是基本的媒介类型,里面还有更多的细分,已Email为例:

分布式监控系统——Zabbix(3)配置_第16张图片

而同一个类型也可以定义多个,以Email为例,可以定义一个腾讯的服务器,一个网易的服务器等等。

2.定义一个媒介(media)

以Email为例:

分布式监控系统——Zabbix(3)配置_第17张图片

分布式监控系统——Zabbix(3)配置_第18张图片

定义后更新就可以了,媒介定义好了还需要让用户接收到邮件:

  • 进入管理——》用户——》Admin——》报警媒介
  • 添加一条进来:

分布式监控系统——Zabbix(3)配置_第19张图片

PS:一个用户可以添加多个接收的媒介类型。

3.定义一个动作(action)

动作是在某些特定条件下触发的,比如:某个触发器被触发了,就会触发动作。现在基于redis来定义一个动作。

#在agent端安装并启动redis
[root@node1 ~]# yum -y install redis
[root@node1 ~]# systemctl start redis
[root@node1 ~]# ss -nutlp|grep redis

定义监控项:配置——主机——node1——监控项——创建监控项

分布式监控系统——Zabbix(3)配置_第20张图片

填写完毕后添加即可,此时可以查看值:

分布式监控系统——Zabbix(3)配置_第21张图片

定义触发器:

分布式监控系统——Zabbix(3)配置_第22张图片

手动关闭redis服务来检测一下:

[root@node1 ~]# systemctl stop redis

分布式监控系统——Zabbix(3)配置_第23张图片

创建动作:

分布式监控系统——Zabbix(3)配置_第24张图片

分布式监控系统——Zabbix(3)配置_第25张图片

分布式监控系统——Zabbix(3)配置_第26张图片

分布式监控系统——Zabbix(3)配置_第27张图片

分布式监控系统——Zabbix(3)配置_第28张图片

需要在虚拟机上进行两项操作:

  • 修改sudo配置文件使zabbix用户能够临时拥有管理员权限
  • 修改zabbix配置文件使其允许接收远程命令
[root@node1 ~]# visudo
     91 ## Allow root to run any commands anywhere
     92 root    ALL=(ALL)       ALL
     93 zabbix  ALL=(ALL)       NOPASSWD:ALL	#添加此行
[root@node1 ~]# vim /etc/zabbix/zabbix_agentd.conf 
EnableRemoteCommands=1							#73行取消注释改为1。允许接收远程命令
LogRemoteCommands=1								#82行取消注释改为1。把接收的远程命令记入日志
[root@node1 ~]# systemctl restart zabbix-agent.service

添加了第一步需要做的事情,需要重启服务,如果重启不成功怎么办呢?就需要来添加第二步:

分布式监控系统——Zabbix(3)配置_第29张图片

分布式监控系统——Zabbix(3)配置_第30张图片

分布式监控系统——Zabbix(3)配置_第31张图片

测试(关闭redis):

分布式监控系统——Zabbix(3)配置_第32张图片

如上图,提示警告,再看redis服务又被远程命令拉了起来:

分布式监控系统——Zabbix(3)配置_第33张图片

END

你可能感兴趣的:(zabbix,分布式,zabbix,运维)