簡體   English   中英

使用千分尺發布 Spring 批量指標

[英]Publishing Spring Batch metrics using Micrometer

I have an app that contains 2 dozen of spring batch cron jobs.There is no rest controller as it is an analytics app and it runs daily and read data from db, process it, and then store aggregated data in another db.I want to在使用千分尺的作業上有 spring 內置指標並將它們推送到 Prometheus。由於我的應用程序不是網絡服務器應用程序,所以千分尺仍然會在 HOST:8080 上發布結果嗎? 執行器會自動在 HOST:8080 上啟動新服務器嗎?還是我們需要在 8080 上運行應用程序服務器?

我的理解是執行器和應用程序服務器可以運行不同的端口,因為它們是不同的進程?即使應用程序服務器存在與否,執行器應該能夠使用與應用程序服務器端口相同的端口,還是可以使用不同的端口?

因此,如果我的應用程序不是基於網絡服務器的應用程序,我仍然可以在 localhost:8080/actuator/ 訪問指標並發布到 Prometheus?

Prometheus 是一個基於拉取的系統,這意味着你從正在運行的應用程序中給它一個 URL,它會 go 從中拉取指標。 如果您的應用程序是臨時批處理應用程序,那么僅僅為了在短時間內公開 URL 而將其設為 webapp 是沒有意義的。 這正是 Prometheus 人員創建推送網關的原因,請參閱何時使用推送網關

現在請記住,為了讓您的批處理應用程序將指標發送到 Prometheus,您需要:

  • 普羅米修斯服務器
  • Pushgateway 服務器
  • 一個可選的指標儀表板(Grafana 或類似的,Prometheus 也提供了一個內置的 UI)
  • 讓您的批處理應用程序將指標推送到網關

可以在使用 Micrometer 的批處理指標中找到有關此設置的完整示例。 此示例實際上與您的用例相似。 它顯示了兩個計划每隔幾秒運行一次的作業,它們將指標存儲在 Micrometer 的主注冊表中,以及一個后台任務,該任務定期將指標從 Micrometer 的注冊表推送到 Prometheus 的網關。

另一種選擇是使用 RSocket 協議,如果您使用Spring Cloud Dataflow ,該協議是免費提供的。

對於 Spring Boot,沒有 Spring Batch 的執行器端點,請參閱 Spring Batch 的執行器端點以了解有關此決定的原因的更多詳細信息。

@Mahmoud 我認為有一些有效的用例可以選擇性地公開健康端點。 要考慮的第一個問題是,當我們說批處理操作運行時間很短時,該時間有多短——幾分鍾? 我同意沒有必要; 但是運行幾個小時的作業呢? 對於某些作業,我們獲得指標很重要,尤其是當此類作業受業務 SLA 約束並且操作員需要知道作業是否以每秒所需的操作進行處理時,是否具有正確的連接池大小等。

還有各種運行平台的實現細節——我們可以使用沒有 SCDF 的 Spring Batch,不受 Prometheus 網關控制以能夠使用推送,在 Istio 將自動拉取指標的雲中運行等。

對於 OPs 問題,通常可以在 web 實例中運行 spring 批處理作業,並在作業完成通知后使用關閉端點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM