11 Prometheus 之日志及探针监控
日志输出通常包含状态、时间和测量等有价值的信息。例如,使用来自 Web 或应用程序服务器的访问日志输出是一种跟踪事务时间或错误统计的有效方法。可以通过工具来解析这些日志条目,从匹配的输出中创建指标,并使它们可供 Prometheus 作业抓取。
mtail 日志处理器是由 Google 的 SRE 人员来编写的,其采用 Apache 2.0 许可证,并且使用 Go 语言。mtail 日志处理器专门用于从应用程序日志中提取要导出到时间序列数据库中的指标。
有了两个 mtail 程序,可以通过多种方式部署它们。我们建议为每个应用程序运行一个 mtail 实例,并作为依赖项通过配置管理部署在应用程序周围。这种模式通常被称为边车(sidecar)模式,非常适合容器化应用。也可以在一个 mtail 实例中运行多个程序,但有一点需要注意,mtail 会在传递给它的每个日志文件上运行每个程序,这可能会对主机产生性能影响。
探针监控的一个示例是执行 ICMP ping 或 echo 检查并确认你已收到响应。这种类型的探针监控也称为黑盒监控,因为我们将内部应用程序视为黑盒。
Prometheus 通过运行 Blackbox exporter 来进行探测,该 exporter 会探测远程目标并暴露在本地端点上收集的任何时间序列,然后 Prometheus 作业将从这些端点中抓取指标。
监控探针有三个约束:
它们需要能够访问到被探测的资源。
探针需要放置在可以测试资源的正确位置上。例如,如果你正在测试对应用程序的外部访问,那么在防火墙后运行探针将不会验证此访问权限。
探针 exporter 的位置能够被 Prometheus 服务器抓取。
Blackbox exporter 是一个在 Apache 2.0 许可下的二进制 Go 语言应用程序。exporter 允许通过 HTTP、HTTPS、DNS、TCP 和 ICMP 来探测端点。它的架构与其他 exporter 略有不同。在 exporter 内部,我们定义了一系列执行特定检查的模块,例如,检查 Web 服务器是否正在运行,或者 DNS 记录是否解析。在 exporter 运行时,它会在 URL 上暴露这些模块和 API。Prometheus 将目标和特定模块作为该 URL 的参数传递给这些目标。exporter 执行检查并将生成的指标返回给 Prometheus。
在某些情况下,没有可以从中抓取指标的目标。造成这种情况的原因有很多:
安全性或连接性问题,使你无法访问目标资源。这是一种非常常见的情况,比如服务或应用程序仅允许特定端口或路径访问。
目标资源的生命周期太短,例如容器的启动、执行和停止。在这种情况下,Prometheus 作业将会发现目标已完成执行并且不再可以被抓取。
目标资源没有可以抓取的端点,例如批处理作业。批处理作业不太可能具有可被抓取的 HTTP 服务,即使假设作业运行的时间足够长。
Pushgateway 是一个独立服务,它在 HTTP REST API 上接收 Prometheus 指标。Pushgateway 位于发送指标的应用程序和 Prometheus 服务器之间。Pushgateway 接收指标,然后作为目标被抓取,以将指标提供给 Prometheus 服务器。你可以将其视为代理服务,或者说与黑盒 exporter 的行为相反:它接收指标而不是探测指标。
版权声明: 本文为 InfoQ 作者【穿过生命散发芬芳】的原创文章。
原文链接:【http://xie.infoq.cn/article/c0a1d361df91b842de78ddcd0】。文章转载请联系作者。
评论