kubernetes - kube cronjobs 的 Prometheus 多对多问题
问题描述
嘿那里,
我正在尝试使用 Prometheus 配置 Kubernetes Cronjobs 监控和警报。我发现这个有用的指南
但是我总是得到一个不允许的多对多匹配:匹配标签必须在一侧是唯一的错误。
例如,这是触发此错误的 PromQL 查询:
max(
kube_job_status_start_time
* ON(job_name) GROUP_RIGHT()
kube_job_labels{label_cronjob!=""}
) BY (job_name, label_cronjob)
查询本身会导致例如这些指标
kube_job_status_start_time:
kube_job_status_start_time{app="kube-state-metrics",chart="kube-state-metrics-0.12.1",heritage="Tiller",instance="REDACTED",job="kubernetes-service-endpoints",job_name="test-1546295400",kubernetes_name="kube-state-metrics",kubernetes_namespace="monitoring",kubernetes_node="REDACTED",namespace="test-develop",release="kube-state-metrics"}
kube_job_labels{label_cronjob!=""}:
kube_job_labels{app="kube-state-metrics",chart="kube-state-metrics-0.12.1",heritage="Tiller",instance="REDACTED",job="kubernetes-service-endpoints",job_name="test-1546295400",kubernetes_name="kube-state-metrics",kubernetes_namespace="monitoring",kubernetes_node="REDACTED",label_cronjob="test",label_environment="test-develop",namespace="test-develop",release="kube-state-metrics"}
我在这里缺少什么吗?我从指南中尝试的每个查询都会发生相同的多对多错误。即使我自己从头开始构建它也会导致同样的错误。希望你能在这里帮助我:)
解决方案
在我的情况下,当通过 helm(stable/prometheus-operator)安装时,我没有从 Prometheus 获得这个额外的标签。
您需要在 Prometheus 中进行配置。它调用:honor_labels: false
# If honor_labels is set to "false", label conflicts are resolved by renaming
# conflicting labels in the scraped data to "exported_<original-label>" (for
# example "exported_instance", "exported_job") and then attaching server-side
# labels.
所以你必须配置你的 prometheus.yaml 文件 - 配置选项 Honor_labels: false
# Setting honor_labels to "true" is useful for use cases such as federation and
# scraping the Pushgateway, where all labels specified in the target should be
# preserved
无论如何,如果我有这样的(我现在有exported_jobs),仍然无法进行正确的查询,但我想仍然是因为我的LHS。
Error executing query: found duplicate series for the match group
{exported_job="kube-state-metrics"} on the left hand-side of the operation:
[{__name__=
推荐阅读
- java - Android MediaPlayer:Android Q 及更高版本中的文件访问
- javascript - 当我的 JavaScript 依赖于以前加载的脚本中的对象时,我如何`eslint`?
- python - 激活 conda 环境后我是否必须激活 venv 才能使 pip 正常工作?
- css - reactstrap - 我怎样才能改变颜色
的(点击左右滑动照片的小箭头)? - angular - SpringBoot 后端和 Angular 前端之间的实时绑定
- c - fread 超过 8 个字节的动态分配的缓冲区失败
- c - c中的IPv6服务器-recvfrom失败
- mysql - 在案例查询中显示偶数空值
- python - 尝试微调 restNet50 模式问题
- javascript - 跳过 Javascript 数组中的空白