根据documentation,有两种方法可以将日志信息发送到SwisscomDev ELK服务。
询问方式2.这是如何实现的,特别是如何预期输入?
我们在基于PHP buildpack的应用程序中使用Monolog并使用其stdout_handler
工作正常。
我正在尝试GelfHandler(连接被拒绝),SyslogUdPHandler(没有错误,但没有结果),都配置为使用VCAPServices logstashHost
和logstashPort
作为API端点/主机来发送日志。< / p>
绑定工作,设置了env变量,但我不知道如何从我们的应用程序发送SwisscomDev ELK服务Logstash API端点兼容的日志信息。
答案 0 :(得分:2)
Logstash配置了tcp input,可通过logstashHost:logstashPort
访问。 tcp输入配置了默认编解码器,即line
编解码器(source code;而不是documentation中所述的plain
编解码器。
日志事件的有效负载应使用JSON编码,以便Elasticsearch自动识别这些字段。如果是这种情况,则无需进一步处理即可将整个日志事件转发到Elasticsearch。
如果有效负载不是JSON,则整个日志行将以字段message
结束。
对于Monolog的使用案例,我建议您将SocketHandler(指向logstashHost:logstashPort
)与LogstashFormatter一起使用,将使用source file来处理JSON编码记录事件是行分隔的。