我用版本之类的东西注释我的Kubernetes对象,并在出现故障时与谁联系。如何知道这些注释值会经常变化,我将如何将此信息传递给普罗米修斯?我无法在Prometheus标签中捕获这些信息,因为它们是目标的主键(例如,如果版本发生变化,它完全是一个新目标,我不想要)。谢谢!
答案 0 :(得分:3)
我刚写了一篇关于这个话题的博文! https://www.weave.works/aggregating-pod-resource-cpu-memory-usage-arbitrary-labels-prometheus/
技巧是Kubelet / cAdvisor没有直接公开它们,所以我运行了一个小的导出器,并将其与PromQL中的pod名称连接起来。出口商是:https://github.com/tomwilkie/kube-api-exporter
你可以像这样加入普罗米修斯:
sum by (namespace, name) (
sum(rate(container_cpu_usage_seconds_total{image!=""}[5m])) by (pod_name, namespace)
* on (pod_name) group_left(name)
k8s_pod_labels{job="monitoring/kube-api-exporter"}
)
这里我使用的是名为“name”的标签,但它可以是任何标签。
我们使用相同的技巧来获取版本的度量标准(例如错误率),然后我们使用它来驱动我们的持续部署系统。 kube-api-exporter向普罗米修斯输出了一堆关于Kubernetes对象的有用元信息。
希望这有帮助!