一、环境搭建(nginx监控)
1、客户端配置
(1)安装nginx
yum install nginx -y
(2)配置nginx
vim /etc/nginx/nginx.conf
location /nginx_status {
stub_status;
allow 127.0.0.1;
deny all ;
}
(3)启动nginx
systemctl start nginx.service
(4)编辑nginx监控脚本
vim /etc/zabbix/zabbix_agentd.d/nginx_status.sh
#!/bin/bash
nginx_status_fun(){ #函数内容
NGINX_PORT=$1 #端口,函数的第一个参数是脚本的第二个参数,即脚本的第二个参数是段端口号
NGINX_COMMAND=$2 #命令,函数的第二个参数是脚本的第三个参数,即脚本的第三个参数是命令
nginx_active(){ #获取nginx_active数量,以下相同,这是开启了nginx状态但是只能从本机看到
/usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| grep 'Active' | awk '{print $NF}'
}
nginx_reading(){ #获取nginx_reading状态的数量
/usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| grep 'Reading' | awk '{print $2}'
}
nginx_writing(){
/usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| grep 'Writing' | awk '{print $4}'
}
nginx_waiting(){
/usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| grep 'Waiting' | awk '{print $6}'
}
nginx_accepts(){
/usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $1}'
}
nginx_handled(){
/usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $2}'
}
nginx_requests(){
/usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $3}'
}
case $NGINX_COMMAND in
active)
nginx_active;
;;
reading)
nginx_reading;
;;
writing)
nginx_writing;
;;
waiting)
nginx_waiting;
;;
accepts)
nginx_accepts;
;;
handled)
nginx_handled;
;;
requests)
nginx_requests;
esac
}
main(){ #主函数内容
case $1 in #分支结构,用于判断用户的输入而进行响应的操作
nginx_status) #当输入nginx_status就调用nginx_status_fun,并传递第二和第三个参数
nginx_status_fun $2 $3;
;;
*) #其他的输入打印帮助信息
echo $"Usage: $0 {nginx_status key}"
esac #分支结束符
}
main $1 $2 $3
(5)修改脚本权限
chmod +x /etc/zabbix/zabbix_agentd.d/nginx_status.sh
(6)编辑zabbix-agent配置文件
vim /etc/zabbix/zabbix_agentd.conf
UserParameter=nginx.status[*],/etc/zabbix/zabbix_agentd.d/nginx_status.sh $1 $2 $3
(7)重启zabbix-agent
systemctl restart zabbix-agent.service
(8)server端测试
zabbix_get -s 192.168.43.101 -p 10050 -k "nginx.status[nginx_status,80,active]"
2、新建模板以及链接主机
(1)新建模板或者导入已有的模板
创建模板
(2)链接主机
链接主机
(面)3、设置报警
(1)新建报警媒介
新建报警媒介
参数填写
上面的配置相当于是配置邮件的发件人,由于使用的是163邮箱,服务使用的pop3服务,所以可以在163邮箱设置中查找pop3,可以获取服务器地址和端口,服务要确保开启
pop3
smtp电邮填写要发送的163邮箱,生产中ssl要勾选,认证选择用户名和密码,用户名是发送邮件的163箱,密码填写授权码
授权码
(2)给用户绑定报警方式
用户或者用户组
添加报警方式
(3)添加动作
添加动作
该图展示的功能为当zabbix触发下面的这六项都会进行发邮件处理,也可以选择指定的报警程度,点击添加就可,计算方式就选择默认的或者或,否则邮件不会进行发送
添加操作
默认的标题和消息内容可以进行修改,操作点击新的,步骤是用来做分级告警的,持续时间选择60,如果写0,调用的时间就是最上面默认操作步骤持续时间,
分级报警
分级报警
(面)4、nginx的故障自愈
在使用zabbix监控nginx时,nginx故障之后,zabbix只是发告警给我们,但是zabbix也可以执行远程命令,运行脚本或者命令,实现nginx的重启。
(1)server端web界面创建新的动作
新动作
新操作
(2)开启zabbix的sudo权限(将下面的一项加到root下面一行,使用wq!强制保存)
vim /etc/sudoers
zabbix ALL =(ALL) NOPASSWD: ALL
(3)修改zabbix-agent配置文件
vim /etc/zabbix/zabbix_agentd.conf
EnableRemoteCommands=1·#允许远程执行命令
UnsafeUserParameters=1 #允许使用一些特殊符号
(4)重启程序
systemctl restart zabbix-agent.service