如何将PHP应用程序日志直接发送到ELK服务?

时间:2017-05-04 11:10:35

标签: elastic-stack monolog swisscomdev

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

  1. 通过STDOUT的标准方式:每个输出到stdout都发送到Logstash
  2. 直接发送至Logstash
  3. 询问方式2.这是如何实现的,特别是如何预期输入?

    我们在基于PHP buildpack的应用程序中使用Monolog并使用其stdout_handler工作正常。

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

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

1 个答案:

答案 0 :(得分:2)

Logstash配置了tcp input,可通过logstashHost:logstashPort访问。 tcp输入配置了默认编解码器,即line编解码器(source code;而不是documentation中所述的plain编解码器。

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

对于Monolog的使用案例,我建议您将SocketHandler(指向logstashHost:logstashPort)与LogstashFormatter一起使用,One with placeholder and one with image.将使用source file来处理JSON编码记录事件是行分隔的。