【发布时间】:2017-03-12 17:28:41
【问题描述】:
我用诸如版本和出现故障时联系谁等内容来注释我的 Kubernetes 对象。知道这些注释值会经常更改,我如何将这些信息传递给 Prometheus?我无法在 Prometheus 标签中捕获此信息,因为它们充当目标的主键(例如,如果版本更改,它完全是一个新目标,我不想要)。谢谢!
【问题讨论】:
标签: kubernetes prometheus
我用诸如版本和出现故障时联系谁等内容来注释我的 Kubernetes 对象。知道这些注释值会经常更改,我如何将这些信息传递给 Prometheus?我无法在 Prometheus 标签中捕获此信息,因为它们充当目标的主键(例如,如果版本更改,它完全是一个新目标,我不想要)。谢谢!
【问题讨论】:
标签: kubernetes prometheus
我刚刚写了一篇关于这个确切主题的博客文章! https://www.weave.works/aggregating-pod-resource-cpu-memory-usage-arbitrary-labels-prometheus/
诀窍是 Kubelet/cAdvisor 不会直接公开它们,所以我运行了一个小型导出器,它会使用 PromQL 中的 pod 名称加入它。出口商是:https://github.com/tomwilkie/kube-api-exporter
你可以像这样在 Prometheus 中加入:
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"}
)
这里我使用了一个名为“名称”的标签,但它可以是任何标签。
我们使用相同的技巧按版本获取指标(例如错误率),然后我们用它来驱动我们的持续部署系统。 kube-api-exporter 将一堆关于 Kubernetes 对象的有用元信息导出到 Prometheus。
希望这会有所帮助!
【讨论】: