# springboot-prometheus **Repository Path**: one_of_two/springboot-prometheus ## Basic Information - **Project Name**: springboot-prometheus - **Description**: springboot2.x自定义监控 Prometheus+grafana - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 0 - **Created**: 2022-08-11 - **Last Updated**: 2025-04-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 使用prometheus和grafana打造监控平台 | 版本 | 说明 | |----|----| |1.0|添加一般请求自动监控和数据源自动监控,配置json展示视图| |2.0|更新接入方式:解耦项目,只需要maven引入prometheus-custom jar并配置好配置文件即可| **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)** **如何编写属于你自己的查询条件展示结果参考此连接:[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架构设计 ![image](https://user-images.githubusercontent.com/13011928/184062272-1fcba612-bf98-405a-bf36-9c8b4264fddf.png) 以上为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)