十分鐘教你使用Prometheus監控Spring Boot工程
在從零開始:使用Prometheus與Grafana搭建監控系統中,主要講解了如何使用Prometheus監控系統資源,但是這遠遠不夠,因為最重要的業務系統相關指標還未監控
在這篇分享如何在業務系統中使用Prometheus來監控業務系統指標,業務系統使用Spring Boot構建
我們要做什么?
在本示例中我們會使用Prometheus監控Spring Boot的各種指標,比如
- ? http平均耗時
- ? 當前 tomcat 連接數
- ? tomcat 最大連接數
- ? jvm相關指標
- ? http 請求數
- ? 系統運行時間
并在Grafana 進行展現,效果如下
圖片
關鍵技術介紹
我們會在spring boot 工程中引入micrometer-registry-prometheus、spring-boot-starter-actuator來實現指標的暴露,下面對這兩個組件進行一個介紹
micrometer-registry-prometheus
Micrometer它是Java生態中一個組件,可以把它理解為metric界的SLF4J。
Micrometer 為 Java 平臺上的性能數據收集提供了一個通用的 API,它提供了多種度量指標類型(Timers、Guauges、Counters等),同時支持接入不同的監控系統,例如 Influxdb、Graphite、Prometheus 等。這里我們使用micrometer-registry-prometheus針對prometheus的實現。
spring-boot-starter-actuator
Spring Boot Actuator是Spring Boot提供用于對應用系統進行自省和監控的功能模塊,基于此開發人員可以方便地對應用系統某些監控指標進行查看、統計、審計、指標收集等。Actuator提供了基于Http端點或JMX來管理和監視應用程序。
系統配置
Spring Boot 工程配置
- 1. 添加 maven 依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
- 1. 在application.properties,開啟監控的端點,這里我們的系統名稱為 backend
#監控的端點
management.endpoints.web.exposure.include=*
#應用程序名稱,在prometheus 上會顯示
management.metrics.tags.application=${spring.application.name}
#tomcat 指標需要開啟
server.tomcat.mbeanregistry.enabled=true
- 1. 啟動服務查看,訪問actuator/prometheus接口,是否能獲取相關指標
圖片
Prometheus 配置
- 1. 在prometheus.yml文件中進行配置業務系統采集點,5s 拉取一次指標,由于Prometheus server 部署在docker 中,所以訪問主機IP 用host.docker.internal
#業務系統監控
- job_name: 'SpringBoot'
# Override the global default and
scrape_interval: 5s
metrics_path: '/actuator/prometheus'
static_configs:
- targets: ['host.docker.internal:8080']
圖片
Grafana 配置
訪問https://grafana.com/grafana/dashboards/4701-jvm-micrometer/,并下載
圖片
并在Grafana 導入,關聯Prometheus數據源
圖片
這會還看不到數據,因為Prometheus沒啟動,配置未生效
驗證
Prometheus驗證
啟動Prometheus,并訪問9093端口,查看是否能查詢到業務系統指標,比如jvm_memory_used_bytes
圖片
Grafana 驗證
訪問我們導入的大屏,可以看到已收集到相關數據,包括系統啟動時間、運行時間、tomcat 連接池信息、JVM相關信息等
圖片
總結
以上我們介紹了如何使用Prometheus來監控Spring Boot工程相關指標并使用Grafana 進行展現,下一篇我們會將如何在Spring Boot自定義業務指標,并對關鍵指標進行監控和告警。