zabbix 4.4 源码搭建(一)zabbix-agent 自动发现 (二)zabbix自定义监控 (三)zabbix 微信告警 (四)zabbix 4.4分布式监控 (五)
文章目录
- -监控redis服务
- -利用zabbix自带的功能创建监控项
- -自定义脚本创建监控项
- -创建脚本
- -测试脚本
- -web界面添加监控项
- -字体乱码解决
- -监控nginx服务
- -创建脚本
- -测试脚本
- -web界面添加监控项
- -创建图像
- -触发器
- -创建触发器
- -验证触发器
- -邮件告警
- -用户绑定告警媒介
- -设置报警邮箱
- -添加动作
- -设置问题恢复后发送邮件
- -配置自动重启服务
环境:
- 192.168.1.123 redis nginx mysql_master
- 192.168.1.125 mysql_slave
-监控redis服务
- 利用zabbix自带的功能创建监控项
- 自定义脚本创建监控项
-利用zabbix自带的功能创建监控项
-自定义脚本创建监控项
#修改zabbix_agent配置文件
[root@node3 ~]# vim /etc/zabbix_agentd.conf
# 指定监控项及获取值的方式
UserParameter=redis.status,bash /data/sh/redis_status.sh
# redis.status: 键(监控项)
# bash /data/sh/redis_status.sh 值(获取监控项的方式)
- 创建脚本
- 测试脚本
-创建脚本
[root@node3 ~]# mkdir -p /data/sh
[root@node3 ~]# vim /data/sh/redis_status.sh
#编辑内容
#!/bin/bash
#by scyun
#############
killall -0 redis-server &>/dev/null
if [ $? -eq 0 ];then
echo 0
else
echo 1
fi
-测试脚本
写好脚本后要先测试,脚本有没有问题,没有问题才能继续。而且,测试需要在
客户端及服务端都进行测试!
### 客户端测试
#redis进程存在时测试
[root@node3 ~]# systemctl start redis
[root@node3 ~]# ps -ef |grep redis
redis 42735 1 0 11:19 ? 00:00:00 /usr/bin/redis-server 127.0.0.1:6379
root 42739 6861 0 11:19 pts/0 00:00:00 grep --color=auto redis
#使用killall测试
[root@node3 ~]# killall -0 redis-server
-bash: killall: 未找到命令
#安装killall命令
[root@node3 ~]# yum install psmisc -y
[root@node3 ~]# killall -0 redis-server
[root@node3 ~]# echo $?
0 #服务正常用0表示
[root@node3 ~]# systemctl stop redis
[root@node3 ~]# killall -0 redis-server
redis-server: no process found
[root@node3 ~]# echo $?
1 #服务挂了用1表示
#客户端测试脚本
[root@node3 ~]# bash /data/sh/redis_status.sh
1 # 返回1 表示服务挂了
[root@node3 ~]# systemctl start redis
[root@node3 ~]# bash /data/sh/redis_status.sh
0 # 返回0 表示服务还在
#没问题后去加个权限去服务端测试
[root@node3 ~]# chmod +x /data/sh/redis_status.sh
#临时提权
[root@node3 ~]# chmod u+s /usr/bin/killall
### 服务端测试
#redis进程存在时测试
[root@node2 ~]# zabbix_get -s 192.168.1.123 -k "redis.status"
0
#关闭客户端redis服务后
[root@node2 ~]# zabbix_get -s 192.168.1.123 -k "redis.status"
1
-web界面添加监控项
-字体乱码解决
从本地计算机里找到一个字体,上传到server端,再次刷新网页即可
C:\Windows\Fonts
[root@node2 ~]# mv -b FZSTK.TTF /usr/local/nginx/html/assets/fonts/DejaVuSans.ttf
#刷新zabbix_web界面
-监控nginx服务
#修改zabbix_agent文件
# 指定监控项及获取值的方式
UserParameter=nginx.status,bash /data/sh/nginx_status.sh $1
#重启服务
[root@node3 ~]# systemctl restart zabbix-agent.service
-创建脚本
[root@node3 ~]# curl 192.168.1.123/status
Active connections: 1
server accepts handled requests
4 4 9
Reading: 0 Writing: 1 Waiting: 0
Active connections:当前活动状态的连接数
accepts:统计总值,已经接受的客户端请求的总数
handled:统计总值,已经处理完成的客户端请求的总数
requests:统计总值,客户端发来的总的请求数
Reading:当前状态,正在读取客户端请求报文首部的连接的连接数
Writing:当前状态,正在向客户端发送响应报文过程中的连接数
Waiting:当前状态,正在等待客户端发出请求的空闲连接数
#!/bin/bash
#by scyun
################
function active {
curl 192.168.1.123/status 2>/dev/null |awk 'NR==1{print $NF}'
}
function accepts {
curl 192.168.1.123/status 2>/dev/null | awk 'NR==3{print $1}'
}
function handled {
curl 192.168.1.123/status 2>/dev/null | awk 'NR==3{print $2}'
}
function requests {
curl 192.168.1.123/status 2>/dev/null | awk 'NR==3{print $3}'
}
function reading {
curl 192.168.1.123/status 2>/dev/null | awk 'NR==4{print $2}'
}
function writing {
curl 192.168.1.123/status 2>/dev/null | awk 'NR==4{print $4}'
}
function waiting {
curl 192.168.1.123/status 2>/dev/null | awk 'NR==4{print $NF}'
}
$1
-测试脚本
#客户端测试脚本
[root@node3 sh]# bash /data/sh/nginx_status.sh requests
39
[root@node3 sh]# bash /data/sh/nginx_status.sh active
1
#服务端测试脚本
[root@node2 ~]# zabbix_get -s 192.168.1.123 -k nginx.status[requests]
41
[root@node2 ~]# zabbix_get -s 192.168.1.123 -k nginx.status[active]
1
-web界面添加监控项
-创建图像
-触发器
-创建触发器
-验证触发器
#把redis服务关了试试
[root@node3 sh]# systemctl stop redis
#开启服务后过一会会显示已解决
[root@node3 sh]# systemctl start redis
-邮件告警
-用户绑定告警媒介
-设置报警邮箱
-添加动作
都设置好了后要点添加上面的添加,不然不刚刚选的都是无效的。
-设置问题恢复后发送邮件
-配置自动重启服务
服务挂了后先让zabbix发送命令尝试重启服务,如果起不来再发送邮件