zabbix自定义监控

一.zabbix快速监控主机

环境规划及地址分配

1)客户端安装配置

1.安装Zabbix-Agent被监控端(想要监控主机都要安装)

#配置zabbix仓库
[root@web01 ~]# rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
#安装zabbix-agent
[root@web01 ~]# yum -y install zabbix-agent

2.配置Zabbix-Agent指向Zabbix-Server的IP地址

[root@web01 ~]# vim /etc/zabbix/zabbix_agentd.conf
......
Server=172.16.1.71
......

3.启动Zabbix-Agent,并加入开机自启。

[root@web01 ~]# systemctl start zabbix-agent
[root@web01 ~]# systemctl enable zabbix-agent
#Zabbix-Agent默认监听10050端口
[root@web01 ~]#  netstat -lntp4
......
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      12559/zabbix_agent
......

2)zabbix-web界面添加主机

操作步骤如下:
点击配置→主机→添加主机→配置主机信息→模板→选择→选择需要的模板→添加→添加






二.自定义监控主机初试

1.监控登录主机的用户数

#获取监控系统的中的键值对象
#(系统监控命令 + awk + 筛选条件 = 监控的状态值)
[root@web01 ~]# w|awk 'NR==1 {print $4}'
2
#说明:这里是新的服务器,取值为第四列,如果服务器运行超过一天,取值为第六列。

2.在/etc/zabbix/zabbix_agentd.d/⽬目录中新增监控项,使用UserParameter=,

[root@web01 /etc/zabbix/zabbix_agentd.d]# vim login_number.conf
UserParameter=login_number,w|awk 'NR==1{print $4}'
#重启zabbix-agent使其监控项⽣生效
[root@web01 ~]# systemctl restart zabbix-agent

3.在ZabbixAgent客户端测试⾃自定义的监控项是否能正常取值,使⽤用zabbix_agentd -p | grep

[root@web01 /etc/zabbix/zabbix_agentd.d]# zabbix_agentd -p |grep login_number
login_number                                  [t|2]

4.使⽤用ZabbixServer检测能否获取ZabbixAgent端⾃自定义的监控项,使⽤用zabbix_get -s IP -addr -k KeyName

#安装zabbix-get
[root@zabbix ~]# yum -y install zabbix-get -y
#检测
[root@zabbix ~]# zabbix_get -s 172.16.1.7 -p10050 -k login_number
2

5.如果测试都没有问题,可以在ZabbixWeb对该主机关联对应的监控项
(1)点击配置->主机->对应主机

(2)找到监控项->创建监控项->名称->键值(监控项⽬目名称)->信息类型->单位

(3)点击监测中->最新数据->等待数据






6.服务器较多的情况下还是选着创建模板来使用更加方便














7.⾃自定义阈值,如果登陆⽤用户超过2⼈人则达到阈值(到达预设的瓶颈)
单主机设设置方法
(1)点击配置->主机->对应主机

(2)点击触发器器->创建触发器器->名称->选择表达式->确定即可。
关联模板的设置方式






8.配置zabbixserver达到阈值,则触发前台⾯面板报警通知

(1)点击右上角⼩人头->正在发送消息->开启

(2)被监控端开启多个Linux会话窗⼝,等待zabbixweb前端报警



关闭窗口

三.zabbix自定义监控项的深入

1.详细介绍基础模板中的监控项, 以及⾃自定义添加监控项中的每一个参数的作⽤和使用方法。
2.监控tcp/22端⼝口是否处于监听状态,使用Service State进行值映射

(1).检测web01服务器的22端口的存活状态
zabbix-agant端配置
说明:这里是通用配置,可以适用监控其它端口,这需要在配置监控项时,多添加几个就可以了。

#创建配置文件
[root@web01 /etc/zabbix/zabbix_agentd.d]# vim port_status.conf
UserParameter=listen[*],netstat -lnt|grep -w tcp|awk -F: '{print $2}'|grep -wc $1
#重启server-angent
[root@web01 ~]# systemctl restart zabbix-agent.service

zabbix-server端数据测试

#在zabbix-server端进行采集的数据测试
[root@zabbix ~]# zabbix_get -s 172.16.1.7 -k listen[22]
1

在web界面创建监控项










说明:这种显示的结果不够直观,建议使用值映射更方便查看。
(2)创建值映射


3.监控TCP的十一种状态

十一种状态说明

LISTEN - 侦听来自远方TCP端口的连接请求;
SYN-SENT -在发送连接请求后等待匹配的连接请求;
SYN-RECEIVED - 在收到和发送一个连接请求后等待对连接请求的确认;
ESTABLISHED- 代表一个打开的连接,数据可以传送给用户;
FIN-WAIT-1 - 等待远程TCP的连接中断请求,或先前的连接中断请求的确认;
FIN-WAIT-2 - 从远程TCP等待连接中断请求;
CLOSE-WAIT - 等待从本地用户发来的连接中断请求;
CLOSING -等待远程TCP对连接中断的确认;
LAST-ACK - 等待原来发向远程TCP的连接中断请求的确认;
TIME-WAIT -等待足够的时间以确保远程TCP接收到连接中断请求的确认;
CLOSED - 没有任何连接状态;
客户端独有的:(1)SYN_SENT (2)FIN_WAIT1 (3)FIN_WAIT2 (4)CLOSING (5)TIME_WAIT 。
服务端独有的:(1)LISTEN (2)SYN_RCVD (3)CLOSE_WAIT (4)LAST_ACK 。
共有的:(1)CLOSED (2)ESTABLISHED 。
  • 1.在zabbix-agent端进行数据的采集(可以使用脚本的形式)
[root@web01 /etc/zabbix/zabbix_agentd.d]# vim tcp_status.conf
UserParameter=TCP[*],netstat -ant |grep  -wc $1
[root@web01 /etc/zabbix/zabbix_agentd.d]# systemctl restart zabbix-agent.service
  • 2在zabbix-server端进行采集的数据测试
[root@zabbix ~]# zabbix_get -s 172.16.1.7 -k TCP[LISTEN]
12
  • 3在web界面开始创建监控项



创建触发器


创建图形


创建聚合图形


4.自定义阈值

控内存百分比(取出内存的可⽤用大⼩/ 总内存大小 = 实际可⽤百分⽐
1.取值进行采集数据

[root@web02 ~]# free -m|awk '/^Mem/{print $NF*100/$2}'
63.9918

2.自定义监控项内存百分比

[root@web02 ~]# vim /etc/zabbix/zabbix_agentd.d/free_mem.conf
UserParameter=Mem_Pep,free -m|awk '/^Mem/{print $NF*100/$2}'

3.重启zabbix-agent

[root@web02 ~]# systemctl restart zabbix-agent.service
  1. 在zabbix-server端检测是否可以取值
[root@zabbix ~]# zabbix_get -s 172.16.1.8 -k Mem_Pep
63.3745

5.zabbix-web界面添加监控


自定义单条件触发器,设置内存高于60%则触发进行报警
1.创建触发器


2.填写表达式



设置邮件报警
说明:web界面报警存在一定的局限性,这里可以使用邮件报警来实现异地报警。
1.定义发件人

2.配置收件人


3.触发邮件的动作设置



自定义多条件触发器,内存低于60%和SWAP内存使用大于5%则触发报警这样更加精确
1.添加监控swap

[root@web02 ~]# vim /etc/zabbix/zabbix_agentd.d/swap_use.conf
UserParameter=Swap_pre,free -m|awk '/^Swap/{print $3*100/$2}'

2.重启zabbix-agent

[root@web02 ~]# systemctl restart zabbix-agent.service

3.zabbix-server服务端测试是否可以取到key

[root@zabbix ~]# zabbix_get -s 172.16.1.8 -k Swap_pre
0

4.zabbix-web界面创建监控项



5.基于原来的触发器进行修改,修改为同时满足才触发
{web01:Mem_Pep.last()}<60 and {web01:Swap_pre.last()}>1



6.使用dd命令消耗客户端的内存使用(只满⾜内存低于60%,所以不会进行报警)
[root@web02 ~]# dd if=/dev/zero of=/dev/null bs=300M count=1024

7.使用dd命令消耗客户端的内存使用(内存低于60%,并且swap高于1%)

[root@web01 ~]# dd if=/dev/zero of=/dev/null bs=800M count=1024

常用的触发器表达式,常⽤的函数,触发器表达式参考url
https://www.zabbix.com/documentation/4.0/zh/manual/appendix/macros/suppoorted

and #并且
or  #或者
last() #⽐比对最新的值
avg()  #平均值
diff() #⽐比对上⼀一次⽂文件的内容 nodata() #收不不到数据进⾏行行报警nodata(5m)
(5m)   #表示最近5分钟得到值
5.zabbix自定义报警方式

当监控项超过触发器设定的阈值->触发动作->(发送消息|执行命令)

1.怎么报警-> 2.报警怎么发,发什么内容 -> 报警发给谁

注意:要使SMTP验证选项可用,Zabbix服务器应使用cURL 7.20.0或更⾼版本

自定义报警的内容,单步骤操作



2.配置故障报警消息和恢复报警消息,定制消息内容如下: 定制Zabbix报警的内容

#故障报警消息内容
报警主机:{HOST.NAME1}
报警服务: {ITEM.NAME1}
报警Key1: {ITEM.KEY1}:{ITEM.VALUE1}
报警Key2: {ITEM.KEY2}:{ITEM.VALUE2} 严重级别: {TRIGGER.SEVERITY}

#恢复报警消息内容
恢复主机:{HOST.NAME1}
恢复服务: {ITEM.NAME1} 
恢复Key1:{ITEM.KEY1}:{ITEM.VALUE1} 
恢复Key2: {ITEM.KEY2}:{ITEM.VALUE2}

#故障报警消息内容
默认标题:故障:{TRIGGER.STATUS},服务器:{HOSTNAME1}发生:{TRIGGER.NAME}
消息内容:
告警地址:{HOST.IP}
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE}{EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
6.zabbix自愈模式配置

有时候,我们的服务宕机了,或者有些服务要停掉了,那么我们可以先尝试将服务起起来,然后再去排查是什么原因导致的。
这里启动服务就需要用到zabbix的自愈模式,就是在zabbix-server通过远程执行命令的方式,在agent上执行命令,启动服务。
1.这里使用之前的ssh自愈操作进行修改
2.配置sudo
因为远程执行命令需要通过zabbix用户来执行,因为启动zabbix-server的用户是zabbix,所以我们必须给zabbix添加sudo权限,否者无法执行,并且要密码。

#添加权限
[root@web02 /etc/zabbix/zabbix_agentd.d]# visudo
%zabbix  ALL=(ALL)      NOPASSWD: ALL
[root@web02 /etc/zabbix/zabbix_agentd.d]# usermod zabbix -s /bin/bash

3.开启远程执行命令

[root@web02 /etc/zabbix/zabbix_agentd.d]# vim /etc/zabbix/zabbix_agentd.conf
EnableRemoteCommands=1

4.重启zabbix-agent

[root@web02 /etc/zabbix/zabbix_agentd.d]# systemctl restart zabbix-agent.service

故障演示
1.zabbix-web设置

7.png

2.演示故障关闭web2 sshd服务 systemctl stop sshd
3.web界面查看结果


四.zabbix报警升级机制

场景一:在企业中,我们需要把报警设置为升级机制,当有些报警,运维人员没有及时处理的时候,或者没有时间,或者外出,或者陪产在医院,或者...总之身边没有电脑没有网络,在山沟子里的时候,必须有人站出来,解决这个问题。

场景二:当zabbix报警服务器出现问题的时候,例如MySQL挂了,运维人员在厕...没有及时处理,那一分钟后这个警告肯定要升级,从警告变成严重故障之类的。

所以不管在哪种场景下,我们要有不同的报警人员,比如,一级报警,交给运维,没有及时处理就二级报警,交给运维总监或者运维经理,如果此时报警还没有人处理,那么报警就会升级到CTO或者CEO那里,那么这个时候,也是灾难降临之时,这也是一个很好的对运维人员必须要及时处理告警的一个制约。
1.创建用户组


2.创建用户


3.设置报警升级动作


计算方式:
1)开始于 ,这个是相对一但触发监控,则立即发送消息
2)1-2步骤是给运维组发送消息,每隔5分钟发送一次,总共2个步骤,所以发送2次
3)3-4步骤是给运维经理组发送消息,每隔5分钟发送一次,总共2个步骤,所以发送2次
4)4-5步骤是给运维总监组发送消息,每隔5分钟发送一次,总共2个步骤,所以发送2次
5)每次的开始时间是如何计算的呢,第一个立即开始:
1-2,3-4,4-5动作时间间隔是5分钟,所以在触发告警发送时间计算是5m+5m+5m=15m

web界面查看结果

你可能感兴趣的:(zabbix自定义监控)