部署并配置nginx-module-vts

参考我之前的文章:

Linux下Nginx配置nginx-module-vts_allen的博客-CSDN博客

配置nginx-vts-exporter

exporter会收集nginx性能指标的JSON格式数据,并汇总后暴露监控接口给Prometheus。

cd /data/program
wget -c https://github.com/hnlq715/nginx-vts-exporter/releases/download/v0.10.3/nginx-vts-exporter-0.10.3.linux-amd64.tar.gz
#也可下载最新版本
tar xvf nginx-vts-exporter-0.10.3.linux-amd64.tar.gz
mv nginx-vts-exporte-0.10.3.linux-amd64.tar.gz nginx-vts-exporte

配置运行

// 创建文件 /etc/systemd/system/nginx-vts-exporte.service
[Unit]
Description=nginx-vts-exporte
Documentation=nginx-vts-exporte
[Service]
ExecStart=/data/program/nginx-vts-exporte/nginx-vts-exporte -nginx.scrape_timeout 10 -nginx.scrape_uri http://127.0.0.1/status/format/json

Restart=on-failure
[Install]
WantedBy=multi-user.target
// data/program/nginx-vts-exporte 是我nginx-vts-exporte的解压路径,可以按需修改



# 推荐exporter和nginx安装在同一台机器上,如果不在同一台主机,把scrape_uri改为nginx主机的地址。
# nginx_vts_exporter的默认端口号:9913,对外暴露监控接口http://xxx:9913/metrics.

# 我们可以访问浏览器 IP:9913

 将nginx-vts-exporter配置到prometheus中

# 配置Prometheus,收集node exporter的数据
# 可以看到node exporter启动后也就是暴露了9100端口,并没有把数据传到prometheus,
# 我们还需要在prometheus中配置,让prometheus去pull这个接口的数据。
# 我们去监控主机编辑prometheus.yml文件,修改最后几行,然后重启服务
vim /usr/local/prometheus/prometheus.yml
scrape_configs:
  - job_name: 'prometheus'
    static_configs:
    - targets: ['localhost:9090']
  - job_name: 'nginx'
    static_configs:
    - targets: ['127.0.0.1:9913']


# node节点的targets处的IP填写你要监控的node的IP.        
systemctl restart prometheus
# 我们登录到Prometheus主机,看下这个节点是不是up状态

 配置grafana显示

如未安装,参考教程:Grafana + prometheus在Centos搭建服务器监控系统(一)---安装、配置_allen的博客-CSDN博客

此处我们拿prometheus做例子,虽然说prometheus能展示一些图表,但对比Grafana,那只是过家家,接下来我们在同一个服务器安装Grafana服务,用来展示prometheus收集到的数据

添加nginx模板

 

通过vts自定义key

通过以上部署只能拿到默认的指标,生产中可能还会需要监控uri的请求量,监控IP访问情况(同一个IP出现大量访问时可能被攻击),获取不同agent请求量用于分析等,通过vts模块的vhost_traffic_status_filter_by_set_key功能可以自定义需要获取的指标。此处的指标需要加到对应的server配置中.

# 添加自定义配置,地址根据自己的修改
$ vim /etc/nginx/conf.d/default.conf
server {
    listen      80;
    server_name localhost;

    vhost_traffic_status_filter_by_set_key $uri uri::$server_name;     #每个uri访问量
    vhost_traffic_status_filter_by_set_key $status $server_name;     #http code统计
    vhost_traffic_status_filter_by_set_key $upstream_addr upstream::backend;     #后端转发统计
    vhost_traffic_status_filter_by_set_key $remote_port client::ports::$server_name;     #请求端口统计
    vhost_traffic_status_filter_by_set_key $remote_addr client::addr::$server_name;     #请求IP统计

    location ~ ^/storage/(.+)/.*$ {
        set $volume $1;
        vhost_traffic_status_filter_by_set_key $volume storage::$server_name;     #请求路径统计
    }

}  

Logo

更多推荐