使用stub_status和vts模块进行nginx性能监控
1. stub_status 模块
一般已经内置了,查看一下:
# nginx -V | grep http_stub_status_module
配置,在nginx.conf的server的location里面加入:
location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1; # 仅允许本机或监控节点访问
deny all;
}
查看性能,假定server监听在80端口:
# curl http://127.0.0.1:80/nginx_status
2. nginx-module-vts模块
一般要手动安装:
# yum install zlib-devel pcre-devel openssl-devel libxml2-devel libxslt-devel gd gd-devel perl-ExtUtils-Embed
# yum install redhat-rpm-config
找到nginx -V找到nginx版本,下载该版本源代码:
# wget https://nginx.org/download/nginx-1.20.1.tar.gz
再下载vts模块源代码:
# wget https://github.com/vozlt/nginx-module-vts/archive/refs/tags/v0.2.5.tar.gz
# mv v0.2.5.tar.gz nginx-module-vts-0.2.5.tar.gz
解压:
# tar -zxvf nginx-1.20.1.tar.gz
# tar -zxvf nginx-module-vts-0.2.5.tar.gz
# nginx -V
记住configure arguments:后面的参数串:
# ./configure –with-compat <上面的记录参数串> –add-dynamic-module=../nginx-module-vts-0.2.5
# make modules
# ll objs/
ngx_http_vhost_traffic_status_module.so
这个就是vts模块的so文件,把它拷贝到库位置(可以先不拷贝,配置文件加了load_module指令后,nginx -t检测时会显示应该放到哪里):
# cp objs/ngx_http_vhost_traffic_status_module.so /usr/share/nginx/modules/
配置:
# vi /etc/nginx/nginx.conf
load_module modules/ngx_http_vhost_traffic_status_module.so; #加载动态模块(路径需根据实际存放位置修改)
…
http {
vhost_traffic_status_zone; #开启流量统计状态区域(必须)
vhost_traffic_status_filter_by_host on; #可选:按主机名过滤统计(建议开启,区分不同虚拟主机)
…
server {
…
location /status { #配置监控数据访问接口
vhost_traffic_status_display; #开启显示
vhost_traffic_status_display_format json; #设置默认输出格式(html,json,prometheus等)
allow 127.0.0.1; #建议增加访问控制
deny all;
}
}
查看性能,假定server监听在80端口:
# curl http://127.0.0.1:80/status