簡體   English   中英

使用 cAdvisor 和 Prometheus 監控未命名的容器

[英]Monitoring unnamed containers with cAdvisor and Prometheus

我有一個運行 Docker 容器化應用程序的實驗主機。 cAdvisor 和 Prometheus 容器也在運行。

該應用程序生成容器以運行與一組命名空間(可能是數千個命名空間)之一相關的作業,並使用 uuid 命名容器。 cAdvisor 選擇了這些 OK,我可以看到每個容器在 prometheus OK 中的指標使用情況。 這些容器的運行時間從幾秒鍾到大約一個小時不等。

我需要能夠將命名空間 ID(來自容器中的 API 調用)與 prometheus 中的指標相關聯,因為容器名稱對於運行來說是唯一的,我需要通過命名空間 ID 來確定。

該文檔說不要使用大量不同的標簽,因為它會生成大量單獨的時間序列,但添加 kv 似乎是最方便的方法。

該文檔說將 pushgateway 用於服務級批處理作業,並且由於我的容器與命名空間相關而不是與整個服務相關,因此使用它似乎不正確。

我每天可能有 5-10 個容器,它們在不同的容器名稱下運行,這些容器名稱對應於應用程序中的相同命名空間,我需要所有 5-10 個的時間序列。

進行這種相關性的最佳方法是什么?
如何從容器內部向普羅米修斯發送一些任意數據?

如果您需要通過某些特征來區分一組相同的指標,那么除了使用標簽之外,沒有其他合理的方法。 當標簽過多或標簽值過多時,就會出現標簽和存儲問題。 請允許我向您展示此示例中的問題:

http_requests{code="200",client="8.8.8.8",uri="/hello"}

只有三個標簽,但每個標簽都可以產生大量不同的時間序列。 每個響應代碼、客戶端地址和訪問的 URL 的每個唯一組合。 我想,您的命名空間 ID 具有有限且少量的可能值,因此不會造成任何傷害。 唯一的容器名稱( cAdvisor將它們公開為標簽)甚至可能比命名空間 ID 具有更大的影響。

還有一種方法可以使用relabel_config重寫、添加或刪除標簽。 但是,如果您決定重寫,該解決方案有點難以掌握並且很容易在腿上射擊。 如果可能的命名空間數量很少,我建議繼續添加新標簽。

暫無
暫無

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

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