如何让prometheus监控kubernetes服务?

How to get prometheus to monitor kubernetes service?

我想监控我的 Kubernetes 服务对象以确保它们后面有 > 0 Pods 处于 "Running" 状态。

但是,要做到这一点,我必须首先按服务对 Pods 进行分组,然后再按状态进一步分组。

我也想以编程方式执行此操作(例如,对于命名空间中的每个服务...)

Sensu kubernetes 插件中已经有一些代码可以执行此操作:https://github.com/sensu-plugins/sensu-plugins-kubernetes/blob/master/bin/check-kube-service-available.rb 但我还没有看到任何说明如何使用 Prometheus 执行此操作的代码。

有人用 Prometheus 设置 kubernetes 服务级别健康检查吗?如果是这样,您是如何按服务分组然后按 Pod 状态分组的?

我看到的 Prometheus 服务检查示例依赖于黑盒导出器:

黑盒导出器将在服务上尝试给定的 URL。如果成功,则至少有一个 pod 启动并且 运行.

示例见此处:https://github.com/prometheus/prometheus/blob/master/documentation/examples/prometheus-kubernetes.yml 在作业 kubernetes-service-endpoints

要探测的 URL 可能是您的活性探测器或其他东西。如果您的服务不使用 HTTP,您也可以让黑盒导出器测试其他协议。