Docker 环境下 Nginx 监控实战:使用 Prometheus 实现 Nginx 性能监控的完整部署指南

Docker 环境下 Nginx 监控实战:使用 Prometheus 实现 Nginx 性能监控的完整部署指南

文章目录

  • Docker 环境下 Nginx 监控实战:使用 Prometheus 实现 Nginx 性能监控的完整部署指南
      • 一 查看模块是否安装
      • 二 配置 status 访问端点
      • 三 Docker 部署 nginx-prometheus-exporter
        • 1)使用 nohup 启动
        • 2)Docker run 启动
        • 3)docker compose 启动
      • 四 验证部署成功
      • 五 配置 prometheus

本文详细介绍了如何在 Docker 环境下,通过配置 Nginx 的 stub_status 模块,并结合 Prometheus 和 Nginx Prometheus Exporter,实现对 Nginx 服务的性能监控。文章首先讲解如何确认 Nginx 是否已启用 with-http_stub_status_module 模块,随后通过修改 Nginx 配置文件,设置监控访问端点。接着,文章提供了三种部署 Nginx Prometheus Exporter 的方式,包括使用 nohup、Docker run 和 Docker Compose。最后,通过 Prometheus 的配置示例,确保可以定期拉取 Nginx 性能指标数据,帮助开发者和运维人员实现高效的监控解决方案。

预备课

Docker 安装与配置:从入门到部署

Docker 部署 Prometheus+Grafana 监控系统快速指南

Docker 环境下安装和配置 Nginx 实践

一 查看模块是否安装

确认 with-http_stub_status_module 模块已安装。运行命名查看参数:

$ nginx -V

获取启动参数:

configure arguments: --prefix=/etc/nginx ... --with-http_stub_status_module --with-http_sub_module

二 配置 status 访问端点

修改 nginx 的配置文件指定 status 页面的 URL 。

server {listen 80;  # 监听80端口,可以自行修改端口号,注意在外层的nginx.conf中也需要对应修改配置location /stub_status {allow 192.168.0.6; # 允许IP地址192.168.0.6访问(当使用Docker部署时,这个IP应该是当前宿主机的IP)deny all; # 拒绝所有其他IP的访问stub_status on;# 打开Nginx的stub_status模块,用于监控Nginx的状态access_log off;# 关闭该location的访问日志,减少日志写入的开销}
}

三 Docker 部署 nginx-prometheus-exporter

1)使用 nohup 启动
# 使用 nohup 命令在后台启动 nginx-prometheus-exporter,并将标准输出和错误输出重定向,使得命令在退出终端时不会被终止。
nohup ./nginx-prometheus-exporter -nginx.scrape-uri http://127.0.0.1:80/nginx_status &
# ./nginx-prometheus-exporter 表示执行当前目录下的 nginx-prometheus-exporter 可执行文件。
# -nginx.scrape-uri http://127.0.0.1:80/nginx_status 指定了 Prometheus Exporter 抓取 Nginx 状态指标的 URL。
# & 将命令放在后台执行。
2)Docker run 启动
# 使用 Docker 运行 nginx-prometheus-exporter 容器,映射主机的 9113 端口到容器的 9113 端口。
docker run -p 9113:9113 nginx/nginx-prometheus-exporter:0.11.0 -nginx.scrape-uri=http://<nginx>:8080/stub_status
# docker run 是 Docker 的命令,用于运行一个新的容器。
# -p 9113:9113 映射主机的 9113 端口到容器的 9113 端口,以便外部可以访问容器提供的服务。
# nginx/nginx-prometheus-exporter:0.11.0 指定使用的容器镜像和版本号。
# -nginx.scrape-uri=http://<nginx>:8080/stub_status 指定容器内部的 Prometheus Exporter 抓取 Nginx 状态指标的 URL。此处 <nginx> 需替换为 Nginx 服务器的实际地址或主机名。
3)docker compose 启动

docker-compose.ng06.yml

version: '3'
services:ng_exporter:image: nginx/nginx-prometheus-exporter:latestcontainer_name: ng_exporterhostname: ng_exporter_108restart: alwaysnetwork_mode: "host" # docker时使用 host 网络模式,否则403environment:- SCRAPE_URI=http://192.168.0.6/stub_statusports:- "9113:9113"

:nohup、docker run 和 docker compose 任意选择其一。

四 验证部署成功

当使用 host 网络模式时,系统会提示“ng_exporter Published ports are discarded when using host network mode”。在这种模式下,外部网络无法访问验证的 URL,但本机可以访问。主要问题在于 allow 192.168.0.6 的配置,因为在 host 模式下,正确配置 allow 选项的网络地址难以确定。

在使用 Docker 容器的 host 网络模式时,容器不是使用独立的虚拟网络,而是直接使用宿主机的网络。因此,容器内的应用(如 nginx)看到的 IP 地址是直接来自外部网络或宿主机网络,而不是像通常在桥接或覆盖网络模式下通过 Docker 网络抽象看到的。
在这种情况下,配置 nginx 的 allow 选项,即指定哪些 IP 地址可以访问特定的服务,变得复杂。因为宿主机可能有多个网络接口和动态变化的 IP 地址,所以预先确定和配置哪个或哪些 IP 地址应被允许访问服务可能不是一个明确或静态的决策。

访问地址 URL :http://192.168.0.6:9113/metrics

五 配置 prometheus

prometheus.yml 的配置,按照设定的抓取周期拉取指标数据。

global:scrape_interval: 15s # 定义了 Prometheus 抓取(拉取)指标的默认周期,这里设置为每15秒一次external_labels:monitor: 'your-ng-exporter'# 定义了一个外部标签,用于所有从 Prometheus 发送的指标。这里定义的标签名为 monitor,值为 'your-ng-exporter'。# 这有助于在 Prometheus 的监控环境中识别和区分不同的数据源或者监控代理。scrape_configs:# 定义抓取配置的数组,每个元素描述了一组特定的抓取规则和目标。- job_name: 'nginx_status_module'# 每个抓取任务的名称,这里定义了一个名为 'nginx_status_module' 的任务,通常用于区分 Prometheus 中不同的抓取任务。metrics_path: '/metrics'# 定义 Prometheus 抓取指标的 HTTP 路径,默认为 '/metrics'。这是暴露指标数据的端点,Prometheus 会访问这个路径收集数据。static_configs:# 静态配置,用于定义固定的目标,这些目标的网络位置不会改变。- targets: ['192.168.0.6:9113']# 列表定义了具体的抓取目标,这里的目标是 '192.168.0.6:9113'。# '192.168.0.6' 是 nginx-prometheus-exporter 服务的 IP 地址,'9113' 是服务监听的端口。# Prometheus 会连接到这个地址和端口,按照设定的抓取周期拉取指标数据。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity中搜索不到XR Interaction Toolkit包解决方法

问题&#xff1a; 针对Unity版本2020.3在中PackageManager可能搜素不到XR Interaction Toolkit包 在Package Manager中未显示XR Interaction Toolkit包 解决方法&#xff1a; Package manager左上角&#xff0c;点加号&#xff0c;选择 Add package from git URL..&#xff0c;…

21年408数据结构

第一题&#xff1a; 解析&#xff1a;q指针指向要被删除的元素&#xff0c;当这个元素是链表中唯一一个元素时&#xff0c;q指针和尾指针都指向同一个元素&#xff0c;那么在删除掉这个元素之前&#xff0c;需要将尾指针调整到指向头指针的位置&#xff0c;此时链表为空&#x…

说下SSL/TLS四次握手过程?

参考自&#xff1a;SSL/TLS四次握手过程是怎么样的&#xff1f;HTTPS、SSL、TLS三者之间的联系和区别 一.SSL/TLS 简介 SSL(Secure Socket Layer 安全套接层)是基于 HTTPS 下的一个协议加密层&#xff0c;用于解决 HTTP 在传输数据时使用明文而导致的不安全问题。 SSL 是 HT…

【数据结构】零碎知识点(易忘 / 易错)总结回顾

一、数据结构的概念 数据结构&#xff08;Data Structure&#xff09;是计算机存储、组织数据的方式&#xff0c;指相互之间存在一种或多种特定关系的数据元素的集合。 二、算法 算法&#xff08;Algorithm&#xff09;就是定义良好的计算过程&#xff0c;它取一个或一组的值为…

二分图算法总结 C++实现

总体概念 染色法 基本思路步骤 将所有的边及其相接的边用邻接表存储起来&#xff1b;遍历所有的点&#xff0c;找到未上色的点&#xff1b;用BFS将该点及其相接的点迭代上色&#xff1b;在上述染色步骤中&#xff0c;如果相邻点的颜色相同则无法形成二分图&#xff1b; 题目…

数据结构:单链表OJ题

目录 相交链表解题思路代码 环形链表&#xff08;I&#xff09;解题思路代码 环形链表&#xff08;II&#xff09;解题思路代码 随机链表的复制&#xff08;深拷贝&#xff09;解题思路代码 相交链表 题目描述&#xff1a; 案例&#xff1a; 题目链接&#xff1a;https://l…

FunASR离线文件转写服务开发指南-debian-10.13

FunASR离线文件转写服务开发指南-debian-10.13 服务器环境 debian10.13 64位 第一步 配置静态网卡 auto eth0 iface eth0 inet static address 192.168.1.100 netmask 255.255.255.0 gateway 192.168.1.1 dns-nameservers 8.8.8.8 8.8.4.4/etc/init.d/networking restart第…

【JVM】JMM

文章目录 前置的硬件知识什么是JMMJMM的三大特性JMM中定义的原子操作happens-before先行发生原则 前置的硬件知识 硬件存储体系: 运行速度从上到下依次减慢. 由于CPU的计算速度远超与内存的处理速度,所以CPU不会直接从内存中读写,而是将内存中的变量拷贝一份副本放到CPU高速…

2022年下真题(案例分析)

一、数据流图 二、数据库设计 - ER图 三、面向对象设计 - 用例图、类图 四、算法

【人工智能】AI人工智能的重要组成部分,深入解析CNN与RNN两种神经网络的异同与应用场景和区别

文章目录 一、卷积神经网络&#xff08;CNN&#xff09;详解1. 特征与结构CNN的基本结构 2. 应用场景3. 代码示例 二、循环神经网络&#xff08;RNN&#xff09;详解1. 网络结构与特点RNN的基本结构 2. 应用场景3. 代码示例 三、CNN与RNN的异同点1. 相同点2. 不同点 四、CNN与R…

基于YOLOv8-deepsort算法的智能车辆目标检测车辆跟踪和车辆计数

关于深度实战社区 我们是一个深度学习领域的独立工作室。团队成员有&#xff1a;中科大硕士、纽约大学硕士、浙江大学硕士、华东理工博士等&#xff0c;曾在腾讯、百度、德勤等担任算法工程师/产品经理。全网20多万粉丝&#xff0c;拥有2篇国家级人工智能发明专利。 社区特色…

Vue使用@别名替换后端ip地址

1. 安装 types/node types/node 包允许您在TypeScript项目中使用Node.js的核心模块和API&#xff0c;并提供了对它们的类型检查和智能提示的支持。 npm install types/node --save-dev 比如安装之后&#xff0c;就可以导入nodejs的 path模块&#xff0c;在下面代码 import path…

闪电麦昆 语音控制齿轮行进轨迹,ESP32搭配语音控制板,串口通信,附视频演示地址

演示地址 https://www.bilibili.com/video/BV1cW421d79L/?vd_sourceb8515e53f6d4c564b541d98dcc9df990 语音控制板的配置 web展示页面 esp32 程序 #include <ESP8266WiFi.h> #include <ESP8266WebServer.h> #include <LittleFS.h> #include <WebSo…

STL之set、map的使用

STL之set、map 1. 序列式容器和关联式容器2. set系列的使⽤参考文档链接&#xff1a;2.1 set的介绍&#xff08;2&#xff09;set的增删查2.2 multiset的介绍 3 map3.1 参考文档3.2 map类的介绍3.3 pair类型介绍3.4 map的构造3.6 map的数据修改3.7 multimap和map的差异 1. 序列…

openpdf

1、简介 2、示例 2.1 引入依赖 <dependency><groupId>com.github.librepdf</groupId><artifactId>openpdf</artifactId><version>1.3.34</version></dependency><dependency><groupId>com.github.librepdf</…

python+yaml+pytest+allure接口自动化框架

建议想学自动化的同学&#xff0c;先花半个月一个月的时间&#xff0c;去b站极限学习一下有关python的基础内容&#xff0c;比如各种数据类型的特点&#xff0c;创建 转换等&#xff0c;还有面向对象的一些知识&#xff0c;否则直接看自动化框架&#xff0c;很难看懂理解&#…

根据请求错误的状态码判断代理配置问题

SafeLine&#xff0c;中文名 “雷池”&#xff0c;是一款简单好用, 效果突出的 Web 应用防火墙(WAF)&#xff0c;可以保护 Web 服务不受黑客攻击。 雷池通过过滤和监控 Web 应用与互联网之间的 HTTP 流量来保护 Web 服务。可以保护 Web 服务免受 SQL 注入、XSS、 代码注入、命…

2024顶级一区idea:多模态图像融合!

在图像处理的前沿领域&#xff0c;多模态图像融合技术正成为研究的热点&#xff0c;它通过整合来自不同来源的图像数据&#xff0c;为我们提供了更丰富的信息维度&#xff0c;从而显著提升图像处理的精确度和效率。 这项技术的核心优势在于能够捕捉并融合各种图像数据中的互补…

3D渲图软件推荐:打造高质量渲染效果

在现代设计领域&#xff0c;3D渲图已经成为展示设计方案和产品外观的重要手段。无论是建筑设计、产品设计还是影视动画&#xff0c;都需要借助专业的3D渲染图软件来实现逼真的视觉效果。 本文将为您介绍几款备受好评的3D渲染图软件&#xff0c;帮助您在项目中选择合适的工具。…

户外防火值守:太阳能语音监控杆的参数及技术特点

随着假期旅游的热潮日渐高涨&#xff0c;我们游览各大景区、公园或森林区域时&#xff0c;经常会与各种智能设备不期而遇。这些高科技产品不仅提升了旅游体验&#xff0c;更在无形中保障了游客的安全与景区的环境保护。在我最近的旅行经历中&#xff0c;尤其是在深圳大鹏旅游景…