簡體   English   中英

如何查詢Java中的kubelet指標API?

[英]How to query the kubelet metrics API in Java?

使用 Java 查詢普羅米修斯 kubelet 指標 API 的正確方法是什么,特別是 PVC 使用指標? 我可以看到有一個 API 可以通過自動縮放器獲取一些指標,但是我的集群沒有自動縮放器,所以這會返回一個空列表:

AutoscalingV2beta2Api autoscalingV2beta2Api = new AutoscalingV2beta2Api(apiClient);
var autoscalers = autoscalingV2beta2Api
    .listHorizontalPodAutoscalerForAllNamespaces(null, null, null, null, null, null, null, null, null)
    .getItems();

作為參考,我認為這是我需要獲取的內容: https://stackoverflow.com/a/56870054/18437我不熱衷於使用kubectl -n <namespace> exec <pod-name> df方法,因為那時我需要將 pod 卷掛載回我已經通過 K8s API 獲取的卷聲明列表。

謝謝!

我最終只是使用 Spring 的RestTemplate直接查詢 prometheus。 我只針對開發集群工作,所以我只是利用 Len 安裝的 prometheus,這意味着端點類似於: http://prometheus.lens-metrics:9090

這是他們的查詢,我在下面重復使用: https://github.com/lensapp/lens/blob/652319ac89cd30ace570539cb74be081da24781d/src/main/prometheus/lens.ts#L122

String query = String
    .format(
        "sum(kubelet_volume_stats_used_bytes{persistentvolumeclaim=\"%s\",namespace=\"%s\"}) by (persistentvolumeclaim, namespace)",
        pvc.getMetadata().getName(),
        pvc.getMetadata().getNamespace());

var response = restTemplateBuilder.build().getForEntity(prometheusEndpoint + "/api/v1/query?query={query}", String.class, query);
String json = response.getBody();

// E.g. {"status":"success","data":{"resultType":"vector","result":[{"metric":{"namespace":"luke",
//       "persistentvolumeclaim":"elasticsearch-data-es-ap-southeast-2c-0"},"value":[1622781271.612,"76865536"]}]}}
long bytesUsed = JsonPath.parse(json).read("data.result[0].value[1]", Long.class);

暫無
暫無

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

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