如何将 PHP 应用日志直接发送到 ELK 服务?
How to send PHP app logs directly to ELK service?
根据documentation,有两种方法可以将日志信息发送到 SwisscomDev ELK 服务。
- 通过 STDOUT 的标准方式:每个到 stdout 的输出都发送到 Logstash
- 直接发送到 Logstash
询问方式2。这是如何实现的,特别是预期的输入如何?
我们在基于 PHP buildpack 的应用程序中使用 Monolog,并且使用它的 stdout_handler
工作正常。
我正在尝试 GelfHandler(连接被拒绝)、SyslogUdPHandler(没有错误,但没有结果),两者都配置为使用 VCAPServices logstashHost
和 logstashPort
作为 API 端点/主机将日志发送到。
绑定有效,环境变量已设置,但我不知道如何从我们的应用程序发送 SwisscomDev ELK 服务 Logstash API 端点兼容日志信息。
Logstash 配置有 tcp input, which is reachable via logstashHost:logstashPort
. The tcp input is configured with its default codec, which is the line
codec (source code; not the plain
codec as stated in the documentation).
日志事件的有效载荷应编码为JSON,以便Elasticsearch 自动识别这些字段。如果是这种情况,整个日志事件将转发给 Elasticsearch,无需进一步处理。
如果有效负载不是 JSON,则整个日志行将在字段 message
.
中结束
对于您使用 Monolog 的用例,我建议您使用 SocketHandler (pointing it to logstashHost:logstashPort
) in combination with the LogstashFormatter,它将处理 JSON 编码,日志事件被行分隔。
根据documentation,有两种方法可以将日志信息发送到 SwisscomDev ELK 服务。
- 通过 STDOUT 的标准方式:每个到 stdout 的输出都发送到 Logstash
- 直接发送到 Logstash
询问方式2。这是如何实现的,特别是预期的输入如何?
我们在基于 PHP buildpack 的应用程序中使用 Monolog,并且使用它的 stdout_handler
工作正常。
我正在尝试 GelfHandler(连接被拒绝)、SyslogUdPHandler(没有错误,但没有结果),两者都配置为使用 VCAPServices logstashHost
和 logstashPort
作为 API 端点/主机将日志发送到。
绑定有效,环境变量已设置,但我不知道如何从我们的应用程序发送 SwisscomDev ELK 服务 Logstash API 端点兼容日志信息。
Logstash 配置有 tcp input, which is reachable via logstashHost:logstashPort
. The tcp input is configured with its default codec, which is the line
codec (source code; not the plain
codec as stated in the documentation).
日志事件的有效载荷应编码为JSON,以便Elasticsearch 自动识别这些字段。如果是这种情况,整个日志事件将转发给 Elasticsearch,无需进一步处理。
如果有效负载不是 JSON,则整个日志行将在字段 message
.
对于您使用 Monolog 的用例,我建议您使用 SocketHandler (pointing it to logstashHost:logstashPort
) in combination with the LogstashFormatter,它将处理 JSON 编码,日志事件被行分隔。