3

12 factor app manifesto 建议将所有日志输出写入 stdout。如果您的服务/应用程序在 docker 容器中运行,这非常容易实现。然后,您可以使用 docker log 驱动程序将日志发送到像 fluentd 这样的日志传送器,然后它可以将它们发送到 elasticsearch 进行分析或类似 HDFS 的东西进行长期存储。

虽然很清楚如何处理日志,但似乎没有任何关于如何处理指标的指导。例如,我们可能想要跟踪每个请求所花费的时间、错误率和我们服务的其他内容。

可以让服务直接发送指标,但这似乎违反了 12 因素应用程序原则。此外,如果指标服务器出现故障或服务出现故障,我们将需要处理将指标写入磁盘和其他类似预写日志的功能,这会增加复杂性。

一种可能的解决方案是将指标写入stdout并使用 fluentd 过滤它们。但是在这种情况下,我们将日志和指标混合在一起,我们需要为日志和指标的外观设置一套格式来区分它们,这对于不是我们编写的服务可能不是一个选项。

在 12 因素应用程序中,应如何将来自应用程序/服务的指标发送到指标服务器?

4

1 回答 1

0

度量服务器与任何其他依赖项(例如数据库或其他)没有任何不同。依赖位置是通过环境变量(http://12factor.net/config)配置的,所以使用它来传递应用程序应该发送其指标的位置。

指标服务关闭的问题可能超出了配置的范围。应用程序如何处理其不可用的依赖项实际上更多是应用程序设计问题。您可以选择在 RAM 或某种临时文件系统中缓冲一定数量,或者只删除无法发送的任何内容 - 您的选择。关键是该位置是为该环境配置的,其他任何事情都是设计问题。

只是我的 2c,HTH。

于 2016-06-10T13:41:08.387 回答