十分鐘教你使用Prometheus監(jiān)控Spring Boot工程
在從零開始:使用Prometheus與Grafana搭建監(jiān)控系統(tǒng)中,主要講解了如何使用Prometheus監(jiān)控系統(tǒng)資源,但是這遠遠不夠,因為最重要的業(yè)務系統(tǒng)相關指標還未監(jiān)控
在這篇分享如何在業(yè)務系統(tǒng)中使用Prometheus來監(jiān)控業(yè)務系統(tǒng)指標,業(yè)務系統(tǒng)使用Spring Boot構建
我們要做什么?
在本示例中我們會使用Prometheus監(jiān)控Spring Boot的各種指標,比如
- ? http平均耗時
- ? 當前 tomcat 連接數(shù)
- ? tomcat 最大連接數(shù)
- ? jvm相關指標
- ? http 請求數(shù)
- ? 系統(tǒng)運行時間
并在Grafana 進行展現(xiàn),效果如下
圖片
關鍵技術介紹
我們會在spring boot 工程中引入micrometer-registry-prometheus、spring-boot-starter-actuator來實現(xiàn)指標的暴露,下面對這兩個組件進行一個介紹
micrometer-registry-prometheus
Micrometer它是Java生態(tài)中一個組件,可以把它理解為metric界的SLF4J。
Micrometer 為 Java 平臺上的性能數(shù)據(jù)收集提供了一個通用的 API,它提供了多種度量指標類型(Timers、Guauges、Counters等),同時支持接入不同的監(jiān)控系統(tǒng),例如 Influxdb、Graphite、Prometheus 等。這里我們使用micrometer-registry-prometheus針對prometheus的實現(xiàn)。
spring-boot-starter-actuator
Spring Boot Actuator是Spring Boot提供用于對應用系統(tǒng)進行自省和監(jiān)控的功能模塊,基于此開發(fā)人員可以方便地對應用系統(tǒng)某些監(jiān)控指標進行查看、統(tǒng)計、審計、指標收集等。Actuator提供了基于Http端點或JMX來管理和監(jiān)視應用程序。
系統(tǒng)配置
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,開啟監(jiān)控的端點,這里我們的系統(tǒng)名稱為 backend
#監(jiān)控的端點
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文件中進行配置業(yè)務系統(tǒng)采集點,5s 拉取一次指標,由于Prometheus server 部署在docker 中,所以訪問主機IP 用host.docker.internal
#業(yè)務系統(tǒng)監(jiān)控
- 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 導入,關聯(lián)Prometheus數(shù)據(jù)源
圖片
這會還看不到數(shù)據(jù),因為Prometheus沒啟動,配置未生效
驗證
Prometheus驗證
啟動Prometheus,并訪問9093端口,查看是否能查詢到業(yè)務系統(tǒng)指標,比如jvm_memory_used_bytes
圖片
Grafana 驗證
訪問我們導入的大屏,可以看到已收集到相關數(shù)據(jù),包括系統(tǒng)啟動時間、運行時間、tomcat 連接池信息、JVM相關信息等
圖片
總結
以上我們介紹了如何使用Prometheus來監(jiān)控Spring Boot工程相關指標并使用Grafana 進行展現(xiàn),下一篇我們會將如何在Spring Boot自定義業(yè)務指標,并對關鍵指標進行監(jiān)控和告警。