亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何從 SpringBoot 應用程序發出自定義指標并在 PCF Autoscaler 中使用它

如何從 SpringBoot 應用程序發出自定義指標并在 PCF Autoscaler 中使用它

青春有我 2023-03-31 15:36:20
我按照這個示例發出自定義指標,并按照這些詳細信息在 PCF 中注冊指標。這是代碼:@RestControllerpublic class CustomMetricsController {    @Autowired    private MeterRegistry registry;         @GetMapping("/high_latency")    public ResponseEntity<Integer> highLatency() throws InterruptedException {        int queueLength=0;        Random random = new Random();        int number = random.nextInt(50);        System.out.println("Generate number is : "+number);        if(number % 2 == 0) {            queueLength=99;        } else {            queueLength=200;        }        return new ResponseEntity<>(queueLength, null, HttpStatus.OK);    }}應用程序.yml:management:  endpoints:    web:      exposure:        include: "metrics,prometheus"  endpoint:    metrics:      enabled: true    prometheus:      enabled: true安全配置類:build.gradle 依賴部分:在將應用程序部署到 PCF 后,我按照以下步驟注冊自定義指標:安裝metric-registrar在我的本地機器上發出一些整數的注冊端點(我將其用于自動縮放器規則) cf register-metrics-endpoint api high_latency 在此步驟之后,我可以看到一個自定義用戶提供的服務與我在 PCF 中的應用程序綁定在我的本地安裝log-cache插件以驗證指標端點,這是日志最后,我在 Autoscaler 中為自定義指標添加了規則。這是我在 Autoscaler 事件歷史記錄中遇到的錯誤。事件歷史最近:2019 年 7 月 17 日,星期三,上午 11:20,Autoscaler 在擴展窗口期間沒有收到任何 high_latency 指標。在這些指標可用之前,將推遲縮減規模。
查看完整描述

1 回答

?
慕田峪4524236

TA貢獻1875條經驗 獲得超5個贊

我看著這個很大。這里有幾件事...


我相信您的注冊命令是錯誤的,至少對于您引用的示例應用程序而言是這樣。


您正在使用cf register-metrics-endpoint api high_latency,這意味著您有一個名為的應用程序api和該應用程序上的一個端點,high_latency該端點使用 Prometheus 格式導出指標。對于這個示例應用程序,路徑應該是/actuator/prometheus,根據自述文件和我的簡短測試。


當我使用命令時cf register-metrics-endpoint app-name /actuator/prometheus,我能夠在輸出中看到自定義指標cf tail,但在包含的輸出中看不到它們。


例如:(未顯示在您的屏幕截圖中)


2019-07-17T22:54:37.83-0400 [custom-metrics-demo/0] GAUGE tomcat_global_request_max_seconds:2.006000

2019-07-17T22:54:37.83-0400 [custom-metrics-demo/0] GAUGE system_cpu_count:4.000000

2019-07-17T22:54:37.83-0400 [custom-metrics-demo/0] COUNTER tomcat_sessions_created_sessions_total:12

2019-07-17T22:54:37.83-0400 [custom-metrics-demo/0] COUNTER custom_metric_total:15

2019-07-17T22:54:37.83-0400 [custom-metrics-demo/0] GAUGE jvm_gc_pause_seconds_sum:0.138000

2019-07-17T22:54:37.83-0400 [custom-metrics-demo/0] COUNTER jvm_gc_pause_seconds_count:25

在引用的示例應用程序中,沒有名為 的指標high_latency,因此它不能用作您的指標名稱,因為它永遠不會由應用程序生成。/actuator/prometheus如果您在瀏覽器中訪問端點,則可以看到所有指標。Prometheus 格式是基于文本的,非常容易閱讀。


最后一個很棘手,沒有記錄,但我可以在 Autoscaler 的代碼中看到它(在撰寫本文時)。當 Autoscaler 從 LogCache 輪詢指標時,它只提取 GAUGE 和 TIMER 事件,而不是 COUNTER 事件。如果您嘗試使用custom_metric演示應用程序,那將無法正常工作,因為它是一個 COUNTER 指標。您只會看到有關 Autoscaler 在縮放窗口期間看不到任何指標事件的消息。確保您選擇的是用于縮放的 GAUGE 指標。


Autoscaler 似乎也不支持使用帶有關聯標簽的指標。例如,如果您想使用tomcat_servlet_request_seconds_sum{name="dispatcherServlet",},我認為沒有辦法告訴 Autoscaler 標簽name必須是某個值。該信息在 LogCache 中,但我認為 Autoscaler 目前不會使用它。在我寫這篇文章的時候,我快速瀏覽了一下代碼,似乎表明它只是在查看指標名稱。如果您要創建自定義指標,這無關緊要。只是不要為指標使用任何標簽。


查看完整回答
反對 回復 2023-03-31
  • 1 回答
  • 0 關注
  • 126 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號