一、自定义监控项-ssh端口

1.监控主机的22端口

zabbix 更新间隔 自定义时间间隔 zabbix监控项自定义时间间隔_触发器


每个zabbix事件需要大概170字节的磁盘空间,很难估计zabbix每天生成的时间数量,最糟糕的情况下,我们会1秒生成一个事件,如果我们需要保留3年的事件,需要3365243600170=15GB的磁盘空间。下表列出了用于计算zabbix系统所需次哦按空间的计算公式:

zabbix 更新间隔 自定义时间间隔 zabbix监控项自定义时间间隔_触发器_02

#历史数据保留90天
[root@zabbix ~]# python
Python 2.7.5 (default, Apr  2 2020, 13:16:51) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux2
Type "help", "copyright", "credits" or "license" for more information.

90天*(监控项的数量/取值时间)*24*3600*字节数/1024/1024(转换成MB) >>> 90*(100/3)*24*3600*90/1024/1024
22024
  
#趋势365天    
>>> 365*(100/3600)*24*3600*90/1024/1024
0

#事件  
>>> 365*1*24*3600*90/1024/1024
2706
>>>
#获取值
[root@zabbix ~]# zabbix_get -s 10.0.0.52 -k net.tcp.listen[22]
1

zabbix 更新间隔 自定义时间间隔 zabbix监控项自定义时间间隔_zabbix 更新间隔 自定义时间间隔_03

2.停sshd

[root@zabbix ~]# systemctl stop sshd

3.添加值映射

zabbix 更新间隔 自定义时间间隔 zabbix监控项自定义时间间隔_自定义_04

自己创建值映射

zabbix 更新间隔 自定义时间间隔 zabbix监控项自定义时间间隔_zabbix_05

二、自定义监控项-TCP11种状态

1.了解11种状态

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 。

2.配置监控

#进入zabbix客户端配置文件目录
[root@db02 ~]# cd /etc/zabbix/zabbix_agentd.d/
#编辑子配置文件
[root@db02 zabbix_agentd.d]# vim tcp_state.conf
UserParameter=tcp.state[*],netstat -ant|grep -c $1
#重启服务
[root@db02 zabbix_agentd.d]# systemctl restart zabbix-agent.service 
#zabbix-server测试
[root@zabbix ~]# zabbix_get -s 10.0.0.52 -k tcp.state[LISTEN]
8

3.在web页面添加监控项

因为TCP状态有11种,所以我们需要添加11个监控项,我们可以把所有的监控项放入一个中,我们的机器在模板中关联就可以

zabbix 更新间隔 自定义时间间隔 zabbix监控项自定义时间间隔_触发器_06


zabbix 更新间隔 自定义时间间隔 zabbix监控项自定义时间间隔_自定义_07

4.在模板中创建监控项

zabbix 更新间隔 自定义时间间隔 zabbix监控项自定义时间间隔_自定义_08


zabbix 更新间隔 自定义时间间隔 zabbix监控项自定义时间间隔_触发器_09

依次类推,克隆出其他的模板

5.在主机里添加模板

zabbix 更新间隔 自定义时间间隔 zabbix监控项自定义时间间隔_自定义_10

6.测试

[root@zabbix ~]# zabbix_get -s 10.0.0.52 -k tcp.state[LISTEN]
8
[root@zabbix ~]# zabbix_get -s 10.0.0.52 -k tcp.state[CLOSED]
0
[root@zabbix ~]# zabbix_get -s 10.0.0.52 -k tcp.state[LAST-ACK]
0

三、zabbix多条件触发器

监控内存百分比(取出内存的可用大小/总内存大小=实际可用的百分比)

1.自定义监控内存百分比
#在agent端编辑配置
[root@web01 zabbix_agentd.d]# vim /etc/zabbix/zabbix_agentd.d/mem_state.conf
UserParameter=mem.state,free -m|awk '/^Mem/{print $NF*100/$2}'
#重启agent端
[root@db02 zabbix_agentd.d]# systemctl restart zabbix-agent.service 

#在server端获取数据
[root@zabbix ~]# zabbix_get -s 10.0.0.52 -k mem.state
90.664
2.web页面添加监控

zabbix 更新间隔 自定义时间间隔 zabbix监控项自定义时间间隔_运维_11


zabbix 更新间隔 自定义时间间隔 zabbix监控项自定义时间间隔_运维_12

3.添加触发器

zabbix 更新间隔 自定义时间间隔 zabbix监控项自定义时间间隔_运维_13

4.测试
[root@db02 zabbix_agentd.d]# dd < /dev/zero >/dev/null bs=512M count=1024

#因为目前属于单条件触发器,因为内存低于20%就报警了,在生产中并且占用了swap分区以后再报警
5.web页面添加swap监控
[root@db02 zabbix_agentd.d]# vim mem_state.conf
UserParameter=swap.state,free -m|awk '/^Swap/{print $3*100/$2}'
#重启服务
[root@db02 zabbix_agentd.d]# systemctl restart zabbix-agent.service

zabbix 更新间隔 自定义时间间隔 zabbix监控项自定义时间间隔_zabbix_14

zabbix 更新间隔 自定义时间间隔 zabbix监控项自定义时间间隔_运维_15

6.添加多条件触发器

zabbix 更新间隔 自定义时间间隔 zabbix监控项自定义时间间隔_触发器_16

邮件显示内容

zabbix 更新间隔 自定义时间间隔 zabbix监控项自定义时间间隔_zabbix 更新间隔 自定义时间间隔_17

7.常用触发器
and                 #并且
or              #或者
last()          #比对最新的值
avg()           #平均值
diff()          #比对上一次文件的内容
nodata()        #收不不到数据进行报警nodata(5m)
(5m)          #表示最近5分钟得到值
(#5)                #表示最近5次得到的值

四、zabbix自定义的告警方式有哪些?

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

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

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

1.配置动作

zabbix 更新间隔 自定义时间间隔 zabbix监控项自定义时间间隔_运维_18


zabbix 更新间隔 自定义时间间隔 zabbix监控项自定义时间间隔_自定义_19


zabbix 更新间隔 自定义时间间隔 zabbix监控项自定义时间间隔_自定义_20


zabbix 更新间隔 自定义时间间隔 zabbix监控项自定义时间间隔_zabbix_21

2.配置媒介

zabbix 更新间隔 自定义时间间隔 zabbix监控项自定义时间间隔_zabbix_22

3.配置用户

zabbix 更新间隔 自定义时间间隔 zabbix监控项自定义时间间隔_zabbix 更新间隔 自定义时间间隔_23

五、zabbix如何进行自愈? —zabbix自愈模式配置

有时候我们的服务宕机了,或者有些服务停掉了,那我们可以尝试先让他启动,看能否起来,为了不影响用户的体验,先把服务起起来,再去排查是什么原因故障。

那么此时我们就需要用到zabbix的自愈模式,这个…叫起来很好听,说白了,就是在让zabbix-server通过远程执行命令的方式,在agent上执行命令,启动服务。

1.web页面配置
1)先添加一个ssh端口监控的监控项

zabbix 更新间隔 自定义时间间隔 zabbix监控项自定义时间间隔_运维_24

2)添加ssh端口监控的触发器

zabbix 更新间隔 自定义时间间隔 zabbix监控项自定义时间间隔_zabbix 更新间隔 自定义时间间隔_25

3)添加动作

zabbix 更新间隔 自定义时间间隔 zabbix监控项自定义时间间隔_触发器_26


zabbix 更新间隔 自定义时间间隔 zabbix监控项自定义时间间隔_zabbix_27


zabbix 更新间隔 自定义时间间隔 zabbix监控项自定义时间间隔_自定义_28


zabbix 更新间隔 自定义时间间隔 zabbix监控项自定义时间间隔_触发器_29


zabbix 更新间隔 自定义时间间隔 zabbix监控项自定义时间间隔_zabbix 更新间隔 自定义时间间隔_30

2.配置sudo

因为远程执行命令需要通过zabbix用户来执行,因为启动zabbix-server的用户是zabbix,所以我们必须给zabbix添加sudo权限,否则无法执行,并且要无密码

[root@db02 ~]# visudo
%zabbix ALL=(ALL)       NOPASSWD:ALL
[root@db02 ~]# usermod zabbix -s /bin/bash
[root@db02 ~]# su - zabbix 
-bash-4.2$ sudo systemctl start sshd
3.zabbix开启远程执行命令
[root@db02 ~]# vim /etc/zabbix/zabbix_agentd.conf 
EnableRemoteCommands=1
[root@db02 ~]# systemctl  restart  zabbix-agent.service
4.停止sshd服务测试
[root@db02 ~]# systemctl stop sshd

六、zabbix报警升级机制

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

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

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

1.创建用户组

zabbix 更新间隔 自定义时间间隔 zabbix监控项自定义时间间隔_zabbix_31

2.创建用户

zabbix 更新间隔 自定义时间间隔 zabbix监控项自定义时间间隔_zabbix_32


zabbix 更新间隔 自定义时间间隔 zabbix监控项自定义时间间隔_触发器_33

3.设置报警升级动作

zabbix 更新间隔 自定义时间间隔 zabbix监控项自定义时间间隔_触发器_34


zabbix 更新间隔 自定义时间间隔 zabbix监控项自定义时间间隔_zabbix 更新间隔 自定义时间间隔_35

计算方式:
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

七、zabbix如何自定义图形?

1.zabbix创建图形的步骤
1)介绍监控的顺序->应⽤级->监控项->基于监控项创建触发器->基于监控项创建图形
2)基于监控项进行绘图

zabbix 更新间隔 自定义时间间隔 zabbix监控项自定义时间间隔_zabbix 更新间隔 自定义时间间隔_36


zabbix 更新间隔 自定义时间间隔 zabbix监控项自定义时间间隔_运维_37

2.聚合图形

将多张图形整合为一张图片,简称为聚合图形

注意,在这里,聚合图形,我们可以分为以下几类,主要还是看公司的需求

例如:
1.按项目聚合(王者荣耀,LOL,天涯明月刀…)
2.按主机聚合(每台主机的聚合…)
3.按应用聚合(所有nginx的监控,所有MySQL的监控…)

zabbix 更新间隔 自定义时间间隔 zabbix监控项自定义时间间隔_自定义_38

3.如何设置幻灯片

多张聚合图形可以整合为幻灯片

zabbix 更新间隔 自定义时间间隔 zabbix监控项自定义时间间隔_zabbix_39

八、自定义图形扩展

1.安装和配置
#1.安装graphtree
cd /usr/share/zabbix
wget https://raw.githubusercontent.com/OneOaaS/graphtrees/master/graphtree3.0.4.patch
#2.导⼊入补丁包
yum install -y patch
patch -Np0 <graphtree3.0.4.patch 
chown -R apache.apache oneoaas
#3.修改Apache配置⽂文件
vim /etc/httpd/conf.d/zabbix.conf 
Alias /oneoaas /usr/share/zabbix/oneoaas
#4.重启httpd服务 
systemctl restart httpd

2.效果演示

单击->监测中->Graphtree
单击对应的主机->选择需要查看的图形->点击查询->效果展示

zabbix 更新间隔 自定义时间间隔 zabbix监控项自定义时间间隔_运维_40

九、zabbix自定义监控模板

1.模板是⽀支持导⼊入与导出(模板⾥里里⾯面的监控项是有脚本⽀支撑,所以脚本需⼀一起打包)
2.conf⽂文件主要⽤用于定义监控项,监控项⽤用来调⽤用脚本或命令,获取监控值。
3.如果希望将之前定义的监控项做成模板,找到监控项->全选->复制
4.自定义使⽤用模板(让监控项可以重复使⽤用)
5.客户端agent必须要定义监控项,监控项取值需要使⽤用到脚本⽂文件或系统命令
6.服务端导⼊入模板
7.创建监控主机,链接新导⼊入模板,如果是已存在的监控主机,增加我们刚导⼊入的模板