From e1769af9d5f78cd3f35f6a969ef169fc0cb6621b Mon Sep 17 00:00:00 2001 From: gitee-bot Date: Tue, 24 Jun 2025 09:14:31 +0000 Subject: [PATCH] Update README.md --- README.md | 60 +++++++++++++++++++++++++++++-------------------------- 1 file changed, 32 insertions(+), 28 deletions(-) diff --git a/README.md b/README.md index c31967a..6fd6539 100644 --- a/README.md +++ b/README.md @@ -1,37 +1,41 @@ -# 使用prometheus和grafana打造监控平台 +# 使用 Prometheus 和 Grafana 打造监控平台 -| 版本 | 说明 | -|----|----| -|1.0|添加一般请求自动监控和数据源自动监控,配置json展示视图| -|2.0|更新接入方式:解耦项目,只需要maven引入prometheus-custom jar并配置好配置文件即可| +本项目旨在通过 Prometheus 和 Grafana 构建一个完整的监控平台,用于监控 Spring Boot 应用程序的运行状态和性能指标。 +## 项目结构 -**springboot+prometheus+grafana,详细文档查看[使用prometheus和grafana打造监控平台.docx](https://gitee.com/one_of_two/springboot-prometheus/raw/main/doc/%E4%BD%BF%E7%94%A8prometheus%E5%92%8Cgrafana%E6%89%93%E9%80%A0%E7%9B%91%E6%8E%A7%E5%B9%B3%E5%8F%B0.docx)** +- **prometheus-custom-druid**: 提供对 Druid 数据源的监控支持。 +- **prometheus-custom**: 提供通用的监控组件,包括 AOP 切面、自定义注解、Micrometer 配置等。 +- **prometheus-demo**: 示例 Spring Boot 应用程序,展示如何集成和使用监控功能。 -**如何编写属于你自己的查询条件展示结果参考此连接:[PromQL查询说明文档](https://prometheus.fuckcloudnative.io/di-san-zhang-prometheus/di-4-jie-cha-xun/basics)** +## 主要功能 -简介: prometheus是由SoundCloud开源的CNCF旗下的监控系统,是Google BorgMon监控系统的开源版本,提供了完善的监控和告警功能. prometheus自身并不提供所有的监控和告警功能,而是通过prometheus生态中的其他组件搭配共同完成,因为架构设计上的扩展性,目前prometheus能够支持基础资源资源、应用程序监控、中间件监控等众多场景,并且对于传统应用和设备也具备比较好的兼容性,正逐步成为容器监控的标准,在云原生的时代背景下更是首选。 -prometheus是由SoundCloud开源的CNCF旗下的监控系统,是Google BorgMon监控系统的开源版本,提供了完善的监控和告警功能. -prometheus自身并不提供所有的监控和告警功能,而是通过prometheus生态中的其他组件搭配共同完成,因为架构设计上的扩展性,目前prometheus能够支持基础资源资源、应用程序监控、中间件监控等众多场景,并且对于传统应用和设备也具备比较好的兼容性,正逐步成为容器监控的标准,在云原生的时代背景下更是首选。 -## prometheus的优点 -1.提供多维度的数据模型和灵活的查询方式,监控数据可以任意组合,提供PromQL和HTTP查询接口. -2.支持本地存储和第三方存储,例如OpenTSDB -3.定义开放数据指标标准,Pull为主+Push相结合的采集方式,应对多数场景 -4.支持通过静态文件配置和动态发现机制发现监控对象,自动完成数据采集,Prometheus目前已经支持Kubernetes、etcd、Consul等多种服务发现机制 -5.支持容器部署,支持云原生 -6.支持联邦部署,支持大规模集群监控 -7.大量的exporter组件可以开箱即用,减少工作量 -prometheus架构设计 +- **Druid 数据源监控**: 通过 `DruidCollector` 和 `DruidMetricsConfiguration` 实现对 Druid 数据源的指标收集。 +- **AOP 监控**: 使用 `ControllerMetricsAspect` 和 `TimedCountAspect` 对控制器方法进行监控。 +- **自定义注解**: `@TimedCount` 注解用于标记需要监控的方法。 +- **Micrometer 集成**: 通过 `MicrometerConfig` 和 `MeterRegisterComponent` 提供 Micrometer 支持。 +- **示例应用**: 提供了一个 Spring Boot 应用程序示例,展示如何集成和使用监控功能。 -![image](https://user-images.githubusercontent.com/13011928/184062272-1fcba612-bf98-405a-bf36-9c8b4264fddf.png) +## 安装与配置 +1. **依赖管理**: 确保项目中的 `pom.xml` 文件包含必要的依赖项,如 Prometheus 客户端库、Micrometer、Druid 等。 +2. **配置文件**: 在 `application.yml` 中配置监控相关的参数,如启用或禁用特定监控功能。 +3. **构建与部署**: 使用 Maven 构建项目,并将生成的 JAR 文件部署到目标环境中。 -以上为prometheus架构图,可以看到,prometheus  server是核心组件,它定时地从目标对象上pull  metrics,对于一些短周期的任务,允许将数据推送到Pushgateway,prometheus  server从Pushgateway上抓取数据指标. -数据存储支持本地存储和远端存储,目前远端存储支持OpenTSDB、InfluxDB和Elasticsearch等. -对于拉取数据指标的对象,可以有两种方式进行配置,一种是通过配置文件进行静态配置,另一种是支持ZooKeeper、Consul、Kubernetes等方式进行动态发现。 -AlertManager  是独立于 Prometheus 的一个组件,在触发了预先设置在Prometheus 中的高级规则后,Prometheus 便会推送告警信息到  AlertManager,由AlertManager发送邮件、钉钉等告警信息.AlertManager支持高可用部署,为了解决多个AlertManager重复告警的问题,引入了Gossip,在多个AlertManager之间通过Gossip同步告警信息。 -特别注意,prometheus架构数据采集选择pull的模式有一些明显的好处,一是主动拉取,不会类似推的模式一样容易造成被采集应用程序因为推送数据指标失败等情况而造成对应用程序本身的影响,二是更加灵活和容易扩展,只要提供的http接口符合prometheus定义的数据格式即可. -可以看到prometheus的设计保障了其灵活性,不管是中间件、网络还是应用服务,只要编写提供metrics的符合规范的接口以供prometheus   pull相关的数据即可实现灵活的监控,特别是关于应用服务的业务指标监控,只要编写切面统一收集数据或者埋点,就可以实现细粒度的监控,例如springboot应用集成prometheus实现JVM监控、业务指标监控,都是非常简单的事情。 -另外,目前市场上存在大量的开箱即用的exporter组件,例如用于系统资源资源的node_exporter、用于mysql监控的mysqld_exporter、用于redis监控的redis_exporter等等。 +## 使用示例 -![输入图片说明](doc/screencapture-192-168-48-100-3000-d-UOJjh1SMzdd-springboot-jvmjian-kong-2022-08-12-15_49_44.png) +- **Druid 监控**: 在 Spring Boot 应用中集成 `DruidMetricsConfiguration`,自动收集 Druid 数据源的指标。 +- **控制器监控**: 使用 `@TimedCount` 注解对控制器方法进行监控,并通过 `ControllerMetricsAspect` 收集指标。 +- **自定义指标**: 通过 `MeterRegisterComponent` 注册自定义指标,如计数器、定时器等。 + +## 贡献指南 + +欢迎贡献代码和文档。请遵循以下步骤: + +1. Fork 本仓库。 +2. 创建新分支并提交更改。 +3. 提交 Pull Request 并描述更改内容。 + +## 许可证 + +本项目采用 MIT 许可证。详情请查看 LICENSE 文件。 \ No newline at end of file -- Gitee