Zabbix实现对Nginx的监控

Zabbix实现对Nginx的监控

环境准备

五台机器:

zabbix_agent 5.0 被动模式(已安装) Zabbix_java_gateway 5.0 (已安装) 10.0.0.7

MariaDB-10.4.22(已安装) zabbix_server 5.0(已安装) 10.0.0.17

Tomcat-8.5(已安装) 10.0.0.27

zabbix_agent 5.0 主动模式(已安装)Redis-6.2.4(已安装)Nginx-1.18(已安装)10.0.0.37

MariaDB-10.4.22(已安装) zabbix_proxy 5.0 主动模式(已安装) 10.0.0.47

Nginx 状态页

基于nginx 模块 ngx_http_stub_status_module 实现,在编译安装nginx的时候需要添加编译参数 --with-http_stub_status_module,否则配置完成之后监测会是提示语法错误

注意: 状态页显示的是整个服务器的状态,而非虚拟主机的状态

[root@centos7 ~]#cd nginx-1.18.0/
[root@centos7 nginx-1.18.0]#./configure --help |grep with-http_stub_status_module
  --with-http_stub_status_module     enable ngx_http_stub_status_module

#配置示例:
location /nginx_status {
    stub_status;
    auth_basic "auth login";
    auth_basic_user_file /apps/nginx/conf/.htpasswd;
    allow 192.168.0.0/16;
    allow 127.0.0.1;
    deny all;
}

#状态页用于输出nginx的基本状态信息:
#输出信息示例:
Active connections: 291
server accepts handled requests
    16630948 16630948 31070465
    上面三个数字分别对应accepts,handled,requests三个值
Reading: 6 Writing: 179 Waiting: 106

Active connections: #当前处于活动状态的客户端连接数,包括连接等待空闲连接数=reading+writing+waiting
accepts:#统计总值,Nginx自启动后已经接受的客户端请求连接的总数。
handled:#统计总值,Nginx自启动后已经处理完成的客户端请求连接总数,通常等于accepts,除非有因worker_connections限制等被拒绝的连接
requests:#统计总值,Nginx自启动后客户端发来的总的请求数。
Reading:#当前状态,正在读取客户端请求报文首部的连接的连接数,数值越大,说明排队现象严重,性能不足
Writing:#当前状态,正在向客户端发送响应报文过程中的连接数,数值越大,说明访问量很大
Waiting:#当前状态,正在等待客户端发出请求的空闲连接数,开启 keep-alive的情况下,这个值等于active – (reading+writing)

1.添加Nginx状态页

[root@centos7 ~]#vim /apps/nginx/conf/nginx.conf
        location / {
            root   html;
            index  index.html index.htm;
        }

        location /nginx_status {
            stub_status;
            allow 10.0.0.0/24;
            allow 127.0.0.1;
            deny all;
        }

[root@centos7 ~]#nginx -t
nginx: the configuration file /apps/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /apps/nginx/conf/nginx.conf test is successful

[root@centos7 ~]#systemctl restart nginx.service

[root@centos7 ~]#curl http://10.0.0.37/nginx_status
Active connections: 1
server accepts handled requests
 8 8 9
Reading: 0 Writing: 1 Waiting: 0

2.Nginx监控脚本

[root@centos7 ~]#cd /etc/zabbix/zabbix_agentd.d/
[root@centos7 zabbix_agentd.d]#cat nginx_monitor.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

[root@centos7 zabbix_agentd.d]#chmod a+x nginx_monitor.sh
[root@centos7 zabbix_agentd.d]#bash nginx_monitor.sh nginx_status 80 active
1
[root@centos7 zabbix_agentd.d]#bash nginx_monitor.sh nginx_status 80 writing
1

3.zabbix agent添加自定义监控项

#将所有自定义监控项汇总到/etc/zabbix/zabbix_agentd.d/all.conf配置文件
[root@centos7 zabbix_agentd.d]#vim all.conf
UserParameter=redis_monitor[*],/bin/bash /etc/zabbix/zabbix_agentd.d/redis_monitor.sh $1 $2 $3
UserParameter=nginx.status[*],/bin/bash /etc/zabbix/zabbix_agentd.d/nginx_monitor.sh $1 $2 $3

[root@centos7 zabbix_agentd.d]#vim /etc/zabbix/zabbix_agentd.conf
#删除以下自定义监控项
UserParameter=redis_monitor[*],/bin/bash /etc/zabbix/zabbix_agentd.d/redis_monitor.sh $1 $2 $3

[root@centos7 zabbix_agentd.d]#systemctl restart zabbix-agent.service

4.zabbix server测试监控项数据

[root@zabbix_server ~]#/bin/zabbix_get -s 10.0.0.37 -p 10050 -k "nginx.status["nginx_status","80","active"]"
1
[root@zabbix_server ~]#/bin/zabbix_get -s 10.0.0.37 -p 10050 -k "nginx.status["nginx_status","80","writing"]"
1

5.导入Nginx监控模板

点击【配置-模板-导入】

在这里插入图片描述

6.查看监控项

点击【配置-模板-nginx-template-magedu-jiege-监控项】在这里插入图片描述

7.模板关联主机

点击【配置-主机-10.0.0.37-web2-active-模板】

在这里插入图片描述

8.验证监控项数据

在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
实现监控Nginx并发送邮件报警,需要进行以下步骤: 1. 在Nginx服务器上安装zabbix-agent; 2. 在zabbix服务器上配置Nginx监控项; 3. 在zabbix服务器上设置触发器,并将触发器关联到操作; 4. 在zabbix服务器上配置邮件报警操作。 具体步骤如下: 1. 在Nginx服务器上安装zabbix-agent 在Nginx服务器上执行以下命令安装zabbix-agent: ``` sudo apt-get update sudo apt-get install zabbix-agent ``` 然后编辑zabbix-agent的配置文件`/etc/zabbix/zabbix_agentd.conf`,修改以下参数: ``` Server=<zabbix_server_ip> ServerActive=<zabbix_server_ip> Hostname=<nginx_server_hostname> ``` 其中,`<zabbix_server_ip>`为zabbix服务器的IP地址,`<nginx_server_hostname>`为Nginx服务器的主机名。 修改完成后,重启zabbix-agent服务: ``` sudo systemctl restart zabbix-agent ``` 2. 在zabbix服务器上配置Nginx监控项 在zabbix服务器上进入Web界面,在“配置”->“主机”中添加Nginx服务器,并在“模板”中选择“Template Nginx”。 然后在“配置”->“模板”中找到“Template Nginx”,进入模板详情页,在“应用”中添加一个新的应用,名称为“Nginx”。 在“Nginx”应用中添加一个新的监控项,名称为“Nginx status”,键值为“nginx.status[active]”。 保存配置后,等待一段时间,zabbix服务器会自动发现Nginx服务器,并开始监控Nginx状态。 3. 在zabbix服务器上设置触发器,并将触发器关联到操作 在“配置”->“触发器”中添加一个新的触发器,使用以下表达式: ``` {<nginx_server_hostname>:nginx.status[active].last()}=0 ``` 其中,`<nginx_server_hostname>`为Nginx服务器的主机名。 保存触发器后,进入触发器详情页,在“操作”中添加一个新的操作,选择“发送邮件”为动作。 4. 在zabbix服务器上配置邮件报警操作 在“管理”->“报警媒介类型”中添加一个新的媒介类型,类型为“Email”,并填写SMTP服务器、端口、用户名、密码等信息。 然后在“配置”->“动作”中编辑之前创建的触发器操作,选择“默认收件人”为收件人,并在“消息”中填写邮件内容。 保存配置后,当Nginx状态异常时,zabbix服务器会自动发送邮件报警。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一直在努力学习的菜鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值