企业级监控可视化系统 Prometheus + Grafana

在这里插入图片描述

警报(Alerting):使用 Prometheus 的 Alertmanager 或 Grafana 的内置告警功能,在指标异常时发送通知(邮件、Slack、钉钉等)。

服务发现:在云环境中(Kubernetes, Consul等),可以配置自动服务发现,无需手动修改配置文件来添加新目标。

认证与安全:为 Grafana 和 Prometheus 界面配置反向代理(Nginx)和 HTTPS。

一、为应用注入监控能力(埋点与暴露)

企业级 Java 项目(通常是 Spring Boot)需要暴露两类指标:JVM/系统级指标和自定义业务指标。

方法一:使用 Spring Boot Actuator + Micrometer(推荐,无需Agent)

①、依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- Micrometer Prometheus 注册表 -->
<dependency><groupId>io.micrometer</groupId><artifactId>micrometer-registry-prometheus</artifactId><version>1.11.5</version> <!-- 使用与你的Spring Boot版本兼容的版本 -->
</dependency>

②、配置应用属性(application.yml)

management:endpoints:web:exposure:include: health, info, prometheus # 关键:暴露prometheus端点metrics:tags:application: ${spring.application.name} # 为所有指标添加一个应用标签,便于区分export:prometheus:enabled: trueendpoint:prometheus:enabled: true
# 指定管理端口的常用方式(可选,避免与业务端口冲突)
server:port: 8080
management:server:port: 8081endpoints:web:base-path: /actuatorexposure:include: "*"

完成后,应用将在 http://<应用IP>:8081/actuator/prometheus 提供 Prometheus 格式的指标。

③、添加自定义指标

使用 Micrometer 的 MeterRegistry 在代码中创建自定义指标,例如统计订单创建数量:

import io.micrometer.core.instrument.Counter;
import io.micrometer.core.instrument.MeterRegistry;
import org.springframework.stereotype.Component;@Component
public class OrderService {private final Counter ordersCreatedCounter;public OrderService(MeterRegistry registry) {ordersCreatedCounter = Counter.builder("orders.created").description("Total number of orders created").tag("application", "order-service") // 添加标签.register(registry);}public void createOrder(Order order) {// 业务逻辑...ordersCreatedCounter.increment(); // 指标计数}
}

方法二:使用 JMX Exporter(适用于传统/无法修改代码的应用)

①、下载jmx_prometheus_javaagent.jar

wget https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.19.0/jmx_prometheus_javaagent-0.19.0.jar

②、创建配置文件 config.yml

lowercaseOutputName: true
lowercaseOutputLabelNames: true
rules:- pattern: '.*'

③、启动应用时添加 Java Agent

修改你的 Tomcat/JVM 启动脚本(如 catalina.sh 或 startup.sh):

JAVA_OPTS="$JAVA_OPTS -javaagent:/path/to/jmx_prometheus_javaagent-0.19.0.jar=9404:/path/to/config.yml"

验证: 使用 curl http://localhost:9404/metrics 或访问对应端点,检查是否能看到类似 jvm_memory_used_bytes 这样的指标。

二、安装与配置 Prometheus

①、下载并解压 Prometheus

wget https://github.com/prometheus/prometheus/releases/download/v2.47.2/prometheus-2.47.2.linux-amd64.tar.gz
tar xvfz prometheus-*.tar.gz
cd prometheus-*/

②、配置 prometheus.yml

修改 scrape_configs 部分,添加你的 Java 应用作为抓取目标

scrape_configs:- job_name: 'prometheus' # 监控自己static_configs:- targets: ['localhost:9090']- job_name: 'java-application' # 给你的Java应用起个名字metrics_path: '/actuator/prometheus' # 如果使用方法一# metrics_path: '/metrics'           # 如果使用方法二static_configs:- targets: ['<你的Java应用服务器IP>:8081'] # 使用方法一,指向management.portlabels:group: 'spring-boot-apps'application: 'user-service-prod'# - targets: ['<另一个应用服务器IP>:9404'] # 可以添加多个实例# 对于企业级多实例,建议使用服务发现(如file_sd_configs),而不是静态配置

③、启动 Prometheus

./prometheus --config.file=prometheus.yml &

④、验证 Targets

访问 http://:9090/targets。确保你的 java-application 状态为 UP

三、安装与配置 Grafana

①、安装并启动 Grafana

# Ubuntu/Debian
sudo apt-get install -y software-properties-common
sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
sudo apt-get update
sudo apt-get install grafana
sudo systemctl start grafana-server
sudo systemctl enable grafana-server

②、登录并添加数据源

访问 http://:3000,默认账号密码 admin/admin。

添加 Data Source -> Prometheus。

URL 填写 http://:9090(确保网络连通)。

Save & Test

四、导入仪表板进行可视化

①、导入 JVM 监控仪表板

这是 Micrometer 官方推荐的仪表板,完美匹配 Spring Boot Actuator 暴露的指标。

在 Grafana 中,点击 Create -> Import。

输入 Dashboard ID: 4701,点击 Load。

选择你的 Prometheus 数据源,点击 Import。

一个详尽的 JVM 监控面板(包括内存、GC、线程、CPU等)就出现了。

②、创建自定义业务指标仪表板

点击 New Dashboard -> Add Visualization。

在 Query 框中,输入你的自定义指标名,例如 orders_created_total。

选择合适的可视化图表(如 Graph, Stat 等)。

设置标题、坐标轴等,保存面板

企业级考量:

服务发现(Service Discovery): 在生产环境中,手动写 IP 地址不可维护。应配置 Prometheus 使用 file_sd_configs, consul_sd_configs, kubernetes_sd_configs 等来自动发现目标。

告警(Alerting): 配置 Prometheus 的 Alertmanager 或 Grafana 告警规则,对 JVM 内存溢出、请求错误率飙升等异常情况设置告警。

高可用(HA): 对于关键业务,考虑 Prometheus 高可用方案或使用 Thanos/Cortex 等长期存储方案。

安全: 使用反向代理(Nginx)为 Grafana 和 Prometheus 配置 HTTPS 和基础认证。

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

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

相关文章

极简风格PDF格式转换解决方案

虽然PDF非常适合于阅读和分享&#xff0c;但有时我们需要对文档做一些调整&#xff0c;如增加注释、高亮重点信息或者填写表单字段。 它的的界面设计简洁&#xff0c;它有强大的格式转换功能&#xff0c;不单单是将PDF转换成word文档或者PDF转换 excel&#xff0c;还能将PDF文…

Linux 把启动脚本制作成系统服务(通过 systemctl start xxx 启动)

描述 正常我们启动某一个应用时&#xff0c;会新建一个sh脚本&#xff0c;每次调用起来和设置开机自启会非常麻烦 所以把这个启动文件制作成系统服务&#xff0c;每次启动只需要输入以下命令就可以启动 systemctl start xxx也可以设置开机自启 systemctl enable xxx接下来我拿R…

AI应用开发中的安全最佳实践详解

AI应用开发中的安全最佳实践详解 随着大语言模型&#xff08;LLM&#xff09;及相关API服务的广泛应用&#xff0c;内容安全成为开发者不可忽视的重要议题。本文将系统梳理在AI应用开发过程中保障安全的技术手段与最佳实践&#xff0c;并结合像 https://api.aaaaapi.com 这样成…

介绍智慧城管十大核心功能之一:风险预警系统

我们的风险预警系统系统包含&#xff1a;排水安全运行预测预警、环卫设施安全运行预测预警、内涝安全运行预测预警、路面塌陷安全运行预测预警、人员密集场所安全运行预测预警及运行统计分析。1. 排水安全运行预测预警1) 排水设施监测 a) 实时数据采集 支持实时采集排水管网的水…

初识Linux · 文件系统

目录 前言&#xff1a; 简单理解文件系统 细节理解 前言&#xff1a; 前文我们介绍了磁盘&#xff0c;介绍磁盘的原因是因为我们需要在理解文件系统之前&#xff0c;通过磁盘的了解&#xff0c;介绍一些文件相关的内容&#xff0c;比如文件是如何在磁盘里面存储的&#xff…

前端数据库 IndexedDB

前端数据库 IndexedDB IndexedDB核心概念解析1. 数据库&#xff08;Database&#xff09;2. 对象存储&#xff08;Object Store&#xff09;3. 索引&#xff08;Index&#xff09;4. 事务&#xff08;Transaction&#xff09;5. 游标&#xff08;Cursor&#xff09; IndexDB的使…

Cesium入门教程(二)环境搭建(HTML版)

一、快速开始&#xff08;无需安装依赖&#xff09; 1. 创建HTML文件 新建一个 .html 文件&#xff08;如 cesium-demo.html&#xff09;&#xff0c;粘贴以下代码&#xff1a; <!DOCTYPE html> <html> <head><title>Cesium Quick Start</title&g…

数据分析学习笔记4:加州房价预测

一、实验概述本实验旨在利用机器学习技术&#xff0c;基于加州房价数据集&#xff08;California Housing Dataset&#xff09;构建一个房价预测模型。实验涵盖了从数据加载、探索性数据分析&#xff08;EDA&#xff09;、数据预处理到模型构建与评估的完整流程。核心任务是利用…

openEuler Embedded 的 Yocto入门 : 2. 构建一个Hello,world!

获取BitBake 官方下载 git clone https://git.yoctoproject.org/poky cd poky/bitbake国内镜像下载&#xff08;推荐&#xff09; git clone https://gitee.com/openeuler/yocto-poky.git -b v3.3.6 cd yocto-poky/bitbake配置BitBake环境 export PATH/path/to/bitbake/bin:$PA…

人工智能物联网(AIoT)的技术逻辑、核心价值与典型应用场景解析

一、AIoT 技术&#xff1a;从 “连接” 到 “智能” 的底层逻辑 在企业数字化转型过程中&#xff0c;“数据” 常被视为核心资产&#xff0c;但如何让海量数据产生实际价值&#xff0c;却成为多数组织的难题。根据 Gartner 2024 年发布的调查数据&#xff0c;87% 的组织商业智…

SpringBoot系列之实现高效批量写入数据

Spring Boot 实现高效批量插入数据的实践指南 在实际开发中&#xff0c;我们经常会遇到需要批量插入大量数据到数据库的场景。如果使用传统的单条插入方式&#xff0c;不仅效率低下&#xff0c;还会给数据库带来巨大压力。本文将介绍如何使用 Spring Boot 实现高效 批量数据插入…

SQL语言基础知识(2)

在学会创建数据库之后&#xff0c;在数据库中需要创建表&#xff08;实体以表的形式存在&#xff09;&#xff0c;以及对表中存储的数据记录进行定义&#xff0c;相当于 Java 语言中对类编写其属性。在定义前我们需要了解 SQL 语言有哪些数据类型。一、数据类型1.1 数据值类型1…

响应式编程框架Reactor【1】

文章目录一、Reactor 框架概述与理论基础1.1 响应式编程&#xff08;Reactive Programming&#xff09;是什么&#xff1f;1.2 Reactive Streams 规范1.3 响应式编程与 Reactor 的诞生1.4 Reactor核心特性1.5 Reactor与其它响应式框架比较二、Reactor核心类型2.1 Reactor 核心概…

【LeetCode】29. 两数相除(Divide Two Integers)

文章目录29. 两数相除&#xff08;Divide Two Integers&#xff09;1. 题目重述与约束解析2. 算法选择与总体设计3. 核心难点与关键技巧4. 解法一&#xff1a;快倍增&#xff08;重复加倍减法&#xff09;4.1 思路4.2 流程图4.3 正确性要点5. 解法二&#xff1a;位移长除法&…

智能物联网(AIoT)核心技术落地路径与企业数字化转型适配方案

一、行业现状&#xff1a;AIoT 落地潜力与企业转型痛点并存根据中国信通院《2023 年中国物联网发展白皮书》数据&#xff0c;截至 2023 年&#xff0c;我国物联网设备连接数已突破 300 亿&#xff0c;庞大的设备基数为企业数字化转型奠定了技术基础。但与之形成鲜明对比的是&am…

前端文件下载的三种方式:URL、二进制与 Base64 的深度解析

前言在 Web 应用开发中&#xff0c;文件下载是一个常见的功能需求。从简单的图片保存到复杂的报表导出&#xff0c;前端开发者需要根据后端返回的数据格式选择合适的处理方式。本文探讨三种主流的文件下载方式 —— 基于 URL、二进制数据和 Base64 编码的实现原理、区别对比及通…

B站 XMCVE Pwn入门课程学习笔记(8)

这个视频讲的比较难&#xff0c;我花了比较长时间来分析&#xff0c;甚至一个点反复很多次&#xff0c;这也是在学PWN的过程中不可避免的&#xff0c;需要坚持和毅力pwn3:没有system&#xff0c;通过ROP调用write的plt入口&#xff0c;执行write函数&#xff0c;并且将gots里的…

AMGCL介绍和使用

文章目录一、AMGCL 简介1.1 什么是 AMG&#xff1f;1.2 AMGCL 特点二、安装与配置2.1 获取源码2.2 编译依赖&#xff08;可选&#xff09;三、基本使用示例3.1 构造稀疏矩阵&#xff08;以 1D Poisson 为例&#xff09;四、核心组件介绍4.1 后端&#xff08;Backend&#xff09…

AI解决生活小事系列——用AI给我的电脑做一次“深度体检”

哈喽&#xff0c;大家好&#xff0c;这里是Ai极客团长&#xff0c;我打算做一个用AI解决生活实际问题的系列专栏。 决定做这个系列的初衷很简单&#xff1a;现在打开手机、电脑&#xff0c;到处都是 "AI 改变世界" 的宏大叙事&#xff0c;但对普通人来说&#xff0c…

JavaWeb 30 天入门:第二十一天 ——AJAX 异步交互技术

在前二十天的学习中&#xff0c;我们掌握了 JavaWeb 开发的核心技术&#xff0c;包括 Servlet、JSP、会话管理、过滤器、监听器、文件操作、数据库交互、连接池、分页与排序等。今天我们将学习一项彻底改变 Web 应用交互方式的技术 ——AJAX&#xff08;Asynchronous JavaScrip…