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

企业级监控可视化系统 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.xdnf.cn/news/18662.html

相关文章:

  • LoRA(低秩适应,Low-Rank Adaptation)的 alpha 参数解析(54)
  • 雷卯针对香橙派Orange 4G-IOT开发板防雷防静电方案
  • kafka 原理详解
  • 【OpenAI】ChatGPT-4o-latest 真正的多模态、长文本模型的详细介绍+API的使用教程!
  • 深入理解 Python Scapy 库:网络安全与协议分析的瑞士军刀
  • ES6/ES2015 - ES16/ES2025
  • 在压力测试中如何确定合适的并发用户数?
  • 挖币与区块链技术有怎样的联系?
  • 基于 Prometheus+Alertmanager+Grafana 打造监控报警后台(一)-Prometheus介绍及安装
  • DMP-Net:面向脑组织术中成像的深度语义先验压缩光谱重建方法|文献速递-深度学习人工智能医疗图像
  • PyTorch实战(1)——深度学习概述
  • 阿里:基于设计逻辑的LLM数据合成
  • crc16是什么算法
  • C++ 指针与引用面试深度解析
  • STM32项目分享:基于STM32的智能洗衣机
  • 开源大模型天花板?DeepSeek-V3 6710亿参数MoE架构深度拆解
  • 微软恶意软件删除工具:官方免费的系统安全防护利器
  • 网络编程1-基本概念、函数接口
  • 2.1.5 数学与其他
  • VUE 的弹出框实现图片预览和视频预览
  • C++数据结构之二叉搜索树
  • AEB 强制来临,东软睿驰Next-Cube-Lite有望成为汽车安全普惠“破局器”
  • macbook国内源安装rust
  • 【AGI使用教程】GPT-OSS 本地部署(2)
  • 【AMBA总线互联IP】
  • 自然语言处理——07 BERT、ELMO、GTP系列模型
  • python文件import找不到其它目录的库解决方案
  • Python爬虫第四课:selenium自动化
  • 【云馨AI-大模型】AI热潮持续升温:2025年8月第三周全球动态
  • MySQL数据库精研之旅第十一期:打造高效联合查询的实战宝典(二)