Zabbix 5.0实战应用
文章目录
- Zabbix 5.0实战应用
- 1.zabbix实战应用
- 1.1添加主机
- 1.2自定义监控项
- 1.3企业案例(监控nginx服务运行状态)
- 1.4添加触发器
- 2.Zabbix实现邮件报警功能
1.zabbix实战应用
web界面介绍:
主机------->监控项------>模板------>触发器----->执行动作----->告警媒介
1.1添加主机
1.2自定义监控项
客户端自定义监控项取值
服务端web获取监控项的值
1.通过shell命令获取到关键数据
2.将命令与key名在配置文件中定义好
3.服务端通过zabbix-get命令测试获取键值对
#自定义监控登录用户数
agent机器中:
[root@zabbix-server ~]# w | awk 'NR==1{print $6}'
3
zabbix-server机器中:
[root@zabbix-agent ~]# vim /etc/zabbix/zabbix_agent2.conf
UserParameter=User_num,w | awk 'NR==1{print $6}'
[root@zabbix-agent ~]# systemctl restart zabbix-agent2
#在zabbix-server中测试取值是否成功
需要用到zabbix_get命令,安装一下
[root@zabbix-server ~]# yum install zabbix-get -y
[root@zabbix-server ~]# zabbix_get -s 192.168.10.67 -k User_num
3
自定义监控项
1.3企业案例(监控nginx服务运行状态)
通过脚本添加监控项
#安装nginx
yum install nginx -y
#启动nginx
systemctl start nginx
systemctl enable nginx
#配置nginx
[root@zabbix-agent conf.d]# cat /etc/nginx/conf.d/nginx_status.conf
server {
listen 81;
server_name localhost;
location /status {
stub_status on;
}
}
#重新启动
systemctl restart nginx
#测试一下
[root@zabbix-agent conf.d]# curl 192.168.10.67:81/status
Active connections: 1
server accepts handled requests
2 2 2
Reading: 0 Writing: 1 Waiting: 0
#编写脚本
[root@zabbix-agent scripts]# cat /etc/zabbix/zabbix_agent2.d/scripts/nginx_status.sh
#!/bin/bash
NGINX_PORT=81
NGINX_COMMAND=$1
nginx_active(){
/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/status/" |awk '/Active/ {print $NF}'
}
nginx_reading(){
/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/status/" |awk '/Reading/ {print $2}'
}
nginx_writing(){
/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/status/" |awk '/Writing/ {print $4}'
}
nginx_waiting(){
/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/status/" |awk '/Waiting/ {print $6}'
}
nginx_accepts(){
/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/status/" |awk 'NR==3 {print $1}'
}
nginx_handled(){
/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/status/" |awk 'NR==3 {print $2}'
}
nginx_requests(){
/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/status/" |awk 'NR==3 {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;
;;
*)
echo $"USAGE:$0 {active|reading|writing|waiting|accepts|handled|requests}"
esac
[root@zabbix-agent scripts]# chmod +x /etc/zabbix/zabbix_agent2.d/scripts/nginx_status.sh
#执行脚本测试取值是否正确
[root@zabbix-agent ~]# cd /etc/zabbix/zabbix_agent2.d/scripts/
[root@zabbix-agent scripts]# sh +x nginx_status.sh
USAGE:nginx_status.sh {active|reading|writing|waiting|accepts|handled|requests}
[root@zabbix-agent scripts]# sh +x nginx_status.sh active
1
[root@zabbix-agent scripts]# sh +x nginx_status.sh reading
0
[root@zabbix-agent scripts]# sh +x nginx_status.sh writing
1
[root@zabbix-agent scripts]# sh +x nginx_status.sh waiting
0
[root@zabbix-agent scripts]# sh +x nginx_status.sh accepts
34
[root@zabbix-agent scripts]# sh +x nginx_status.sh handled
35
[root@zabbix-agent scripts]# sh +x nginx_status.sh requests
36
#写zabbix-agent2监控配置文件
[root@zabbix-agent zabbix_agent2.d]# cat /etc/zabbix/zabbix_agent2.d/nginx_status.conf
UserParameter=Ngx_status[*],/etc/zabbix/zabbix_agent2.d/scripts/nginx_status.sh $1
#重启zabbix-agent2
[root@zabbix-agent zabbix_agent2.d]# systemctl restart zabbix-agent2
#在zabbix-server段测试一下
[root@zabbix-server ~]# zabbix_get -s 192.168.10.67 -k Ngx_status
USAGE:/etc/zabbix/zabbix_agent2.d/scripts/nginx_status.sh {active|reading|writing|waiting|accepts|handled|requests}
[root@zabbix-server ~]# zabbix_get -s 192.168.10.67 -k Ngx_status[reading]
0
[root@zabbix-server ~]# zabbix_get -s 192.168.10.67 -k Ngx_status[waiting]
0
[root@zabbix-server ~]# zabbix_get -s 192.168.10.67 -k Ngx_status[handled]
39
添加监控项
到此,nginx状态监控就做完了
1.4添加触发器
1.查看模板自带触发器,修改主机名进行触发报警
#修改主机名
[root@zabbix-agent ~]# hostnamectl set-hostname ttt
[root@zabbix-agent ~]# bash
[root@ttt ~]#
如图已触发报警
2.自定义触发器(登录用户数大于3个就报警)
测试一下
我们创建的触发器只有出发报警,没有恢复报警,添加一个恢复报警
测试
这种监控登录用户数不严禁,因为一个人也可以开多个终端,所以我们在加一个监控项,用多个条件去做监控项
#先用命令进行取值
[root@zabbix-agent ~]# w | awk 'NR>3{print $3}' | sort -r | uniq -c | wc -l
2
#先删除之前的这个配置
vim /etc/zabbix/zabbix_agent2.conf
UserParameter=User_num,w |awk 'NR==1{print $6}'
#写新的配置文件
[root@zabbix-agent ~]# cat /etc/zabbix/zabbix_agent2.d/user_num.conf
UserParameter=User_ip,w | awk 'NR>3{print $3}' | sort -r | uniq -c | wc -l
UserParameter=User_num,w |awk 'NR==1{print $6}'
#在zabbix-agent2端测试,没有问题在重启zabbix-agent2
[root@zabbix-agent ~]# zabbix_agent2 -t User_ip
User_ip [s|2]
#重启zabbix-agent2
[root@zabbix-agent ~]# systemctl restart zabbix-agent2
[root@zabbix-agent ~]# systemctl status zabbix-agent2
#在zabbix-server中获取值进行测试
[root@zabbix-server ~]# zabbix_get -s 192.168.10.67 -k User_ip
2
创建监控项
修改触发器,满足多条件进行触发
点击插入
选择和(同时满足)
验证
同时满足两个条件
2.Zabbix实现邮件报警功能
触发器----->动作(发送邮件)
需要的信息:发件人 收件人 (zabbix5.0必须要有收件人和发件人,且收件人和发件人不可相同)
点击:报警媒介类型中的用户名密码,获取密码
点击:登录qq邮箱—>设置—>账户---->(POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务)全部开启—>生成授权码
配置发件人信息
配置收件人(收件人和发件人不能相同)
用户、用户组的概念
创建用户
要给创建的用户超级管理员权限
配置动作
测试一下