重新启动 Pod 时发出警报:Windows 容器上的 Prometheus

Posted

技术标签:

【中文标题】重新启动 Pod 时发出警报:Windows 容器上的 Prometheus【英文标题】:alert when pod is restarted: Prometheus on windows containers 【发布时间】:2019-09-12 02:38:08 【问题描述】:

我为 Windows 容器设置了 Prometheus,它会抓取 wmi_exporter 支持的指标。但我想要一些跟踪 pod 重启等的指标,这些指标不属于其中的一部分。我相信 kube-state-metrics 提供了这个功能。但我找不到任何方法将它安装在 Windows 容器上。我在网上找到的所有 helm 图表都有只适用于 Linux 容器的图像。那么,有没有办法将它安装在 Windows 容器上呢?

还有其他更好的方法来提醒 pod/容器重启吗?

【问题讨论】:

【参考方案1】:

你可以像你说的那样使用kube-state-metrics。从 Kubernetes 控制平面的角度来看,无论您使用的是 Linux 容器还是 Windows 容器,pod/容器重启都没有什么不同。

请记住,control plane 仅在 Linux 上受支持,因此如果您的集群上只有 Windows 节点,您可以在您的主服务器中运行 kube-state-metrics pod/container,否则,您将需要一个 Linux 节点。或者,您可以构建 kube-state-metrics Windows Go 二进制文件并在 Windows pod/容器上运行它,但这可能更麻烦。

您可以使用this 和Alertmanager 之类的东西作为警报。

【讨论】:

感谢 Rico :) 所以,当我们在 master 上运行 kube-state-metrics 时,它是否需要在 pod 上添加任何注释才能抓取指标,还是开箱即用。跨度> 您只需要在 kube-state-metrics Kubernetes 部署中添加 prometheus.io/scrape: 'true' 注释。希望对您有所帮助! 嗨,里科。当我将它安装在主服务器上时,当我在主服务器中执行 curl localhost:8080/metrics 时可以看到一些响应,但当我尝试从浏览器访问 master_ip:8080/metrics 时却看不到任何内容。此外,为了让 prometheus 也能从中获取指标,我们需要将主 ip 静态添加到 prometheus 配置中?? 这可能意味着您的主服务器可能会阻止来自浏览器的某些连接。你有任何防火墙规则吗?是的。 prometheus 通常需要知道要抓取的目标。 我会检查防火墙规则。对于目标抓取,如果我们对 pod 进行注释以允许 prometheus 抓取,就像在其完美运行的工作节点上调度的其他节点一样,prometheus 应该能够识别该 pod 对吗?

以上是关于重新启动 Pod 时发出警报:Windows 容器上的 Prometheus的主要内容,如果未能解决你的问题,请参考以下文章

当 docker 容器 pod 处于 Error 或 CarshLoopBackOff kubernetes 时发出警报

当 Pod 处于 Pending 超过 2 分钟时,Prometheus 会发出警报

POD崩溃时持久卷声明中的容器数据

如果 Docker 容器退出,GCP 会发出警报

健康检查回调hook

计数器下降时 Prometheus 发出警报