我们将在之前启动的 Kubernetes 测试环境的基础上进行构建。在这个特定场景中,我们将部署 Pushgateway 的一个实例,并将其添加为 Prometheus 中的目标。为了验证我们设置的正确性,我们将创建一个 Kubernetes CronJob 来模拟工作负载的批处理作业样式,并将其指标推送到 Pushgateway 服务以确保 Prometheus 收集我们的数据。
要开始部署,请确保您移动到相对于代码存储库根目录的正确存储库路径:
要部署 Pushgateway 的实例,您可以使用以下清单。请记住,此服务不支持高可用性或集群:
通过执行以下命令应用清单:
并使用以下命令进行部署:
成功部署后,是时候为我们的新实例提供 Service 了,使用以下清单:
以下说明适用于之前的清单:
您现在可以使用以下命令验证 Pushgateway 的 Web 界面:
这将打开一个新的浏览器选项卡,指向新创建的 Pushgateway 实例 Web 界面,如下图所示:
Figure 6.14: Pushgateway web interface without any metric being pushed
现在,我们需要指示 Prometheus 抓取 Pushgateway。这可以通过一个新的 ServiceMonitor 清单来完成,如下所示:
要应用此 ServiceMonitor,我们只需键入以下命令:
现在我们已经有了监控基础设施,我们需要模拟一个批处理作业来验证我们的设置。
我们可以依赖以下清单,它使用手工制作的 curl 有效负载将带有多个标签的虚拟 batchjob_example 指标推送到 Pushgateway 服务端点:
要应用之前的清单,请使用以下命令:
一分钟后,Pushgateway 的 Web 界面将类似于此屏幕截图:
Figure 6.15: Pushgateway web interface presenting the batchjob_example metric
我们现在可以使用 Prometheus 表达式浏览器来验证指标是从 Pushgateway 中抓取的:
Figure 6.16: Prometheus expression browser showing the batchjob_example metric
由于 Pushgateway 的工作是代理来自其他来源的指标,它自己提供的指标非常少——只有标准的 Go 运行时指标、进程指标、HTTP 处理程序指标和构建信息。但是,需要注意一个应用程序指标,即 push_time_seconds。这将告诉您最后一次看到特定组(推送时 HTTP API 中使用的标签组合)。这可用于检测丢失或延迟的作业。