前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >prometheus之监控Nginx

prometheus之监控Nginx

作者头像
行 者
发布2020-04-17 10:30:40
4.3K0
发布2020-04-17 10:30:40
举报
文章被收录于专栏:运维技术迷

简述

监控Nginx主要用到以下三个模块:

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

添加Nginx模块

代码语言:javascript
复制
[root@localhost vhost]# cd /data/software
[root@localhost vhost]# git clone https://github.com/vozlt/nginx-module-vts.git
[root@localhost vhost]# /usr/local/nginx/sbin/nginx -V
...
--add-module=/data/software/nginx-module-vts 

配置Nginx

新起一个vhost暴露给server端访问数据。

代码语言:javascript
复制
[root@localhost vhost]# vim monitor.conf 

server {
     listen 8888;
     #allow 127.0.0.1;
     #allow 47.56.165.134;
     #vhost_traffic_status_filter_by_set_key $uri uri::$server_name;                                               #每个uri访问量       
     #vhost_traffic_status_filter_by_set_key $geoip_country_code country::$server_name;          #不同国家/区域请求量       
     #vhost_traffic_status_filter_by_set_key $filter_user_agent agent::$server_name;                   #获取用户所使用的agent       
     # 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;                           #请求路径统计
    # }
     location /status {
            vhost_traffic_status_display;
            vhost_traffic_status_display_format html;
        }
    }

重载nginx,使其配置文件生效。

代码语言:javascript
复制
[root@localhost vhost]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@localhost vhost]# /usr/local/nginx/sbin/nginx -s reload

此时通过http://IP地址:port/status就可以看到nginx的状态信息了。

配置nginx-exporter

代码语言:javascript
复制
[root@localhost vhost]# https://github.com/hnlq715/nginx-vts-exporter/releases/download/v0.9.1/nginx-vts-exporter-0.9.1.linux-amd64.tar.gz
[root@localhost vhost]# tar -zxvf nginx-vts-exporter-0.9.1.linux-amd64.tar.gz
[root@localhost vhost]# mv nginx-vts-exporter-0.9.1.linux-amd64 /usr/local/nginx-vts-exporter
[root@localhost nginx-vts-exporter]# cd /usr/local/nginx-vts-exporter
[root@localhost nginx-vts-exporter]# ll
total 9756
 -rw-rw-r--. 1 2000 2000    1063 Feb 27  2018 LICENSE
 -rwxr-xr-x. 1 2000 2000 9982855 Feb 27  2018 nginx-vts-exporter

使用systemctl 管理nginx-vts-exporter进程。

代码语言:javascript
复制
[root@localhost nginx-vts-exporter]# vim /usr/lib/systemd/system/nginx_vts_exporter.service 
[Unit]
Description=prometheus_nginx_vts
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/nginx-vts-exporter/nginx-vts-exporter  -nginx.scrape_uri http://192.168.2.15:8088/status/format/json
Restart=on-failure

[Install]
WantedBy=multi-user.target
[root@localhost nginx-vts-exporter]# systemctl daemon-reload
[root@localhost nginx-vts-exporter]# systemctl enable  nginx_vts_exporter
[root@localhost nginx-vts-exporter]# systemctl start nginx_vts_exporter
[root@localhost nginx-vts-exporter]# systemctl status nginx_vts_exporter
● nginx_vts_exporter.service - prometheus_nginx_vts
   Loaded: loaded (/usr/lib/systemd/system/nginx_vts_exporter.service; disabled; vendor preset: disabled)
   Active: active (running) since Fri 2020-04-10 22:13:02 EDT; 4 days ago
 Main PID: 90274 (nginx-vts-expor)
   CGroup: /system.slice/nginx_vts_exporter.service
           └─90274 /usr/local/nginx-vts-exporter/nginx-vts-exporter -nginx.scrape_uri http://192.168.3.15:8088/status/format/json

prometheus server 配置

代码语言:javascript
复制
[root@monitor ~]# vim /usr/local/prometheus/prometheus.yml 
...
  - job_name: 'nginx' # 添加node配置
    static_configs:
      - targets:
        - '192.168.3.15:9913'


...

重启prometheus server。

代码语言:javascript
复制
[root@monitor ~]# systemctl restart prometheus

Grafana展示

导入2949号模板,开始监控。

常用监控汇总表达式: DomainName对应nginx conf里的server_name,这里可以根据不同的server_name和upstream分别进行qps、2xx/3xx/4xx/5xx的状态码监控,另外也可以监控nginx每台后端server的qps和后端接口响应时间。如果不需要区分server_name,可以把表达式里的$DomainName改为星号,*代表所有;

求Nginx的QPS:sum(irate(nginx_server_requests{code="total",host=~"

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简述
  • 添加Nginx模块
  • 配置Nginx
  • 配置nginx-exporter
  • prometheus server 配置
  • Grafana展示
相关产品与服务
Prometheus 监控服务
Prometheus 监控服务(TencentCloud Managed Service for Prometheus,TMP)是基于开源 Prometheus 构建的高可用、全托管的服务,与腾讯云容器服务(TKE)高度集成,兼容开源生态丰富多样的应用组件,结合腾讯云可观测平台-告警管理和 Prometheus Alertmanager 能力,为您提供免搭建的高效运维能力,减少开发及运维成本。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档