prometheus通过nginx-vts-exporter监控nginx

news2024/11/15 17:52:22

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2151299.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MyBatis 分批次执行(新增,修改,删除)

import com.google.common.collect.Lists;import java.util.Iterator; import java.util.List; import java.util.function.Consumer;/*** Description mybatis分批插入数据使用* Author WangKun* Date 2024/9/19 11:20* Version*/ public class MyBatisSqlUtils {/*** param d…

用户态缓存:高效数据交互与性能优化

目录 1. 用户态缓存区工作背景 1.1 为什么每条连接都需要读写缓存区 1.1.1 读缓存区(Read Buffer) 1.1.2 写缓存区(Write Buffer) 1.2 用户态缓存区的工作流程 1.3 用户态缓存区的重要性 2. UDP 和 TCP 的设计差异 2.1 UD…

神经网络 卷积层 参数共享

参数共享常用于神经网络卷积层中,共享的实际上就是说卷积核中的参数一直保持不变,如下所示就可以称为共享参数啦!!

C# 实时流转换为m3u8

主要通过FFmpeg 执行命令进行转换 FFmpeg 下载地址 命令行 ffmpeg -i "rtsp://your_rtsp_stream_address" -codec: copy -start_number 0 -hls_time 10 -hls_list_size 12 -f hls "output.m3u8"start_number 设置播放列表中最先播放的索引号,…

JVM基础篇学习笔记

【注:本文章为自学笔记,仅供学习使用。】 一、JVM简介 JVM是Java虚拟机的缩写,本质上是运行在计算机上面的程序,作用是运行Java字节码文件。 1.1 JVM的功能 Java如果不做优化,则性能不如C/C,因为后者会…

uv-ui组件的使用——自定义输入框的样式

一、官网的使用 二、自定义修改样式 我是在小程序中使用此组件 想要自定义修改样式的话,需要placeholderClass加上 placeholderStyle配合使用 tip1:单独使用placeholderClass,他只会第一次渲染时生效,输入文字再清除后就不生效…

Spring面试题合集

Spring 1.谈谈你对Spring的理解 首先Spring是一个轻量级的开源框架,为Java程序的开发提供了基础架构支持,简化了应用开发,让开发者专注于开发逻辑; 同时Spring是一个容器,它通过管理Bean的生命周期和依赖注入&#…

flask项目初始化

1、初始环境 python3.8 2、flask文档地址:https://flask.palletsprojects.com/en/latest/installation/#install-flask 3、初始化项目 $ mkdir myproject $ cd myproject $ python3 -m venv .venv $ . .venv/bin/activate $ pip install Flask4、打开项目mypr…

机器翻译之多头注意力(MultiAttentionn)在Seq2Seq的应用

目录 1.多头注意力(MultiAttentionn)的理念图 2.代码实现 2.1创建多头注意力函数 2.2验证上述封装的代码 2.3 创建 添加了Bahdanau的decoder 2.4训练 2.5预测 3.知识点个人理解 1.多头注意力(MultiAttentionn)的理念图…

云服务器使用

最近搭建一个内网穿透工具,推荐一个云服务器: 三丰台:https://www.sanfengyun.com/ 作为学生党这个服务器是免费的可以体验使用!可以使用免费虚拟主机和云服务器,写一个申请的基本步骤方便大家构建 申请步骤&#x…

11.1图像的腐蚀和膨胀

基本概念-图像腐蚀 图像腐蚀是一种用于去除图像中小的对象或者突出物体边缘的形态学操作。 图像腐蚀(erosion)的基本概念 图像腐蚀通常用于二值图像,其基本原理是从图像中“侵蚀”掉一些像素点,这些像素点通常是边界上的或者是孤…

Word中引用参考文献和公式编号的方法

文章目录 应用参考文献对于单个文献引用多于多个文献同时引用 公式编号手动编号自动编号 参考: 应用参考文献 对于单个文献引用 word中的参考文献用交叉应用实现。 首先,将参考文献编号: 然后,在需要引用的地方用交叉引用插入…

VM虚拟机使用的镜像文件下载

文章目录 Windows系统进入微软官网下载工具以Windows10为例下载镜像文件 Windows系统 进入微软官网下载工具 微软中国官网:https://www.microsoft.com/zh-cn/ 以Windows10为例下载镜像文件 选择下载的路径 开始下载 安装windows10操作系统出现Time out问题及解决办…

【AI视频】Runway:Gen-2 运镜详解

博客主页: [小ᶻZ࿆] 本文专栏: AI视频 | Runway 文章目录 💯前言💯Camera Control(运镜)💯Camera Control功能测试Horizonta(左右平移)Vertical(上下平移&#xff0…

Python 中的 Kombu 类库

Kombu 是一个用于 Python 的消息队列库,提供了高效、灵活的消息传递机制。它是 Celery 的核心组件之一,但也可以单独使用。Kombu 支持多种消息代理(如 RabbitMQ、Redis、Amazon SQS 等),并提供了消息生产者和消费者的功…

ByteTrack多目标跟踪流程图

ByteTrack多目标跟踪流程图 点个赞吧,谢谢。

用 Pygame 实现一个乒乓球游戏

用 Pygame 实现一个乒乓球游戏 伸手需要一瞬间,牵手却要很多年,无论你遇见谁,他都是你生命该出现的人,绝非偶然。若无相欠,怎会相见。 引言 在这篇文章中,我将带领大家使用 Pygame 库开发一个简单的乒乓球…

python文字转wav音频

借鉴博客 一.前期准备 1. pip install baidu-aip 2. pip install pydub 3. sudo apt-get install ffmpeg 二.代码 from aip import AipSpeech from pydub import AudioSegment import time#input your own APP_ID/API_KEY/SECRET_KEY APP_ID 14891501 API_KEY EIm2iXtvD…

【可变模板参数】

文章目录 可变参数模板的概念可变参数模板的定义方式参数包的展开方式递归展开参数包逗号表达式展开参数包 STL容器中的emplace相关接口函数 可变参数模板的概念 可变参数模板是C11新增的最强大的特性之一,它对参数高度泛化,能够让我们创建可以接受可变…

linux入门——“linux基本指令”下

1.mv指令 mv指令用于移动文件或者目录。语法是mv 源文件 目标文件。它的用法需要注意: 当目标文件不存在的时候,默认是将源文件进行重命名操作,名字就是目标文件的名字,当目标文件存在的时候才会把源文件移动到目标文件。 目标文…