• nginx-module-vts监控nginx流量



    引言:

    使用nginx-module-vts监控Nginx的请求以便进行分析,监控请求主要是在应用层面,除了请求之外我们一般还需要监控经过nginx的流量、连接数等偏底层的数据,这些数据对分析nginx的性能比较重要下面我们看下如何对nginx流量进行监控

    一、nginx监控模块简介

    监控Nginx主要用到以下三个模块:
    1、nginx-module-vts:Nginx virtual host traffic status module,Nginx的监控模块,能够提供JSON格式的数据产出。
    2、nginx-vts-exporter:Simple server that scrapes Nginx vts stats and exports them via HTTP for Prometheus consumption。主要用于收集Nginx的监控数据,并给Prometheus提供监控接口,默认端口号9913。
    3、Prometheus:监控Nginx-vts-exporter提供的Nginx数据,并存储在时序数据库中,可以使用PromQL对时序数据进行查询和聚合。

    二、配置nginx-module-vst-master

    2.1 上传nginx-module-vst-master软件包

    1. [root@oracle opt]# rz -E
    2. rz waiting to receive.
    3. [root@oracle opt]# ls
    4. apache-maven-3.8.5-bin.tar.gz jdk-8u201-linux-x64.rpm nginx-1.20.2 nginx-1.20.2.tar.gz nginx-module-vts-master.zip rh
    5. [root@oracle opt]# unzip nginx-module-vts-master.zip
    6. [root@oracle opt]# mv nginx-module-vts-master /usr/local/

    2.2 安装nginx依赖环境

    [root@oracle opt]# yum install -y gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel
    

    2.3 编译安装nginx

    1. [root@oracle opt]# tar zxvf nginx-1.20.2.tar.gz
    2. [root@oracle opt]# cd nginx-1.20.2/
    3. [root@oracle nginx-1.20.2]# ./configure --prefix=/usr/local/nginx --add-module=/usr/local/nginx-module-vts-master/
    4. checking for OS
    5. [root@oracle nginx-1.20.2]# make && make install

    2.4 优化管理

    [root@oracle nginx-1.20.2]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin

    2.5 检查开启的模块

    1. [root@oracle nginx-1.20.2]# nginx -v
    2. nginx version: nginx/1.20.2

    2.6 修改配置文件

    1. PS:主要是修改默认日志文件格式,添加压缩配置,添加监控配置,具体可根据自己的需求修改
    2. http {
    3. include mime.types;
    4. default_type application/octet-stream;
    5. vhost_traffic_status_zone; #流量状态监控
    6. #vhost_traffic_status_filter_by_host on;
    7. PS:开启此功能,在Nginx配置有多个server_name的情况下,会根据不同的server_name进行流量的统计,否则默认会把流量全部计算到第一个server_name上。
    8. 假如nginx没有规范配置server_name或者无需进行监控的server上,那么建议在此vhost上禁用统计监控功能。否则会出现“127.0.0.1”,hostname等的域名监控信息
    1. user nobody;
    2. worker_processes 1;
    3. events {
    4. worker_connections 1024;
    5. }
    6. http {
    7. include mime.types;
    8. default_type application/octet-stream;
    9. vhost_traffic_status_zone;
    10. log_format main '{ "@timestamp": "$time_local", '
    11. '"@fields": { '
    12. '"uri":"$request_uri",'
    13. '"url":"$uri",'
    14. '"upstream_addr":"$upstream_addr",'
    15. '"remote_addr": "$remote_addr", '
    16. '"remote_user": "$remote_user", '
    17. '"body_bytes_sent": "$body_bytes_sent", '
    18. '"host":"$host",'
    19. '"server_addr":"$server_addr",'
    20. '"request_time": "$request_time", '
    21. '"request_time":"$request_time",'
    22. '"status":"$status",'
    23. '"request": "$request", '
    24. '"request_method": "$request_method", '
    25. '"size":$body_bytes_sent,'
    26. '"upstream_time":"$upstream_response_time"'
    27. '"http_referrer": "$http_referer", '
    28. '"body_bytes_sent":"$body_bytes_sent", '
    29. '"http_x_forwarded_for": "$http_x_forwarded_for", '
    30. '"http_user_agent": "$http_user_agent" } }';
    31. sendfile on;
    32. keepalive_timeout 65;
    33. gzip on;
    34. gzip_min_length 1k;
    35. gzip_buffers 4 16k;
    36. gzip_http_version 1.0;
    37. gzip_comp_level 3;
    38. gzip_types text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript application/json application/javascript;
    39. gzip_vary on;
    40. proxy_http_version 1.1;
    41. proxy_set_header Connection "";
    42. server {
    43. listen 80;
    44. server_name localhost;
    45. location / {
    46. root html;
    47. index index.html index.htm;
    48. }
    49. location /status {
    50. vhost_traffic_status_display;
    51. vhost_traffic_status_display_format html;
    52. }
    53. }
    54. }

    2.7 启动测试

    默认nginx安装目录为/usr/local/nginx/,相关目录都在这个目录下

            启动nginx

    [root@oracle conf]# /usr/local/nginx/sbin/nginx 

            测试
    浏览器输入IP+80端口,可打开nginx默认页面

     浏览器输入“IP:80/status”可打开监控页面

    2.8 开机自启

     将“/usr/local/nginx/sbin/nginx”命令加入“/etc/rc.d/rc.local”文件并添加权限即可

    chmod +x /etc/rc.d/rc.local
    

  • 相关阅读:
    关于阅读总量数据校正的说明
    [渲染层错误] [jsbridge] invoke remoteDebugInfo fail: too eayly.
    解决Microsoft已经阻止宏运行,因为此文件的来源不受信任。
    java基于微信小程序的驾校报名预约考试 uniapp小程序
    十五章:Java反射机制
    使用Jedis远程连接redis
    大数据时代,数据治理
    北京/上海/广州/深圳DAMA-CDGA/CDGP数据治理认近期开班
    【项目_03】日历的回显、搭建热门精选、下拉加载更多、搜索框搭建 | 基于Vue3全家桶
    E5071C是德科技网络分析仪
  • 原文地址:https://blog.csdn.net/L2111533547/article/details/126514007