当前位置: 首页 > news >正文

企业级监控可视化系统 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.dtcms.com/a/350081.html

相关文章:

  • 检索模型与RAG
  • 【Day 13】189.轮转数组
  • 项目文章|MeRIP-seq助力解析m6A RNA甲基化与康乃馨花衰老的调控机制
  • Day8--HOT100--160. 相交链表,206. 反转链表,234. 回文链表,876. 链表的中间结点
  • 30.throw抛异常
  • 项目前后端分离部署
  • LVM基本操作
  • LeetCode100-189轮转数组
  • 20.15 Hugging Face Whisper-large-v2中文微调实战:LoRA+混合精度单卡训练指南,3倍效率省90%显存
  • 正则表达式学习(基础)
  • AUTOSAR进阶图解==>AUTOSAR_RS_Features
  • 电脑隐私安全防护|快速清理Windows系统/浏览器/应用数据,支持文件粉碎与磁盘级擦除!
  • 从MyJUnit反思Java项目的工程实践(版本控制篇)
  • 数据库迁移幂等性介绍(Idempotence)(Flyway、Liquibase)ALTER、ON DUPLICATE
  • RabbitMQ面试精讲 Day 30:RabbitMQ面试真题解析与答题技巧
  • 深入解析MyBatis Mapper接口工作原理
  • Ubuntu24.04配置yolov5
  • 封装的form表单,校验规则(rules)只在提交时触发,为空时点击提交触发,再次输入内容也不显示校验规则(rules)
  • 机器学习】(12) --随机森林
  • Day27 进程管理(PCB、状态、调度、原语与资源管理)
  • pikachu之Over permission
  • 基于SpringBoot的宠物领养系统的设计与实现(代码+数据库+LW)
  • QML中的Connections
  • Vue 3 defineOptions 完全指南:让组件选项声明更现代化
  • vb6编绎COM DLL(ACTIVEX对象)时兼容性设置
  • bisheng 后端初始化数据(main.py > init_data.py)
  • 25072班8.25日 数据结构作业
  • 04-Maven工具介绍
  • kafka 副本集设置和理解
  • 《Spring Boot 进阶:从零到一打造自定义 @Transactional》 ——支持多数据源、动态传播行为、可插拔回滚策略