当前位置: 首页 > news >正文

prometheus通过nginx-vts-exporter监控nginx

Prometheus监控nginx有两种方式。

一种是通过nginx-exporter监控,需要开启nginx_stub_status,主要是nginx自身的status信息,metrics数据相对较少;

另一种是使用nginx-vts-exporter监控,但是需要在编译nginx的时候添加nginx-module-vts模块,监控数据较多,提供了包含server、upstream以及cache的相关监控指标,指标更加丰富

综合上述两种优缺点,我采用nginx-vts-exporter实现对nginx的监控。

0.实验环境

版本地址
nginx1.26.0https://blog.csdn.net/liulunan_lln/article/details/140295547
nginx-module-vts0.2.2https://github.com/vozlt/nginx-module-vts/archive/refs/tags/v0.2.1.tar.gz
nginx-vts-exporter0.10.3https://github.com/hnlq715/nginx-vts-exporter/releases/download/v0.10.3/nginx-vts-exporter-0.10.3.linux-amd64.tar.gz

1.对现有nginx升级

1.1 安装nginx-module-vts

# 进入nginx安装目录
cd /root/nginx/nginx-1.26.0
# 下载新的nginx-module-vts
wget https://github.com/vozlt/nginx-module-vts/archive/refs/tags/v0.2.2.tar.gz
# 解压
tar -zxvf v0.2.2.tar.gz
# 预编译 需要新增--add-module=nginx-module-vts-0.2.2   --prefix是nginx的安装目录,需要跟现有的nginx保持一致
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-stream --add-module=nginx-module-vts-0.2.2
# 编译(这里只make,不要make install,不然会覆盖。如果是新装nginx,可以继续make install)
make
make install

1.2 调整配置文件

cd /usr/local/nginx/conf/
# 备份原配置文件
cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.bak
vi /usr/local/nginx/conf/nginx.conf
# 修改nginx.conf配置,增加以下内容
http {# 需要配置vhost_traffic_status_zone;  vhost_traffic_status_filter_by_host on;server {listen  80; #端口任意server_name localhost;# 主要是这个location配置location /status/ {vhost_traffic_status_display;vhost_traffic_status_display_format html;}}
}

添加在nginx.conf中的http段落下。

开启基础监控
vhost_traffic_status_zone;

开启详细状态码统计
vhost_traffic_status_filter on;
vhost_traffic_status_filter_by_set_key $status $server_name;

开启URL统计
vhost_traffic_status_filter on;
vhost_traffic_status_filter_by_set_key u r i u r i s : : uri uris:: uriuris::server_name;

配置建议:

  1. 打开vhost过滤vhost_traffic_status_filter_by_host on;
    开启此功能,在Nginx配置有多个server_name的情况下,会根据不同的server_name进行流量的统计,否则默认会把流量全部计算到第一个server_name上。
  2. 在不想统计流量的server区域禁用vhost_traffic_status,在sever中添加vhost_traffic_statusoff;假如nginx没有规范配置server_name或者无需进行监控的server上,那么建议在此vhost上禁用统计监控功能。否则会出现“127.0.0.1”,hostname等的域名监控信息。

1.3 重启nginx

# 停止旧nginx
/usr/local/nginx/sbin/nginx -s stop
# 启动nginx
/usr/local/nginx/sbin/nginx# 查看nginx是否包含nginx-module-vts-0.2.2 
# configure arguments: 最后是否有 --add-module=nginx-module-vts-0.2.2
[root@master nginx]# ./sbin/nginx -V
nginx version: nginx/1.26.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-stream --add-module=nginx-module-vts-0.2.2

1.4 验证

浏览器访问:http://ip:port/status
请添加图片描述

2.指标采集器nginx-vts-exporter

2.1 下载

wget https://github.com/hnlq715/nginx-vts-exporter/releases/download/v0.10.3/nginx-vts-exporter-0.10.3.linux-amd64.tar.gz
tar -zxvf nginx-vts-exporter-0.10.3.linux-amd64.tar.gz
mv nginx-vts-exporter-0.10.3.linux-amd64 /root/exporter/nginx_exporter/
rm -rf nginx-vts-exporter-0.10.3.linux-amd64 nginx-vts-exporter-0.10.3.linux-amd64.tar.gz

2.2 启动采集器

nohup /root/exporter/nginx_exporter/nginx-vts-exporter  -nginx.scrape_uri https://192.168.56.110/status/format/json -telemetry.address=:49148 >> /root/exporter/nginx_exporter/nginx_vts_exporter.log 2>&1 &

2.3 查看效果请添加图片描述

3.配置到prometheus

打开prometheus配置文件prometheus.yml,然后使配置生效执行curl -X POST http://192.168.56.110:9090/-/reload
在这里插入图片描述

4.grafana添加nginx看板

面板地址:https://grafana.com/grafana/dashboards/2949-nginx-vts-stats/
导入模板编号:2949
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.监控指标说明

  • nginx_server_requests:统计nginx各个host 各个请求的总数,精确到状态码
  • nginx_upstream_requests:统计各个upstream 请求总数,精确到状态码
  • nginx_server_connections:统计nginx几种连接状态type的连接数
  • nginx_server_cache:统计nginx缓存计算器,精确到每一种状态和转发type
  • nginx_server_bytes: 统计nginx进出的字节计数可以精确到每个host,in进,out出
  • nginx_upstream_bytes: 统计nginx各个 upstream 分组的字节总数,细分到进出
  • nginx_upstream_responseMsec:统计各个upstream 平均响应时长,精确到每个节点
  • nginx_server_info:可以用于判断nginx是否存活
  • nginx_vts_exporter_build_info:可以用于判断nginx vts exporter是否存活

参考

  • prometheus通过nginx-vts-exporter监控nginx
  • Prometheus nginx-vts-exporter 监控 Nginx

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Android APN type 配置和问题
  • 数据结构之线性表(python)
  • 【数据结构】数据结构系列学习笔记——导航篇
  • 动规part 05
  • 设计模式 组合模式(Composite Pattern)
  • 基于单片机的无线宠物自动喂食系统设计
  • 什么是L2范数
  • 用户态缓存:环形缓冲区(Ring Buffer)
  • 电力施工作业安全行为检测图像数据集
  • JavaWeb--纯小白笔记06:使用Idea创建Web项目,Servlet生命周期,注解,中文乱码解决
  • 硬件工程师笔试面试——晶振
  • 思通数科开源产品:免费的AI视频监控卫士安装指南
  • git reflog 和 git log 的详解和区别
  • 本地git仓库配置远程仓库的地址
  • 如何在WordPress中添加事件Schema(分步指南)
  • [译] 理解数组在 PHP 内部的实现(给PHP开发者的PHP源码-第四部分)
  • 【391天】每日项目总结系列128(2018.03.03)
  • Akka系列(七):Actor持久化之Akka persistence
  • ES6语法详解(一)
  • Git同步原始仓库到Fork仓库中
  • gulp 教程
  • JavaScript新鲜事·第5期
  • Java反射-动态类加载和重新加载
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • SpiderData 2019年2月25日 DApp数据排行榜
  • 表单中readonly的input等标签,禁止光标进入(focus)的几种方式
  • 简单数学运算程序(不定期更新)
  • 利用jquery编写加法运算验证码
  • 浏览器缓存机制分析
  • 一起参Ember.js讨论、问答社区。
  • 译有关态射的一切
  • 原生 js 实现移动端 Touch 滑动反弹
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • #1014 : Trie树
  • #define,static,const,三种常量的区别
  • #laravel 通过手动安装依赖PHPExcel#
  • #每日一题合集#牛客JZ23-JZ33
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • $L^p$ 调和函数恒为零
  • (10)STL算法之搜索(二) 二分查找
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (3)llvm ir转换过程
  • (6) 深入探索Python-Pandas库的核心数据结构:DataFrame全面解析
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (六)vue-router+UI组件库
  • (每日一问)设计模式:设计模式的原则与分类——如何提升代码质量?
  • (一)u-boot-nand.bin的下载
  • (转)拼包函数及网络封包的异常处理(含代码)
  • .[backups@airmail.cc].faust勒索病毒的最新威胁:如何恢复您的数据?
  • .net core 连接数据库,通过数据库生成Modell
  • .NET 分布式技术比较
  • .NET(C#) Internals: as a developer, .net framework in my eyes
  • .NET/C#⾯试题汇总系列:⾯向对象