云原生之运维监控实践-使用Prometheus与Grafana实现对Nginx和Nacos服务的监测
背景
如果你要为应用程序构建规范或用户故事,那么务必先把应用程序每个组件的监控指标考虑进来,千万不要等到项目结束或部署之前再做这件事情。——《Prometheus监控实战》
去年写了一篇在Docker环境下部署若依微服务ruoyi-cloud项目的文章,当时使用的是 docker-compose
在单台机器上部署若依微服务 ruoyi-cloud
项目;在这个基础上,作为演示项目,我们计划实现对所有基础组件和微服务的监控。之前记录了搭建 Prometheus
与 Grafana
监控系统的过程。今天这篇文章主要是记录下对 Nginx
和 Nacos
服务的监测,用到的 exporter
是: nginx-prometheus-exporter
, Nacos
自带了一个用于监控的内置端点。
虚机资源
共用到了2台虚机,1台作为应用服务节点,1台运维监控节点。
主机名 | IP | 说明 |
---|---|---|
svc | 192.168.44.168 | 服务节点 |
ops | 192.168.44.169 | 监控节点 |
基本选用当前最新版本,即将安装的 Prometheus
和 Grafana
及组件版本信息如下:
- 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
有了 Prometheus
与 Grafana
的基础环境,我们来实现对 Nginx
状态的监控:通过 nginx-prometheus-exporter
快速采集 Nginx
运行数据(如请求数、连接数、响应时间等)并以 Prometheus
格式提供,供 Prometheus
进行采集和分析。
验证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 requests86247 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-exporterimage: nginx/nginx-prometheus-exporter:1.3.0networks:- custom_networkenvironment:SCRAPE_URI: http://192.168.44.168/stub_statusports:- "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: 15sstatic_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相关的指标
配置Grafana对主机状态的可视化
浏览器访问http://192.168.44.169:3000。
- 配置数据源
- 点击左侧菜单中的"Add new connection"。
- 选择或搜索"Data Sources"。
- 点击"Add data source"并选择"Prometheus"。
- 在"HTTP"部分输入Prometheus地址,eg:http://192.168.44.169:9090
- 点击"Save & Test"确认连接成功。
- 查看现成的仪表板
https://grafana.com/grafana/dashboards/这个页面是 Grafana
的官方仪表板目录,用户可以在这里找到和共享各种现成的 Grafana
仪表板。这些仪表板覆盖了多种监控需求,包括系统性能、应用监控、网络流量等。用户可以根据自己的需求搜索和导入适合的仪表板,提高监控效率和可视化效果。这里我们搜索 Nginx
,结果中有个 NGINX by nginxinc
,点击进去可以查看详细的UI效果,复制仪表板的id,此处是11199。
- 导入现成的仪表板
- 在右侧菜单中点击"New"按钮,然后选择"Import"。
- 在输入框中,可以直接输入现成仪表板的ID,或者上传JSON文件。常用的主机监控仪表板ID是11199(NGINX by nginxinc)。
- 点击"Load",随后选择已配置好的数据源。
- 点击"Import"完成导入。
Nginx监控效果
svc节点:Nacos服务
无需 exporter
, Nacos
提供了一个用于监控的内置端点,可以通过该端点获取 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: 15sstatic_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相关的指标
配置Grafana对主机状态的可视化
浏览器访问http://192.168.44.169:3000。
- 配置数据源
- 点击左侧菜单中的"Add new connection"。
- 选择或搜索"Data Sources"。
- 点击"Add data source"并选择"Prometheus"。
- 在"HTTP"部分输入Prometheus地址,eg:http://192.168.44.169:9090
- 点击"Save & Test"确认连接成功。
- 查看现成的仪表板
https://grafana.com/grafana/dashboards/这个页面是 Grafana
的官方仪表板目录,用户可以在这里找到和共享各种现成的 Grafana
仪表板。这些仪表板覆盖了多种监控需求,包括系统性能、应用监控、网络流量等。用户可以根据自己的需求搜索和导入适合的仪表板,提高监控效率和可视化效果。这里我们搜索 Nacos
,结果中有个 Nacos
,点击进去可以查看详细的UI效果,复制仪表板的id,此处是13221。
- 导入现成的仪表板
- 在右侧菜单中点击"New"按钮,然后选择"Import"。
- 在输入框中,可以直接输入现成仪表板的ID,或者上传JSON文件。常用的主机监控仪表板ID是13221(Nacos)。
- 点击"Load",随后选择已配置好的数据源。
- 点击"Import"完成导入。
Nacos监控效果
小总结
If you can’t measure it, you can’t improve it!
没有度量就没有改进,实际上,监控系统有以下两个客户:技术,业务。上述内容即是对技术组件的监控,方便技术方面的改进与优化。
本文记录了在 Docker
环境下通过 Prometheus
和 Grafana
实现对 Nginx
和 Nacos
服务的监控。具体步骤包括在服务节点上使用 docker-compose
安装 nginx-prometheus-exporter
,配置 Prometheus
抓取 Nginx
和 Nacos
的监控数据,并在 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!
相关文章:
云原生之运维监控实践-使用Prometheus与Grafana实现对Nginx和Nacos服务的监测
背景 如果你要为应用程序构建规范或用户故事,那么务必先把应用程序每个组件的监控指标考虑进来,千万不要等到项目结束或部署之前再做这件事情。——《Prometheus监控实战》 去年写了一篇在Docker环境下部署若依微服务ruoyi-cloud项目的文章,当…...
软考教材重点内容 信息安全工程师 第 4 章 网络安全体系与网络安全模型
4,1 网络安全体系的主要特征: (1)整体性。网络安全体系从全局、长远的角度实现安全保障,网络安全单元按照一定的规则,相互依赖、相互约束、相互作用而形成人机物一体化的网络安全保护方式。 (2)协同性。网络安全体系依赖于多种安全机制,通过各…...
机器学习——期末复习 重点题归纳
第一题 问题描述 现有如下数据样本: 编号色泽敲声甜度好瓜1乌黑浊响高是2浅白沉闷低否3青绿清脆中是4浅白浊响低否 (1)根据上表,给出属于对应假设空间的3个不同假设。若某种算法的归纳偏好为“适应情形尽可能少”,…...
MYSQL——数据更新
一、插入数据 1.插入完整的数据记录 在MYSQL中,使用SQL语句INSERT插入一条完整的记录,语法如下: INSERT INTO 表名 [(字段名1[,...字段名n])] VALUES (值1[...,值n]); 表名——用于指定要插入的数据的表名 字段名——用于指定需要插入数据…...
Vite 基础理解及应用
文章目录 概要Vite基础知识点1. 快速启动和热更新热更新原理 2. 基于ES模块的构建3. 对不同前端框架的支持 vite.config.js配置实例1. 基本结构2. 服务器相关配置3. 输入输出路径配置4. 打包优化配置 项目构建一、项目初始化二、项目结构理解三、CSS处理四、静态资源处理五、构…...
[JAVA]用MyBatis框架实现一个简单的数据查询操作
基于在前面几章我们已经学习了对MyBatis进行环境配置,并利用SqlSessionFactory核心接口生成了sqlSession对象对数据库进行交互,执行增删改查操作。这里我们就先来学习如何对数据进行查询的操作,具体查询操作有以下几个步骤 创建实体类创建Ma…...
CSS 样式的优先级?
在CSS中,样式的优先级决定了当多个样式规则应用于同一个元素时,哪个样式会被最终使用。以下是一些决定CSS样式优先级的规则: 就近原则: 最后应用在元素上的样式具有最高优先级。这意味着如果两个选择器都应用了相同的样式…...
Linux驱动开发快速入门——字符设备驱动(直接操作寄存器设备树版)
Linux驱动开发快速入门——字符设备驱动 前言 笔者使用开发板型号:正点原子的IMX6ULL-alpha开发板。ubuntu版本为:20.04。写此文也是以备忘为目的。 字符设备驱动 本小结将以直接操作寄存器的方式控制一个LED灯,可以通过read系统调用可以…...
数据结构《栈和队列》
文章目录 一、什么是栈?1.1 栈的模拟实现1.2 关于栈的例题 二、什么是队列?2.2 队列的模拟实现2.2 关于队列的例题 总结 提示:关于栈和队列的实现其实很简单,基本上是对之前的顺序表和链表的一种应用,代码部分也不难。…...
C# 超链接控件LinkLabel无法触发Alt快捷键
在C#中,为控件添加快捷键的方式有两种,其中一种就是Windows中较为常见的Alt快捷键,比如运行对话框,记事本菜单等。只需要按下 Alt 框号中带下划线的字母即可触发该控件的点击操作。如图所示 在C#开发中,实现类似的操作…...
JVM类加载过程-Loading
一、Class对象的生命周期 .class文件是如何加载到内存中:.class文件是ClassLoader通过IO将文件读到内存,再通过双亲委派的模式进行Loading,再Linking、以及Initializing,代码调用等一系列操作后,进行GC,组成完整的生命周期; 二、双亲委派模式(Loading的过程): 1、类…...
2024年11月19日Github流行趋势
项目名称:build-your-own-x 项目维护者:danistefanovic, rohitpaulk, sarupbanskota 等项目介绍:通过从零开始重新创建你最喜欢的技术来掌握编程。项目star数:312,081项目fork数:29,004 项目名称:freqtrad…...
详细描述一下Elasticsearch索引文档的过程?
大家好,我是锋哥。今天分享关于【详细描述一下Elasticsearch索引文档的过程?】面试题。希望对大家有帮助; 详细描述一下Elasticsearch索引文档的过程? Elasticsearch的索引文档过程是其核心功能之一,涉及将数据存储到…...
基于css的Grid布局和vue实现点击左移右移轮播过渡动画效果
直接上代码,以下代码基于vue2,需要Vue3或者react可以使用国内直连GPT/Claude来帮你转换下 代码如下: // ScrollCardsGrid.vue <template><div class"scroll-cards-container"><!-- 左箭头 --><div v-show"showLef…...
HarmonyOS NEXT应用元服务开发Intents Kit(意图框架服务)习惯推荐方案概述
一、习惯推荐是HarmonyOS学习用户的行为习惯后做出的主动预测推荐。 1.开发者将用户在应用/元服务内的使用行为向HarmonyOS共享,使得HarmonyOS可以基于共享的数据学习用户的行为习惯。 2.在HarmonyOS学习到用户的行为习惯后,会给用户推荐相应功能&#x…...
【AtCoder】Beginner Contest 380-F.Exchange Game
题目链接 Problem Statement Takahashi and Aoki will play a game using cards with numbers written on them. Initially, Takahashi has N N N cards with numbers A 1 , … , A N A_1, \ldots, A_N A1,…,AN in his hand, Aoki has M M M cards with numbers B …...
30. 并发编程
一、什么是多任务 如果一个操作系统上同时运行了多个程序,那么称这个操作系统就是 多任务的操作系统,例如:Windows、Mac、Android、IOS、Harmony 等。如果是一个程序,它可以同时执行多个事情,那么就称为 多任务的程序。…...
【包教包会】CocosCreator3.x框架——带翻页特效的场景切换
一、效果演示 二、如何获取 1、https://gitee.com/szrpf/TurnPage 2、解压,导入cocos creator(版本3.8.2),可以直接运行Demo演示 三、算法思路 1、单场景 页面预制体 通过loadScene来切换页面,无法实现页面特效。…...
k8s上面的Redis集群链接不上master的解决办法
问题描述 之前在k8s上面部署了一台node,然后创建了6个redis的pod,构建了一个redis的集群,正常运行。 最近添加了一台slave node,然后把其中的几个redis的pod调度到了slave node上面,结果集群就起不来了,…...
<项目代码>YOLOv8 瞳孔识别<目标检测>
YOLOv8是一种单阶段(one-stage)检测算法,它将目标检测问题转化为一个回归问题,能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法(如Faster R-CNN),YOLOv8具有更高的…...
网络编程-002-UDP通信
1.UDP通信的简单介绍 1.1不需要通信握手,无需维持连接,网络带宽需求较小,而实时性要求高 1.2 包大小有限制,不发大于路径MTU的数据包 1.3容易丢包 1.4 可以实现一对多,多对多 2.客户端与服务端=发送端与接收端 代码框架 收数据方一般都是客户端/接收端 3.头文件 #i…...
MySQL更换瀚高语法更换
MySQL更换瀚高语法更换 一、前言二、语句 一、前言 水一篇,mysql更换瀚高之后,一些需要更换的语法介绍 > 二、语句 MySQL瀚高MySQL用法瀚高用法说明ifnull(x,y)coalesce(x,y)相同相同用于检查两个表达式并返回第一个非空表达式。如果第一个表达式不是 NULL&…...
Object.prototype.hasOwnProperty.call(item, key) 作用与用途
在 JavaScript 中,Object.prototype.hasOwnProperty.call(item, key) 是一种检查对象 item 是否具有特定属性 key 作为自身的属性(而不是继承自原型链)的方法。这种调用方式是安全的,特别是在处理可能被修改过原型链的对象时。 解…...
DNS的10种资源记录
前言 在DNS(域名系统)中,常见的资源记录(Resource Records, RR)用于存储域名与IP地址、邮件服务器等网络资源之间的映射关系。以下是几种常见的DNS资源记录: 1. A记录(Address Record…...
【数据分享】1981-2024年我国逐日最低气温栅格数据(免费获取)
气象数据一直是一个价值很高的数据,它被广泛用于各个领域的研究当中。之前我们分享过来源于美国国家海洋和大气管理局(NOAA)下设的国家环境信息中心(NCEI)发布的1929-2024年全球站点的逐日最低气温数据(可查看之前的文章获悉详情&…...
Kafka进阶_1.生产消息
文章目录 一、Controller选举二、生产消息2.1、创建待发送数据2.2、创建生产者对象,发送数据2.3、发送回调2.3.1、异步发送2.3.2、同步发送 2.4、拦截器2.5、序列化器2.6、分区器2.7、消息可靠性2.7.1、acks 02.7.2、acks 1(默认)2.7.3、acks -1或all 2.8、部分重…...
百度世界2024:智能体引领AI应用新纪元
在近日盛大举行的百度世界2024大会上,百度创始人李彦宏以一场题为“文心一言”的精彩演讲,再次将全球科技界的目光聚焦于人工智能(AI)的无限可能。作为一名科技自媒体,我深感这场演讲不仅是对百度AI技术实力的一次全面…...
NIST 发布后量子密码学转型战略草案
美国国家标准与技术研究所 (NIST) 发布了其初步战略草案,即内部报告 (IR) 8547,标题为“向后量子密码标准过渡”。 该草案概述了 NIST 从当前易受量子计算攻击的加密算法迁移到抗量子替代算法的战略。该草案于 2024 年 11 月 12 日发布,开放…...
同向双指针
长度最小的子数组 力扣209 #define MIN(a, b) ((b) < (a) ? (b) : (a)) int minSubArrayLen(int target, int* nums, int numsSize) {int ans numsSize 1;int left 0;int right 0;int sum 0;for (right 0; right < numsSize; right){sum nums[right];while (su…...
小鹏汽车大数据面试题及参考答案
抽象类与接口的区别是什么? 抽象类是一种不能被实例化的类,它可以包含抽象方法和非抽象方法。抽象方法是没有具体实现的方法,必须在子类中被实现。抽象类主要用于为一组相关的类提供一个通用的模板,子类可以继承抽象类并实现其中的抽象方法,也可以使用抽象类中的非抽象方法…...
做爰全过程免费的视网站频/汕头seo优化培训
本文以飞凌嵌入式OKMX6Q/DL平台为基础讲解,其它iMX6平台可参考使用。第一章 Android4.4屏幕竖屏修改Android源码(Android源码需要整体编译一遍以后才可以)vim out/target/product/okmx6qd_c/root/init.rc添加红框部分,重新编译烧写即可注:1.…...
用三权重的网站做友链有好处没/白帽seo是什么
2012年即将过去,从毕业到现在一年半时间,在w公司的维护岗位上也工作了整一年。这一年时间里,像大多数运维人员一样,每天24小时待命,也有半夜被叫起来处理问题的苦逼,但回望这一年维护工作,更多的…...
兰州手机网站制作公司/北京seo专业团队
基于springboot在线投票系统 摘 要 随着全球Internet的迅猛发展和计算机应用的普及,特别是近几年无线网络的广阔覆盖以及无线终端设备的爆炸式增长,使得人们能够随时随地的访问网络,以获取最新信息、参与网络活动、和他人在线互动。为了能及时…...
网站建设骗子/教师遭网课入侵直播录屏曝光广场舞
合作信息处理模型 介绍:B业务经理的到来A公司洽谈合作,A公司老板接待、会晤,经(握手完毕)老板会做下一个和后续的管理C。允许C直接地A进入谈判,然后,C找了几个技术人员(C1、C2、C3&…...
如何渗透wordpress的网站/哪个app可以找培训班
文章目录一、rsync概述二、rsync优缺点1)优点2)缺点三、rsyncinotify配置与安装1)rsync安装2)rsync配置3)启动rsync服务4)测试验证5)编译安装 inotify-tools1、inotify-tools概述2、优化inotify…...
做建材的网站有哪些/最近一周的新闻热点事件
使用一些类库进行http请求时,比如使用Apache HttpComponents 库。默认的, HttpClient 尝试自动从 I/O 异常恢复。这种自动恢复机制仅限于一些被认为是安全的异常,比如套接字被重置或者套接字被关闭。但是有些场景重试会造成重复请求风险。一般…...