1

根据文档,有两种方法可以将日志信息发送到 SwisscomDev ELK 服务。

  1. 通过 STDOUT 的标准方式:到 stdout 的每个输出都发送到 Logstash
  2. 直接发送到 Logstash

询问方式2。这是如何实现的,尤其是预期的输入如何?

我们在基于 PHP buildpack 的应用程序中使用Monologstdout_handler ,并且使用它工作正常。

我正在尝试 GelfHandler(连接被拒绝)、SyslogUdPHandler(没有错误,但没有结果),它们都配置为使用 VCAPServiceslogstashHostlogstashPort作为 API 端点/主机发送日志。

绑定有效,环境变量已设置,但我不知道如何从我们的应用程序发送 SwisscomDev ELK 服务 Logstash API 端点兼容日志信息。

4

1 回答 1

2

Logstash 配置了一个tcp 输入,可以通过logstashHost:logstashPort. tcp 输入配置有其默认编解码器,即line编解码器(源代码;不是文档plain中所述的编解码器)。

日志事件的有效负载应以 JSON 编码,以便 Elasticsearch 自动识别这些字段。如果是这种情况,则将整个日志事件转发给 Elasticsearch,而无需进一步处理。如果有效负载不是 JSON,则整个日志行将在 field 中结束message

对于您使用 Monolog 的用例,我建议您将SocketHandler(指向它logstashHost:logstashPort)与LogstashFormatter结合使用,后者将处理 JSON 编码,日志事件以行分隔。

于 2017-05-04T11:59:10.673 回答