說到 Prometheus 不得提到監控,Prometheus能幫助我們指標數據採集、指標數據儲存、指標分析與視覺化、告警等,它又可以針對系統的某些組件行監控
Promethues 架構如下
PromQL:允許進行多種操作,包括 aggregation, slicing and dicing, prediction and joins
其元件包括以下
Prometheus 支持三種類型的抓取(scraping)
在 Spring boot 中 Actuator 可以導出正在運行的應用程式的一些訊息像是健康、指標、訊息等。它使用 HTTP 端點或 JMX bean 使我們能夠與其交互。我們可以如下配置
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
最後這些收集的指標我們可以透過 push gateway 方式將數據丟至 prometheus 上,在藉由 grafana 進行呈現,我們在 Spring boot 中可以引入以下兩個框架實現。
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
<dependency>
<groupId>io.prometheus</groupId>
<artifactId>simpleclient_pushgateway</artifactId>
</dependency>
最後在環境配置上我們可以如下配置,即可完成使用 prometheus 進行監控。明天將會帶實驗來模擬,並會針對 prometheus 配置進行一些說明
management.endpoints.web.exposure.include=prometheus # 可暴露的端點
management.metrics.export.prometheus=true
management.metrics.export.prometheus.pushgateway.base-url=${PUSHGATEWAYS_URI} # 推送 pushgateway,promethues 在 pull
management.metrics.export.prometheus.pushgateway.enabled=true
management.metrics.export.prometheus.pushgateway.push-rate=1m
management.metrics.export.prometheus.pushgateway.shutdown-operation=push