目录

一.vts概述

二.vts监控模块安装

(1)关闭防火墙,关闭核心防护

(2)上传vts安装包

(3)安装nginx依赖环境

(4)编译安装nginx

(5)移动模块

(6)加载模块

(7)编译安装

(8)优化路径

(9)使用systemctl来控制nginx

(10)检查开启的模块

(11)修改默认日志文件格式,添加压缩配置,天机监控配置

(12)在server中80端口添加

(13)重启nginx服务

(13)在虚拟机中测试

(14)监控显示各字段

三.一键部署vts脚本


一.vts概述

vts学名:Nginx virtual host traffic status module.也就是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对时序数据进行查询和聚合

二.vts监控模块安装

(1)关闭防火墙,关闭核心防护

systemctl stop firewalld

systemctl enable firewalld

setenforce 0

nginx监控检测插件 nginx 监控模块_缓存

(2)上传vts安装包

nginx监控检测插件 nginx 监控模块_nginx_02

nginx监控检测插件 nginx 监控模块_nginx监控检测插件_03

(3)安装nginx依赖环境

yum -y install gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel

nginx监控检测插件 nginx 监控模块_缓存_04

(4)编译安装nginx

tar -xvf nginx-1.15.9.tar.gz

nginx监控检测插件 nginx 监控模块_缓存_05

nginx监控检测插件 nginx 监控模块_运维_06

(5)移动模块

nginx监控检测插件 nginx 监控模块_缓存_07

(6)加载模块

加载./configure --prefix=/usr/local/nginx --add-module=/usr/local/nginx-module-vts-master/

nginx监控检测插件 nginx 监控模块_linux_08

(7)编译安装

make && make install

nginx监控检测插件 nginx 监控模块_缓存_09

(8)优化路径

ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin

nginx监控检测插件 nginx 监控模块_缓存_10

useradd -M -s /sbin/nologin nginx

nginx监控检测插件 nginx 监控模块_运维_11

确认配置文件是否正确

nginx监控检测插件 nginx 监控模块_运维_12

(9)使用systemctl来控制nginx

  vim /lib/systemd/system/nginx.service

[Unit]

Description=nginx                                                  ####描述

After=network.target                                                 ####描述服务类别

[Service]

Type=forking                                              ###后台运行形式

PIDFile=/usr/local/nginx/logs/nginx.pid                   ###PID文件位置

ExecStart=/usr/local/nginx/sbin/nginx                     ###启动服务

ExecReload=/usr/bin/kill -s HUP $MAINPID             ###根据PID重载配置

ExecStop=/usr/bin/kill -s QUIT $MAINPID                ###根据PID终止进程

PrivateTmp=true

[Install]

WantedBy=multi-user.target

nginx监控检测插件 nginx 监控模块_nginx_13

给文件权限

Chmod 754 /lib/system/system/nginx.service

nginx监控检测插件 nginx 监控模块_缓存_14

nginx监控检测插件 nginx 监控模块_缓存_15

(10)检查开启的模块

nginx -V

nginx监控检测插件 nginx 监控模块_缓存_16

(11)修改默认日志文件格式,添加压缩配置,天机监控配置

vim /usr/local/nginx/conf/nginx.conf

添加如下内容

vhost_traffic_status_zone;            #流量状态监控

log_format main '{ "@timestamp": "$time_local", '

'"@fields": { '

'"uri":"$request_uri",'

'"url":"$uri",'

'"upstream_addr":"$upstream_addr",'

'"remote_addr": "$remote_addr", '

'"remote_user": "$remote_user", '

'"body_bytes_sent": "$body_bytes_sent", '

'"host":"$host",'

'"server_addr":"$server_addr",'

'"request_time": "$request_time", '

'"request_time":"$request_time",'

'"status":"$status",'

'"request": "$request", '

'"request_method": "$request_method", '

'"size":$body_bytes_sent,'

'"upstream_time":"$upstream_response_time"'

'"http_referrer": "$http_referer", '

'"body_bytes_sent":"$body_bytes_sent", '

'"http_x_forwarded_for": "$http_x_forwarded_for", '

'"http_user_agent": "$http_user_agent" } }';

nginx监控检测插件 nginx 监控模块_linux_17

(12)在server中80端口添加

 location /status {
            vhost_traffic_status_display;
            vhost_traffic_status_display_format html;
        }

nginx监控检测插件 nginx 监控模块_linux_18

(13)重启nginx服务

nginx监控检测插件 nginx 监控模块_运维_19

nginx监控检测插件 nginx 监控模块_运维_20

nginx监控检测插件 nginx 监控模块_缓存_21

(13)在虚拟机中测试

192.168.239.239/status

nginx监控检测插件 nginx 监控模块_运维_22

(14)监控显示各字段

监控列表各项信息

Server main 主服务器

**Host:**主机名

**Version:**版本号

**Uptime:**服务器运行时间

Connections active:当前客户端的连接数 reading:读取客户端连接的总数 writing:写入客户端连接的总数

Requsts accepted:接收客户端的连接总数 handled:已处理客户端的连接总数 Total:请求总数 Req/s:每秒请求的数量

Shared memory:共享内存 name:配置中指定的共享内存名称 maxSize:配置中指定的共享内存的最大限制 usedSize:共享内存的当前大小 usedNode:共享内存中当前使用的节点数

Server zones 服务器区域

zone:当前区域

Requests Total:请求总数 Req/s:每秒请求数 time:时间

Responses:状态码数量 1xx、2xx、3xx、4xx、5xx:表示响应不同状态码数量 Total:响应状态码的总数

Traffic表示流量 Sent:发送的流量 Rcvd:接收的流量 Sent/s:每秒发送的流量 Rcvd/s:每秒接收的流量

Cache表示缓存 Miss:未命中的缓存数 Bypass:避开的缓存数 Expirde:过期的缓存数 Stale:生效的缓存数 Updating:缓存更新的次数 Revalidated:重新验证的缓存书 Hit:缓存命中数 Scarce:未达缓存要求的请求次数Total:总数

三.一键部署vts脚本

#!/bin/bash
#一键部署bts监控模块
#关闭防火墙与核心防护
systemctl stop firewalld
systemctl disable firewalld
#加载模块
cd nginx-1.15.9
'"request_time": "$request_time", '
'"request_time":"$request_time",'
" > /usr/lib/systemd/system/nginx.service
#给权限
chmod 754 /lib/systemd/system/nginx.service
#备份nginx的配置文件

'"@fields": { '
'"uri":"$request_uri",'
'"url":"$uri",'
'"upstream_addr":"$upstream_addr",'
'"remote_addr": "$remote_addr", '
'"remote_user": "$remote_user", '
'"body_bytes_sent": "$body_bytes_sent", '
'"host":"$host",'
'"server_addr":"$server_addr",'
'"request_time": "$request_time", '
'"request_time":"$request_time",'
'"status":"$status",'
'"request": "$request", '
'"request_method": "$request_method", '
'"size":$body_bytes_sent,'
'"upstream_time":"$upstream_response_time"'
'"http_referrer": "$http_referer", '
'"body_bytes_sent":"$body_bytes_sent", '
'"http_x_forwarded_for": "$http_x_forwarded_for", '
'"http_user_agent": "$http_user_agent" } }';" /usr/local/nginx/conf/nginx.conf

sed -i "/server_name  localhost;/a location /status {
            vhost_traffic_status_display;
            vhost_traffic_status_display_format html;
        }" /usr/local/nginx/conf/nginx.conf
#重启nginx
systemctl restart nginx