通過在應用中埋點來暴露JVM數(shù)據(jù),使用阿里云Prometheus采集JVM數(shù)據(jù),借助Prometheus Grafana大盤來展示JVM數(shù)據(jù),并創(chuàng)建報警,即可實現(xiàn)利用阿里云Prometheus監(jiān)控JVM的目的。本文以阿里云容器服務K8s集群和阿里云容器鏡像服務為例,介紹如何通過阿里云Prometheus監(jiān)控JVM。
前提條件
- 阿里云容器服務K8s集群已接入可觀測監(jiān)控 Prometheus 版。如何接入,請參見Prometheus實例 for 容器服務。
- 已創(chuàng)建阿里云容器鏡像服務鏡像倉庫。如何創(chuàng)建,請參見步驟二:創(chuàng)建鏡像倉庫。
Demo
如需快速體驗如何通過阿里云Prometheus監(jiān)控JVM,您可以使用已埋點的Demo項目。
操作流程
通過阿里云Prometheus監(jiān)控JVM的操作流程如下圖所示。
步驟一:為應用埋點
為應用埋點以暴露JVM數(shù)據(jù)的操作步驟如下:
- 在pom.xml文件中添加Maven依賴。
<dependency> <groupId>io.prometheus</groupId> <artifactId>simpleclient_hotspot</artifactId> <version>0.6.0</version> </dependency>
- 在應用代碼中添加初始化JVM Exporter的方法。
@PostConstruct public void initJvmExporter() { io.prometheus.client.hotspot.DefaultExports.initialize(); }
您可以參考Demo項目的/src/main/java/com/monitise/prometheus_demo/DemoController.java文件。
- 在application.properties文件中配置用于可觀測監(jiān)控 Prometheus 版的端口和路徑。
management.port: 8081 endpoints.prometheus.path: prometheus-metrics
您可以參考Demo項目的/src/main/resources/application.properties文件。
- 在應用代碼中添加打開HTTP端口的方法。
@SpringBootApplication // sets up the prometheus endpoint /prometheus-metrics @EnablePrometheusEndpoint // exports the data at /metrics at a prometheus endpoint @EnableSpringBootMetricsCollector public class PrometheusDemoApplication { public static void main(String[] args) { SpringApplication.run(PrometheusDemoApplication.class, args); } }
您可以參考Demo項目的/src/main/java/com/monitise/prometheus_demo/PrometheusDemoApplication.java文件。
步驟二:上傳應用
將完成埋點的應用制作成鏡像并上傳至阿里云容器鏡像服務的鏡像倉庫的操作步驟如下:
- 執(zhí)行以下命令重新編譯模塊。
mvn clean install -DskipTests
- 執(zhí)行以下命令構建鏡像。
docker build -t <本地臨時Docker鏡像名稱>:<本地臨時Docker鏡像版本號> . --no-cache
示例命令:docker build -t promethues-demo:v0 . --no-cache
- 執(zhí)行以下命令為鏡像打標。
sudo docker tag <本地臨時Docker鏡像名稱>:<本地臨時Docker鏡像版本號> <Registry域名>/<命名空間>/<鏡像名稱>:<鏡像版本號>
示例命令:sudo docker tag promethues-demo:v0 registry.cn-hangzhou.aliyuncs.com/testnamespace/promethues-demo:v0
- 執(zhí)行以下命令將鏡像推送至鏡像倉庫。
sudo docker push <Registry域名>/<命名空間>/<鏡像名稱>:<鏡像版本號>
示例命令:sudo docker push registry.cn-hangzhou.aliyuncs.com/testnamespace/promethues-demo:v0
容器鏡像服務控制臺的鏡像版本頁面顯示上傳的應用鏡像。
步驟三:部署應用
將應用部署至容器服務K8s集群的操作步驟如下:
- 登錄容器服務管理控制臺。
- 在左側(cè)導航欄,選擇集群。
- 在集群列表頁面,找到目標集群,在其右側(cè)操作列單擊應用管理。
- 創(chuàng)建容器組。無狀態(tài)頁面顯示創(chuàng)建的容器組。
- 創(chuàng)建服務。服務頁面顯示創(chuàng)建的服務。
步驟四:配置服務發(fā)現(xiàn)
通過ServiceMonitor配置可觀測監(jiān)控 Prometheus 版的服務發(fā)現(xiàn)以采集JVM數(shù)據(jù)。具體操作,請參見通過ServiceMonitor創(chuàng)建服務發(fā)現(xiàn)。