Nginx安装监控模块nginx-module-vts统计网站流量步骤

如果我们服务器上有多个网站,有时某个网站被大流量攻击了,但是又不清楚具体是哪个网站被攻击了,这时可以通过nginx-module-vts工具统计具体哪个网站消耗的流量最多,从而排查出具体是哪个网站被攻击,好根据监测做出具体的防范措施,下面给出具体的部署流程

一、下载插件nginx-module-vts并上传解压

最新版下载地址:
官方地址:https://github.com/vozlt/nginx-module-vts
国内镜像:https://gitee.com/x0x5c0f/nginx-module-vts

nginx-module-vts这里下载的是最新版本v0.2.4

cd /www/server/nginx/src //这里根据自己的实际nginx目录更换
unzip nginx-module-vts-master.zip //上传下载的插件nginx-module-vts,并解压
rm nginx-module-vts-master.zip //删除上传的压缩包

二、重新编译

将原nginx可执行文件备份,不备份也可以,后面的make install命令会自动备份一份为nginx.old;但是每次测试都会覆盖掉nginx.old,所以为了保险起见,最好自己手动备份下,然后使用./configure重新编译

cp /www/server/nginx/sbin/nginx /www/server/nginx/sbin/nginx_bak # 手动备份一下
nginx -V //查看所有配置参数,并复制下来,替换下面的<原来的参数>部分
./configure <原来的参数> --add-module=/www/server/nginx/src/nginx-module-vts-master  //替换后的编译命令如下

./configure --user=www --group=www --prefix=/www/server/nginx --add-module=/www/server/nginx/src/ngx_devel_kit --add-module=/www/server/nginx/src/lua_nginx_module --add-module=/www/server/nginx/src/ngx_cache_purge --add-module=/www/server/nginx/src/nginx-sticky-module --with-openssl=/www/server/nginx/src/openssl --with-pcre=pcre-8.43 --with-http_v2_module --with-stream --with-stream_ssl_module --with-stream_ssl_preread_module --with-http_stub_status_module --with-http_ssl_module --with-http_image_filter_module --with-http_gzip_static_module --with-http_gunzip_module --with-ipv6 --with-http_sub_module --with-http_flv_module --with-http_addition_module --with-http_realip_module --with-http_mp4_module --with-http_auth_request_module --add-module=/www/server/nginx/src/ngx_http_substitutions_filter_module-master --with-ld-opt=-Wl,-E --with-cc-opt=-Wno-error --with-ld-opt=-ljemalloc --with-http_dav_module --add-module=/www/server/nginx/src/nginx-dav-ext-module --add-module=/www/server/nginx/src/nginx-module-vts-master
make && make install //编译和安装,将原来/www/server/nginx/sbin/nginx备份为nginx.old,同时替换掉原有nginx
nginx -s reload //重新启动

nginx -V命令查看所有配置参数

附nginx-module-vts v0.2.2等其他版本安装流程

//下载压缩包解压
cd /www/server/nginx/src
wget -O nginx-module-vts-0.2.2.tar.gz https://github.com/vozlt/nginx-module-vts/archive/refs/tags/v0.2.2.tar.gz
tar -zxvf nginx-module-vts-0.2.2.tar.gz
rm nginx-module-vts-0.2.2.tar.gz

//编译安装
cp /www/server/nginx/sbin/nginx /www/server/nginx/sbin/nginx_bak # 手动备份一下
nginx -V //查看编译参数configure arguments
./configure <原来的参数> --add-module=/www/server/nginx/src/nginx-module-vts-0.2.2

./configure --user=www --group=www --prefix=/www/server/nginx --add-module=/www/server/nginx/src/ngx_devel_kit --add-module=/www/server/nginx/src/lua_nginx_module --add-module=/www/server/nginx/src/ngx_cache_purge --add-module=/www/server/nginx/src/nginx-sticky-module --with-openssl=/www/server/nginx/src/openssl --with-pcre=pcre-8.43 --with-http_v2_module --with-stream --with-stream_ssl_module --with-stream_ssl_preread_module --with-http_stub_status_module --with-http_ssl_module --with-http_image_filter_module --with-http_gzip_static_module --with-http_gunzip_module --with-ipv6 --with-http_sub_module --with-http_flv_module --with-http_addition_module --with-http_realip_module --with-http_mp4_module --with-http_auth_request_module --add-module=/www/server/nginx/src/ngx_http_substitutions_filter_module-master --with-ld-opt=-Wl,-E --with-cc-opt=-Wno-error --with-ld-opt=-ljemalloc --with-http_dav_module --add-module=/www/server/nginx/src/nginx-dav-ext-module --add-module=/www/server/nginx/src/nginx-module-vts-0.2.2
make && make install //编译和安装,将原来/www/server/nginx/sbin/nginx备份为nginx.old,同时替换掉原有nginx
nginx -s reload //重新启动

三、将nginx-module-vts参数添加到nginx配置文件中

将下面代码添加到nginx配置文件中,然后访问网址即可http://ip:41758/nginx-status实时看到自己网站流量统计效果

 vhost_traffic_status_zone;
 server {
   listen 41758;
   location /nginx-status {
     vhost_traffic_status_display;
     vhost_traffic_status_display_format html;
   }
 }

将nginx-module-vts参数添加到nginx配置文件中

也可以nginx配置文件中只保留这一行配置文件

 vhost_traffic_status_zone;

nginx配置文件中只添加vhost_traffic_status_zone;

然后新建一个网站,在网站对应配置文件中,access_log的前面,添加如下代码,然后通过对应网址http://www.test.com/nginx-status即可以实时查看流量

location /nginx-status {
    vhost_traffic_status_display;
    vhost_traffic_status_display_format html;
}

网站配置文件中添加nginx-module-vts其它参数

访问效果

nginx-module-vts前台访问效果,可以查看到每个网站的流量

这次在安装调试中,遇到一个问题,网上查询了很久也没有找到解决方法,特此记录下,在保存配置文件会一直提示下面信息:
nginx: the configuration file /www/server/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /www/server/nginx/conf/nginx.conf test failed

如果重新加载配置文件nginx -s reload,也会提示:
invalid PID number “” in “/www/server/nginx/logs/nginx.pid”

排查半天发现去掉配置文件里的“include /www/server/panel/vhost/nginx/*.conf;”后会保存成功;然后进入到对应目录,发现里面有一个免费防火墙配置文件备份,一直导致编译失败;然后才想起来是以前安装过Nginx免费防火墙,现在最新宝塔面板已经不支持了,而且又没法卸载掉,这里只需要把这个配置文件备份重新命名为“free_waf_bak.conf1”保证不被调用即可,然后重新make install即可成功

重命名Nginx免费防火墙,保证配置文件能正确保存

更多使用教程可参考这篇文章:《nginx nginx-module-vts 监控模块》

相关推荐