如何将应用程序日志从 bluemix 排空到 logentries

How to drain application logs from bluemix to logentries

我从 c​​loudfoundry 文档中看到以下文档 Service-Specific Instructions for Streaming Application Logs:

Logentries is Not Supported

Cloud Foundry distributes log messages over multiple servers in order to handle load. Currently, we do not recommend using Logentries as it does not support multiple syslog sources.

我猜它指向 Logentries 特征 Plaintext TCP/UDP input 类型。

那么 Logentries Token-based TCP input 呢?例如,为从应用程序或 cloudfoundry 发送到 STDOUTSTDERR 的每个日志消息配置提供的令牌。如果可行,如何实现?

您几乎可以将任何端点用于 loggregator 消耗。它只需要是 HTTPS(POST 请求)、syslog 或 syslog-tls。 Cloud Foundry 目前不支持 any other endpoints

Cloud Foundry loggregator drain 的工作方式是它需要一个特定的端点来指向转储日志。它不适用于多个引流端点。

我会向 cf-dev distro 发送电子邮件,看看为此提交 PR 需要什么....

我已经通过以下方式从 bluemix 中的 node.js 应用程序 运行 实现了基于应用程序的日志记录。

  1. 首先集成 Winson 日志库,以便我们能够使用为各种日志记录和监控服务开发的 "transports";除了基本文件和控制台目标。
  2. 使用来自 LogEntries 的 le_node 库作为 Winston 传输。作为传输配置的一部分,您指定一个 LogEntries 令牌。

winston.add(winston.transports.Logentries, { token: myToken });

由于令牌可以特定于您的应用程序,LogEntries 可以聚合来自不同实例的日志。

听起来您正在尝试使用基于端口的系统日志转发,它锁定到一个 IP 地址。相反,您可以结合使用系统日志转发器和令牌转发来将您的日志发送给我们,您会收到一个日志对应一个令牌,如果您想将日志路由到不同的 logs/log 集,则必须在您的配置文件中管理多个令牌。

以下是一些对您有帮助的文档: https://logentries.com/doc/input-token/3 https://blog.logentries.com/2014/01/how-to-send-log-data-via-a-proxy-server-using-rsyslog/2