一、自定义监控项—SSH
1.创建自定义的监控模板(模板、应用集、监控项等都可以根据规划自行创建)
2.创建自定义监控项
3.在server端测试键值
[root@localhost ~]# zabbix_get -s 192.168.100.105 -p 10050 -k "net.tcp.listen[22]"
1
4.在web页面查看监测结果
5.关闭ssh服务查看获取的值
[root@web01 ~]# systemctl stop sshd
6.添加值映射
从上图可以看出,当端口存活的时候,数据是1,当端口不存在的时候,数据是0。看起来不够直观,一般谁会去记1和0,所以此时我们可以给值添加一个映射关系,可以理解为创建一个别名。
查看系统自带应设置
创建自定义的映射值
填入名称,以及值对应的映射信息
在监控项中选中自定义的映射值
在web页面查看自定义的映射效果
二、自定义监控项—TCP状态
1.TCP11种状态
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 : 没有任何连接状态;
2.在agent端自定义键值关系
[root@web01 ~]# cd /etc/zabbix/zabbix_agentd.d/
[root@web01 zabbix_agentd.d]# vim tcp_listen.conf
UserParameter=tcp.state[*],netstat -ant|grep $1 |wc -l
语法: userparameter=key,shell commond
重启agent端
[root@web01 zabbix_agentd.d]# systemctl restart zabbix-agent
在server端进行测试
[root@localhost ~]# zabbix_get -s 192.168.100.105 -p 10050 -k "tcp.state[LISTEN]"
18
3.配置监控项
以此类推,按照相同的方式创建状态的监控项。
4.将模板与主机关联
在创建模板时可以主机群组或者单个主机的方式进行关联,如果未关联在创建完成后的主机配置页面也可单独进行关联,具体方式使用根据规划自行选择。
5.查看监控状态
三、zabbix多条件触发器
1.自定义监控内存百分比
1)在agent端编辑配置
[root@web01 ~]# cd /etc/zabbix/zabbix_agentd.d/
[root@web01 zabbix_agentd.d]# vim mem_state.conf
UserParameter=mem.state_avai,free -m|awk '/^Mem/{print $NF*100/$2}' #查看可用内存百分比
UserParameter=mem.state_free,free -m|awk '/^Mem/{print $4*100/$2}' #查看空闲内存百分比
2)在web端配置监控项
3)在监测中列表内查看获取到的最新数据
4)为展示数据加上单位
5)查看展示效果
2.添加触发器设置报警
1)添加触发器
添加第一个触发器,可用内存率
添加第二个触发器,空闲内存率
2)查看触发器报警效果
web02服务器空闲内存正好低于触发器阈值,查看报警效果
3)添加swap分区监控项
目前属于单条件触发器,因为内存低于20%就报警了,在生产中,我们应该是当内存低于20%并且占用了swap空间,然后再报警。
在agent端编辑配置文件
[root@web01 ~]# cd /etc/zabbix/zabbix_agentd.d/
[root@web01 zabbix_agentd.d]# vim mem_state.conf
UserParameter=mem.state_avai,free -m|awk '/^Mem/{print $NF*100/$2}'
UserParameter=mem.state_free,free -m|awk '/^Mem/{print $4*100/$2}' #末尾添加一行
UserParameter=mem.state_swap,free -m|awk '/^Swap/{print $3*100/$2}'
重启agent
[root@web01 zabbix_agentd.d]# systemctl restart zabbix-agent
添加swap分区利用率的监控项
4)添加多条件触发器
5)测试报警效果
使用dd命令测试效果
[root@web01 zabbix_agentd.d]# dd < /dev/zero > /dev/null bs=1024M count=2048
四、zabbix自愈模式
有些时候,我们的服务宕机了,或者有些服务停掉了,那么我们可以先尝试让他启动,看是否能起的来,为了不影响用户的体验,先把服务起起来,然后再去排查,是什么原因故障的。
那么此时我们就需要用到zabbix的自愈模式,说白了,就是在让zabbix-server通过远程执行命令的方式,在agent上执行命令,启动服务。
以之前监听的SSH服务为例,如果监测到SSH服务端口异常,则自动重启客户端的SSH服务。
1.web页面配置监控项、触发器
2.配置sudo权限
因为远程执行命令需要以zabbix用户身份执行,因此需要给zabbix命令配置权限,并且无需密码。
#agent端添加sudo权限
[root@web01 zabbix_agentd.d]# visudo
%zabbix ALL=(ALL) NOPASSWD:ALL
#测试启动服务
[root@web01 zabbix_agentd.d]# usermod zabbix -s /bin/bash
[root@web01 zabbix_agentd.d]# su - zabbix
-bash-4.2$ sudo systemctl start sshd
#修复zabbix家目录布局
[root@web01 zabbix_agentd.d]# mkdir /var/lib/zabbix
[root@web01 zabbix_agentd.d]# cp -r /etc/skel/.* /var/lib/zabbix/
[root@web01 zabbix_agentd.d]# chown -R zabbix.zabbix /var/lib/zabbix/
3.zabbix开启远程执行命令配置
[root@web01 zabbix_agentd.d]# vim /etc/zabbix/zabbix_agentd.conf
EnableRemoteCommands=1
#重启zabbix-agent
[root@web01 zabbix_agentd.d]# systemctl restart zabbix-agent
4.关闭ssh服务进行测试
[root@web01 zabbix_agentd.d]# systemctl stop sshd
五、zabbix升级报警
场景:当监控系统监测到服务器或者服务异常时,触发了报警,如果运维因为各种原因没有及时看到报警信息,可能会对业务造成影响。因此需要通过升级报警机制,如果运维没有及时处理,则会逐级升级报警级别报警给领导。
实现方式:通过群组、用户管理,以及配置动作来实现逐级报警的功能。
1.第一步:配置群组。
2.第二步:配置用户、关联报警媒介。
3.第三步:配置报警动作。
在操作步骤内通过操作步骤以及持续时间按时间段报警给不同级别的群组。
例如截图中
1)如果SSH服务发生异常,首先会通过命令重启SSH服务,一分钟后如果服务未回复正常,则会报警通知运维组成员
2)如果命令重启服务失败,且运维组成员未处理异常信息,该触发器还处于报警状态时,则会在第11分钟报警通知部门领导组的成员。
3)以此类推,如果部门领导依然未通知运维处理该异常报警,则会报警通知公司领导。
六、zabbix自定义图形
需求:将多台主机的同一监控项整合到一个图形中。例如多台主机的CPU、内存或者流量信息。
1.将多个监控项整合到一个图形中
如有其他需要整合的图形也可采用该方式进行集中展示,例如CPU空闲率、出入流量等信息。
2.将整合后的图形展示到聚合图形中。
3.将多个图形添加到新仪表盘中
#注意:
聚合图形的使用,可以根据公司需求,按照以下几种方式进行分类。
例如:
1.按照项目聚合(不同的项目,王者荣耀、绝地求生、穿越火线手游等)
2.按照主机聚合。
3.按照应用聚合。(MySQL数据库服务、NGINX服务、Java服务、python服务等)