全面介绍Prometheus的官方导出器Blackbox

1498 字丨阅读本文需 5 分钟

众所周知,Prometheus是一个开源的、基于指标的监控系统。它能够通过强大的数据模型和查询语言,来分析应用程序和基础架构的执行方式与状态。目前,Prometheus栈是由多个部分组成,其中包括:负责存储和提供数据的Prometheus服务器、负责管理警告的警报管理器、以及具体执行指标收集任务的大量Prometheus导出器。导出器通过从一个应用程序处获取统计信息,并将它们公布给特定的端点(通常是某个端口和路径),以允许远程Prometheus服务器收集到此类指标。

在应用社区中,我们可以轻松地获取各种导出器。它们有的是作为官方的Prometheus  GitHub组织的一部分被维护,其他则是由外部贡献者进行维护的。我们即将介绍到的Blackbox,便是一种由Prometheus组织维护的官方导出器。

作为一种导出工具,Blackbox能够协助系统管理员执行HTTP/S、DNS、TCP和ICMP端点的可用性检查等日常任务。简单而言,我们可以将Prometheus  Blackbox导出器视为PingDOM、Freshping或Uptime.com等工具的免费、简单替代品,可以被用于监控那些未在互联网上公布的内部端点。

Prometheus  Blackbox导出器的主要功能是检测远程的内、外部端点,在HTTP/S、DNS、TCP和ICMP等方面的响应时间。其具体捕获的指标包括:

这些指标对于应用基础架构来说,都是重要的组成部分。我们需要通过针对各个面向客户(外部)和内部端点的持续监控,以确保应用服务的连续性,以及某些安全认证的合规性。

应用程序通常需要显性地将各种客户端库添加到代码之中,以公布出待检测的指标。而Blackbox则会隐性地验证诸如:DNS解析、网络连接、证书颁发机构(CA)等外部服务的状态,而且侧重于检测应用程序的性能。因此,Blackbox通常会被部署在  Kubernetes集群上,提供免费、具有高度可用性的监控过程,以全面了解远程端点。

与其他Prometheus导出器类似,Blackbox可以被部署在任何操作系统上,或以容器的形式被部署。不过,鉴于其主要目的是为了监控应用基础架构的关键方面,因此我强烈建议您将其部署在容器编排的平台上,并发挥如下优势:

由于Blackbox是由Prometheus组织在GitHub上管理的官方导出器,因此Helm  chart能够很容易地被部署到Kubernetes群集上。具体设置与部署,请参见如下命令行:

部署Prometheus

由于在完成默认安装后,它会自带有了一个简单的HTTP探测器,因此我们可以轻松地启动针对不同HTTP/S端点的监控。

Prometheus的默认安装

Blackbox会带有一个简单的Web UI,可以轻松地访问到每个健康检查服务的日志。您可以在Helm chart中启用一个入口规则(ingress  rule),以开启对于UI的访问,并调试针对的各项Web检查:

用Blackbox进行健康检查

如今,监控不再只是某个专职团队的任务。它往往会被分散到各个协作团队,以确保能够覆盖到应用架构的每个部分。因此,我们只有让整个监测过程越易于被理解,也就越易于被频繁使用。

为此,Prometheus  operator引入了一个名为ServiceMonitor的全新Kubernetes对象。该资源可以被用于描述Prometheus监控的一组目标,而无需在Prometheus服务器端进行任何额外的配置。

通过这种自动化配置Prometheus新目标的简单方法,服务器就能够找到任何被配置了特定标签的Kubernetes  ServicesMonitor,并自动将其添加到当前的列表中(默认情况下,它使用的标签是“release=kube-prometheus-stack”)。

我们推荐您使用带有Blackbox的ServiceMonitor对象,去监视各个内、外部端点。值得注意的是,添加新的检测节点属于创建的独立对象,它是与Prometheus服务器的配置相分离的。这就意味着任何想要部署新应用的运维人员,都可以独立地管理对其应用的监控,而无需借助管理员的干预,去配置Prometheus  scratch。这样设计的主要好处在于,它分担了运维人员对于每个部署资源进行监控的责任。

如下配置所示,Blackbox Helm chart也可以通过ServiceMonitor,去轻松创建并管理任何新加入到监控目标。

可用于服务监控的Blackbox Helm chart

上述配置命令的结果是创建了三个具有特定标签:kube-prometheus-stack的不同ServiceMonitor对象。每个对象都被专用于配置新的Prometheus目标。

Blackbox自带有一个Web  UI,可提供检测的相关信息。不过,该UI无法持续被用来监控多个端点的状态。对此,为了绘制由Prometheus导出器收集到的指标图表,我们需要根据默认选项,将Grafana与Prometheus相集成。

具体说来,我们可以通过如下两种Blackbox仪表板,来构建可读的数据图表。

当然,我们也可以将上述仪表板合并在一起,通过优化和渲染,一站式地呈现数据,以避免将同一数据源的仪表板数量翻倍。如果您想了解更多的仪表板类型,请参见--https://grafana.com/grafana/dashboards?search=blackbox。

通过合并两个仪表板,以实现更好的可视化

作为一种新的导出器,Blackbox可以轻松地被部署到Prometheus平台上,以检测应用基础架构的关键指标。通过将其与Grafana仪表板动态结合,我们不但可以改进SLA的检测质量,还能够为执行团队提供应用基础架构的整体概览。如果您有兴趣了解更多有关Prometheus  Blackbox的信息,请参见:

原文标题:Prometheus Blackbox: What? Why? How?,作者: Nicolas Giron


来源:51CTO陈峻

免责声明:凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处本网。非本网作品均来自其他媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如您发现有任何侵权内容,请依照下方联系方式进行沟通,我们将第一时间进行处理。

0赞 好资讯,需要你的鼓励
来自:51CTO
0

参与评论

登录后参与讨论 0/1000

为你推荐

没有更多了