Bootstrap

zabbix5.0版本(自定义监控+报警+图版模型)

目录

1.自定义监控

(1)监控系统登入数量

(2)监控TCP 22端口是否存活,并做值映射

(3)自定义监控服务器内存百分比

(4)配置多条件触发

2.自定义报警

(1)配置邮件发件人,我用的qq邮箱,在设置账户里,开启服务,邮箱同理

(2)配置报警媒介类型

(3)开启动作

(4)配置收件人

(5)dd压测是否发送邮箱

(6)自定义告警内容

(7)远程执行命令

(8)微信报警

3.自定义图形

(1)自定义监控项创建图形

(2)聚合图形

(3)幻灯片演示

4.自定义模块

(1)创建模块

(2)复制自定义监控项配置为模板

(3)复制触发器

(4)复制图形

(5)新建一台服务器关联自定义模板linux-server


zabbix功能很强大,只要是能获取到的数据都可以监控,俗称万物可监控,这也就决定了zabbix有很大的自由度,本篇文章包括自定义监控,自定义报警,自定义图形,自定义模板。

1.自定义监控

通过获取系统信息来定义zabbix的监控项,配置zabbix触发器发送告警通知。

(1)监控系统登入数量

首先获取用户登入系统数量

[root@Web01 ~]# w
 19:25:02 up 2 days,  4:00,  2 users,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty1                      30Mar23 10:37m  0.55s  0.51s bash
root     pts/0    10.0.0.1         11:17    6.00s  0.35s  0.02s w
[root@Web01 ~]# w|grep users|awk '{print $(NF-6)}'
2

定义为zabbix的监控项

#配置zabbix文件
[root@Web01 ~]# cat /etc/zabbix/zabbix_agentd.d/system.conf
UserParameter=login_number,w|grep users|awk '{print $(NF-6)}'    #=后面是固定格式
#查看监控项,有语法检查功能
[root@Web01 ~]# zabbix_agentd -p|grep login_number
login_number                                  [t|2]
#重启客户端
[root@Web01 ~]# systemctl restart zabbix-agent

使用zabbix服务器端进行采集监控

服务端通过命令行测试是否通过监控项来获取用户自定义的值

[root@Zabbix ~]# yum -y install zabbix-get
[root@Zabbix ~]# zabbix_get -s 172.16.1.7 -p 10050 -k login_number
2

(2)监控TCP 22端口是否存活,并做值映射

检查TCP端口是否处于侦听状态,返回0未侦听,返回1正在侦听

#zabbix5.0版本不支持netstat命令需要加s权限
[root@Web01 ~]# chmod +s /bin/netstat
[root@Web01 ~]# netstat -tnulp|grep 0.0.0.0:22|wc -l
1
[root@Web01 ~]# cat /etc/zabbix/zabbix_agentd.d/system.conf
UserParameter=login_number,w|grep users|awk '{print $(NF-6)}'
UserParameter=tcp_listen_22,netstat -tnulp|grep '0.0.0.0:22'|wc -l
[root@Web01 ~]# zabbix_agentd -p|grep tcp_listen_22
tcp_listen_22                                 [t|1]
[root@Web01 ~]# systemctl restart zabbix-agent

端口正常监听状态

停止服务

[root@Web01 ~]# systemctl stop sshd

自定义配置展示值映射

恢复端口侦听

[root@Web01 ~]# systemctl start sshd

(3)自定义监控服务器内存百分比

自定义监控项

[root@Web01 ~]# free|awk 'NR==2{print $NF/$2*100}'
51.5489
[root@Web01 ~]# cat /etc/zabbix/zabbix_agentd.d/system.conf 
UserParameter=login_number,w|grep users|awk '{print $(NF-6)}'
UserParameter=tcp_listen_22,netstat -tnulp|grep '0.0.0.0:22'|wc -l
UserParameter=mem_free,free|awk 'NR==2{print $NF/$2*100}'
[root@Web01 ~]# systemctl restart zabbix-agent
[root@Web01 ~]# zabbix_agentd -p|grep mem_free
mem_free                                      [t|51.3581]

服务端测试获取key值并添加监控

[root@Zabbix ~]# zabbix_get -s 172.16.1.7 -p 10050 -k mem_free
51.536

内存可用百分比小于20%,则触发报警规则

使用dd压测消耗内存

[root@Web01 zabbix_agentd.d]# dd if=/dev/zero of=/dev/null bs=600M count=1024

(4)配置多条件触发

添加swap可用百分比

[root@Web01 zabbix_agentd.d]# free -m|awk 'NR==2{print $
19.856
[root@Web01 zabbix_agentd.d]# cat /etc/zabbix/zabbix_agentd.d/system.conf 
UserParameter=login_number,w|grep users|awk '{print $(NF-6)}'
UserParameter=tcp_listen_22,netstat -tnulp|grep '0.0.0.0:22'|wc -l
UserParameter=mem_free,free|awk 'NR==2{print $NF/$2*100}'
UserParameter=swap_free,free -m|awk 'NR==2{print $3/$2*100}'
[root@Web01 zabbix_agentd.d]# systemctl restart zabbix-agent

添加触发器,先添加一个,再点击表达式构造器,再添加另一个

使用dd压测,并查看仪表盘 

[root@Web01 zabbix_agentd.d]# dd if=/dev/zero of=/dev/null bs=600M count=1024

2.自定义报警
(1)配置邮件发件人,我用的qq邮箱,在设置账户里,开启服务,邮箱同理

(2)配置报警媒介类型

(3)开启动作

(4)配置收件人

(5)dd压测是否发送邮箱
[root@Web01 zabbix_agentd.d]# dd if=/dev/zero of=/dev/null bs=700M count=1024

(6)自定义告警内容
故障操作
默认标题:
故障: {EVENT.NAME}
消息内容:
报警主机: {HOST.NAME1}
报警服务: {ITEM.NAME}
报警key1: {ITEM.KEY1}: {ITEM.VALUE1}
报警key2: {ITEM.KEY2}: {ITEM.VALUE2}
严重级别: {TRIGGER.SEVERITY}
 
恢复操作
默认标题:
恢复: {EVENT.NAME}
消息内容:
恢复主机: {HOST.NAME1}
恢复服务: {ITEM.NAME}
恢复key1: {ITEM.KEY1}: {ITEM.VALUE1}
恢复key2: {ITEM.KEY2}: {ITEM.VALUE2}

自定义操作

自定义恢复操作

 dd压力测试并查看邮箱

(7)远程执行命令

因为zabbix服务启动用户为zabbix,所以在远程执行命令时,需要sudo提权

[root@Web01 ~]# grep zabbix /etc/sudoers
root    ALL=(ALL)       ALL
zabbix ALL=(ALL) NOPASSWD: ALL        
 
#测试zabbix权限
[root@Web01 ~]# su - zabbix -s /bin/bash
Last login: Mon May  8 22:16:48 CST 2023 on pts/0
-bash-4.2$ sudo systemctl restart sshd
 
[root@Web01 ~]# cat /etc/zabbix/zabbix_agentd.conf|grep EnableRemoteCommands
### Option: EnableRemoteCommands - Deprecated, use AllowKey=system.run[*] or DenyKey=system.run[*] instead
EnableRemoteCommands=1
 
[root@Web01 ~]# systemctl restart zabbix-agent

[root@Web01 ~]# systemctl stop sshd

(8)微信报警

配置脚本文件

#需要用到weixin.py脚本和get-pip.py脚本
vim weixin.py
#修改三行内容,具体信息,参考自己的企业微信
corpid='xxx'
appsecret='xxx'
agentid=1xx
 
[root@Zabbix ~]# python get-pip.py        #报错是网络问题,重新执行
[root@Zabbix ~]# pip install requests
[root@Zabbix ~]# python weixin.py  '告警'     #姓名,首字母大写
 
[root@zabbix ~]# mv weixin.py /usr/lib/zabbix/alertscripts/        #移动至zabbix指定的目录
[root@zabbix ~]# chmod +x /usr/lib/zabbix/alertscripts/weixin.py    #给予执行权限

企业微信后台需要添加小程序,添加可信域名(需备案),添加可信IP(zabbix的所在网络的公网IP,curl cip.cc) 

配置报警媒介类型

增加用户的告警媒介,填写收件人

配置动作添加微信媒介进行告警测试

3.自定义图形
(1)自定义监控项创建图形

(2)聚合图形

更改可更换图标,加号可添加行列,减号可删除行列

(3)幻灯片演示

点击即可放映

4.自定义模块
(1)创建模块

创建模板的作用,主机和模板分离,多台服务器监控相同项目只调用一个模板即可,修改监控项修改模板即可完成对所有服务器的操作。

(2)复制自定义监控项配置为模板

找到之前web01的主机监控项,选中点击复制

(3)复制触发器

与监控项同理,进行复制 

(4)复制图形

与监控项、触发器同理,注意:应用集根据需求也可以进行复制

自定义配置的模板信息

(5)新建一台服务器关联自定义模板linux-server
[root@Web01 ~]# rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
 
[root@Web02 ~]# yum -y install zabbix-agent
[root@Web02 ~]# cat /etc/zabbix/zabbix_agentd.conf|grep Server=
#	Example: Server=127.0.0.1,192.168.1.0/24,::1,2001:db8::/32,zabbix.example.com
# Server=
Server=172.16.1.71
 
[root@Web01 ~]# scp /etc/zabbix/zabbix_agentd.d/system.conf 10.0.0.8:/etc/zabbix/zabbix_agentd.d/
 
[root@Web02 ~]# systemctl start zabbix-agent

 各项都监控到了

图形也监控到了

;