云原生之运维监控实践-使用Prometheus与Grafana实现对Nginx和Nacos服务的监测

news2025/1/14 19:25:04

背景

如果你要为应用程序构建规范或用户故事,那么务必先把应用程序每个组件的监控指标考虑进来,千万不要等到项目结束或部署之前再做这件事情。——《Prometheus监控实战》

去年写了一篇在Docker环境下部署若依微服务ruoyi-cloud项目的文章,当时使用的是 docker-compose 在单台机器上部署若依微服务 ruoyi-cloud 项目;在这个基础上,作为演示项目,我们计划实现对所有基础组件和微服务的监控。之前记录了搭建 PrometheusGrafana 监控系统的过程。今天这篇文章主要是记录下对 NginxNacos 服务的监测,用到的 exporter 是: nginx-prometheus-exporterNacos 自带了一个用于监控的内置端点。

虚机资源

共用到了2台虚机,1台作为应用服务节点,1台运维监控节点。

主机名IP说明
svc192.168.44.168服务节点
ops192.168.44.169监控节点

基本选用当前最新版本,即将安装的 PrometheusGrafana 及组件版本信息如下:

  • Prometheus版本:v2.54.1
  • Grafana版本:11.2.0
  • nginx-prometheus-exporter版本:v1.3.0

系统环境

[root@ops ~]# uname -a
Linux ops 5.10.0-182.0.0.95.oe2203sp3.x86_64 #1 SMP Sat Dec 30 13:10:36 CST 2023 x86_64 x86_64 x86_64 GNU/Linux
[root@ops ~]# cat /proc/version
Linux version 5.10.0-182.0.0.95.oe2203sp3.x86_64 (root@dc-64g.compass-ci) (gcc_old (GCC) 10.3.1, GNU ld (GNU Binutils) 2.37) #1 SMP Sat Dec 30 13:10:36 CST 2023

ops节点:docker-compose安装Prometheus与Grafana

参考云原生之运维监控实践-OpenEuler22.03SP3上安装Prometheus与Grafana实现主机状态监测

svc节点:docker-compose安装nginx-prometheus-exporter

有了 PrometheusGrafana 的基础环境,我们来实现对 Nginx 状态的监控:通过 nginx-prometheus-exporter 快速采集 Nginx 运行数据(如请求数、连接数、响应时间等)并以 Prometheus 格式提供,供 Prometheus 进行采集和分析。

2024-11-16-1-NginxExporterVersion.jpg

验证Nginx的指标端点

命令行输入:

nginx -V 2>&1 | grep -o with-http_stub_status_module
  • 如果在终端中输出with-http_stub_status_module,则说明Nginx已启用stub_status模块。
  • 如果未输出任何结果,则可以使用–with-http_stub_status_module参数从源码重新配置编译Nginx。

在安装 nginx-prometheus-exporter 之前,需要先在 Nginx 的配置文件中开放 stub_status 端点。

    location = /stub_status { # 具体路径可根据业务情况进行调整
            stub_status;
    }

浏览器访问验证端点:http://192.168.44.168/stub_status

Active connections: 60 
server accepts handled requests
 86247 86247 113387 
Reading: 0 Writing: 5 Waiting: 55 

安装nginx-prometheus-exporter

在需要监测的主机上,编辑 docker-compose.yml 文件,增加安装 nginx-prometheus-exporter 配置。

  • [root@svc monitoring]# vi docker-compose.yml
version: '3'
services:
  ops-nginx-exporter:
    container_name: ops-nginx-exporter
    image: nginx/nginx-prometheus-exporter:1.3.0
    networks:
      - custom_network
    environment:
      SCRAPE_URI: http://192.168.44.168/stub_status
    ports:
      - "9113:9113"
    restart: unless-stopped

通过命令: docker-compose up -d 完成镜像拉取、并启动 ops-nginx-exporter 服务。

修改Prometheus配置

Prometheus 配置中增加对svc主机上 Nginx 运行状态的抓取配置。

  • [root@ops monitoring]# vi ./prometheus/conf/prometheus.yml
scrape_configs:
  - job_name: 'ops-nginx'
    scrape_interval: 15s
    static_configs:
      - targets:
        - 192.168.44.168:9113   

重启 Prometheus 容器。

[root@ops monitoring]# docker restart ops-prometheus

验证nginx-prometheus-exporter安装结果

  • 浏览器验证metrics端点

浏览器访问http://192.168.44.168:9113/metrics

  • Prometheus控制台验证nginx相关的指标

2024-11-16-2-NginxIndex.jpg

配置Grafana对主机状态的可视化

浏览器访问http://192.168.44.169:3000。

  • 配置数据源
  1. 点击左侧菜单中的"Add new connection"。
  2. 选择或搜索"Data Sources"。
  3. 点击"Add data source"并选择"Prometheus"。
  4. 在"HTTP"部分输入Prometheus地址,eg:http://192.168.44.169:9090
  5. 点击"Save & Test"确认连接成功。
  • 查看现成的仪表板

https://grafana.com/grafana/dashboards/这个页面是 Grafana 的官方仪表板目录,用户可以在这里找到和共享各种现成的 Grafana 仪表板。这些仪表板覆盖了多种监控需求,包括系统性能、应用监控、网络流量等。用户可以根据自己的需求搜索和导入适合的仪表板,提高监控效率和可视化效果。这里我们搜索 Nginx ,结果中有个 NGINX by nginxinc ,点击进去可以查看详细的UI效果,复制仪表板的id,此处是11199。

  • 导入现成的仪表板
  1. 在右侧菜单中点击"New"按钮,然后选择"Import"。
  2. 在输入框中,可以直接输入现成仪表板的ID,或者上传JSON文件。常用的主机监控仪表板ID是11199(NGINX by nginxinc)。
  3. 点击"Load",随后选择已配置好的数据源。
  4. 点击"Import"完成导入。

2024-11-16-3-NginxImport.jpg

Nginx监控效果

2024-11-16-4-NginxDashboard.jpg

svc节点:Nacos服务

无需 exporterNacos 提供了一个用于监控的内置端点,可以通过该端点获取 Nacos 的各种监控指标,并将其暴露给 Prometheus 进行采集和存储。 Nacos 本身是一个 SpringBoot 应用,通过内置的监控端点 /actuator/prometheus 可以获取 Nacos 的各种监控指标,包括服务注册与发现的状态、配置管理的信息、健康检查的结果等。

修改Prometheus配置

Prometheus 配置中增加对svc主机上 Nacos 运行状态的抓取配置。

  • [root@ops monitoring]# vi ./prometheus/conf/prometheus.yml
scrape_configs:
  - job_name: 'ops-nacos'
    metrics_path: '/nacos/actuator/prometheus'
    scrape_interval: 15s
    static_configs:
      - targets:
        - 192.168.44.168:8848

重启 Prometheus 容器。

[root@ops monitoring]# docker restart ops-prometheus

验证nacos指标端点

  • 浏览器验证metrics端点

浏览器访问http://192.168.44.168:8848/nacos/actuator/prometheus

  • Prometheus控制台验证nacos相关的指标

2024-11-16-5-NacosIndex.jpg

配置Grafana对主机状态的可视化

浏览器访问http://192.168.44.169:3000。

  • 配置数据源
  1. 点击左侧菜单中的"Add new connection"。
  2. 选择或搜索"Data Sources"。
  3. 点击"Add data source"并选择"Prometheus"。
  4. 在"HTTP"部分输入Prometheus地址,eg:http://192.168.44.169:9090
  5. 点击"Save & Test"确认连接成功。
  • 查看现成的仪表板

https://grafana.com/grafana/dashboards/这个页面是 Grafana 的官方仪表板目录,用户可以在这里找到和共享各种现成的 Grafana 仪表板。这些仪表板覆盖了多种监控需求,包括系统性能、应用监控、网络流量等。用户可以根据自己的需求搜索和导入适合的仪表板,提高监控效率和可视化效果。这里我们搜索 Nacos ,结果中有个 Nacos ,点击进去可以查看详细的UI效果,复制仪表板的id,此处是13221。

  • 导入现成的仪表板
  1. 在右侧菜单中点击"New"按钮,然后选择"Import"。
  2. 在输入框中,可以直接输入现成仪表板的ID,或者上传JSON文件。常用的主机监控仪表板ID是13221(Nacos)。
  3. 点击"Load",随后选择已配置好的数据源。
  4. 点击"Import"完成导入。

2024-11-16-6-NacosImport.jpg

Nacos监控效果

2024-11-16-7-NacosDashboard.jpg

小总结

If you can’t measure it, you can’t improve it!

没有度量就没有改进,实际上,监控系统有以下两个客户:技术,业务。上述内容即是对技术组件的监控,方便技术方面的改进与优化。
本文记录了在 Docker 环境下通过 PrometheusGrafana 实现对 NginxNacos 服务的监控。具体步骤包括在服务节点上使用 docker-compose 安装 nginx-prometheus-exporter ,配置 Prometheus 抓取 NginxNacos 的监控数据,并在 Grafana 中配置数据源和导入现成的监控仪表板,以实现对反向代理服务和注册中心服务的性能监控和可视化。

Reference

  • https://github.com/nginxinc/nginx-prometheus-exporter/releases
  • https://grafana.com/grafana/dashboards/

If you have any questions or any bugs are found, please feel free to contact me.

Your comments and suggestions are welcome!

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

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

相关文章

游戏引擎学习第19天

介绍 这段内容描述了开发者在进行游戏开发时,对于音频同步和平台层的理解和调整的过程。以下是更详细的复述: 开发者表达了他希望今天继续进行的工作内容。他提到,昨天他讲解了一些关于音频的内容,今天他想稍微深入讲解一下他正…

node版本升级,从卸载到使用nvm管理node版本并配置vue环境(学习趟雷版)

查找node版本和安装路径 查找当前node版本 node -v 查看弄得版本安装路径 where node 卸载node(没安装过node的可以直接跳过) 通过控制面板删除node,按下【winR】键,输入control 控制面板找到默认程序 找到node程序点击卸载 …

每天五分钟机器学习:支持向量机算法数学基础之核函数

本文重点 从现在开始,我们将开启支持向量机算法的学习,不过在学习支持向量机算法之前,我们先来学习一些支持向量机所依赖的数学知识,这会帮助我们更加深刻的理解支持向量机算法,本文我们先来学习核函数。 定义 核函数(Kernel Function)是一种在支持向量机(SVM)、高…

机器学习基础04

目录 1.朴素贝叶斯-分类 1.1贝叶斯分类理论 1.2条件概率 1.3全概率公式 1.4贝叶斯推断 1.5朴素贝叶斯推断 1.6拉普拉斯平滑系数 1.7API 2.决策树-分类 2.1决策树 2.2基于信息增益的决策树建立 2.2.1信息熵 2.2.2信息增益 2.2.3信息增益决策树建立步骤 2.3基于基…

STM32芯片EXIT外部中断的配置与原理以及模板代码(标准库)

配置EXIT外部中断其实就是把GPIO刀NVIC的各个外设配置好 第一步:配置RCC,把我们涉及到的外设的时钟都打开 (此处EXTI是默认打开的,而NVIC是内核外设无需配置) 第二步:配置GPIO,选择端口为输入模式 第三…

pytest结合allure做接口自动化

这是一个采用pytest框架,结合allure完成接口自动化测试的项目,最后采用allure生成直观美观的测试报告,由于添加了allure的特性,使得测试报告覆盖的内容更全面和阅读起来更方便。 1. 使用pytest构建测试框架,首先配置好…

生成自签名证书并配置 HTTPS 使用自签名证书

生成自签名证书 1. 运行 OpenSSL 命令生成证书和私钥 在终端中输入以下命令,生成自签名证书和私钥文件: sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout self_signed.key -out self_signed.pem-x509:生成自签名证书。…

Linux网络:守护进程

Linux网络:守护进程 会话进程组会话终端 守护进程setsiddaemon 在创建一个网络服务后,往往这个服务进程是一直运行的。但是对于大部分进程来说,如果退出终端,这个终端上创建的所有进程都会退出,这就导致进程的生命周期…

5.4.2-1 编写Java程序在HDFS上创建文件

本次实战涉及使用Java操作Hadoop HDFS,包括创建文件、判断文件存在性及异常处理。通过手动添加依赖、启动HDFS服务,成功在HDFS上创建和检查文件。进一步探索了文件操作的最佳实践,如检查文件存在性以避免重复创建,以及处理HDFS安全…

十六.SpringCloudAlibaba极简入门-整合Grpc代替OpenFeign

前言 他来了他来了,停了快2个月了终于又开始更新文章啦,这次带来的绝对是干货!!!。由于公司项目进行重构的时候考虑到,OpenFeign做为服务通信组件在高并发情况下有一定的性能瓶颈,所以将其替换…

【pytest】pytest注解使用指南

前言:在 pytest 测试框架中,注解(通常称为装饰器)用于为测试函数、类或方法提供额外的信息或元数据。这些装饰器可以影响测试的执行方式、报告方式以及测试的组织结构。pytest 提供了多种内置的装饰器,以及通过插件扩展…

百度AI人脸检测与对比

1.注册账号 打开网站 https://ai.baidu.com/ &#xff0c;注册百度账号并登录 2.创建应用 3.技术文档 https://ai.baidu.com/ai-doc/FACE/yk37c1u4t 4.Spring Boot简单集成测试 pom.xml 配置&#xff1a; <!--百度AI--> <dependency> <groupId>com.baidu.…

A040-基于springboot的智能停车计费系统设计与实现

&#x1f64a;作者简介&#xff1a;在校研究生&#xff0c;拥有计算机专业的研究生开发团队&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339; 赠送计算机毕业设计600…

力扣 LeetCode 222. 完全二叉树的节点个数(Day7:二叉树)

解题思路&#xff1a; 解法一&#xff1a;普通二叉树解法 使用后序遍历 有一行的精简版代码但不利于理解采用的哪一种遍历方式 解法二&#xff1a;利用上完全二叉树的特点 一个指针left&#xff0c;一个指针right left一直向左遍历&#xff0c;right一直向右遍历&#xff…

hhdb数据库介绍(9-21)

计算节点参数说明 checkClusterBeforeDnSwitch 参数说明&#xff1a; PropertyValue参数值checkClusterBeforeDnSwitch是否可见否参数说明集群模式下触发数据节点高可用切换时&#xff0c;是否先判断集群所有成员正常再进行数据节点切换默认值falseReload是否生效是 参数设…

百度智能云千帆大模型平台引领企业创新增长

本文整理自百度世界大会 2024——「智能跃迁 产业加速」论坛的同名演讲。 更多大会演讲内容&#xff0c;请访问&#xff1a; https://baiduworld.baidu.com 首先&#xff0c;跟大家分享一张图&#xff0c;这个是我们目前大模型应用落地的场景分布。可以看到&#xff0c;大模型…

得物彩虹桥架构演进之路-负载均衡篇

文 / 新一 一、前言 一年一更的彩虹桥系列又来了&#xff0c;在前面两期我们分享了在稳定性和性能2个层面的一些演进&优化思路。近期我们针对彩虹桥 Proxy 负载均衡层面的架构做了一次升级&#xff0c;目前新架构已经部署完成&#xff0c;生产环境正在逐步升级中&#xf…

C++ lambda(匿名函数)捕获自己

今天写算法题时无意间遇到一种情况,我的深度优先遍历函数要在函数内调用自身,如果是普通函数没什么问题,但如果是 匿名函数 的话会有一些问题,甚至问ai,ai也没打上来,上网搜了半天,才找到这个的解答,故作此文 以费契那波数列为例 // 普通函数式 int fun(int pos) {if (pos …

解决Spring Boot整合Redis时的连接问题

前言 在使用Spring Boot整合Redis的过程中&#xff0c;经常会遇到连接问题&#xff0c;尤其是当Redis服务部署在远程服务器上时。 问题描述 当你尝试连接到Redis服务器时&#xff0c;可能会遇到以下错误&#xff1a; org.springframework.data.redis.connection.PoolExcept…

vue3 路由守卫

在Vue 3中&#xff0c;路由守卫是一种控制和管理路由跳转的机制。它允许你在执行导航前后进行一些逻辑处理&#xff0c;比如权限验证、数据预取等&#xff0c;从而增强应用的安全性和效率。路由守卫分为几种不同的类型&#xff0c;每种类型的守卫都有其特定的应用场景。 其实路…