日志输出通常包含状态、时间和测量等有价值的信息。例如,使用来自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的行为相反:它接收指标而不是探测指标。