我有一个用Lumen 5.8制作的微服务,我需要将所有日志发送到Logstash,以便将它们保存在ElasticSearch中。
我需要尝试配置Lumen日志记录,但是效果不佳。
我在logging.php中创建了一个名为logstash的新通道,并且我使用Monolog作为驱动程序。
'channels' => [
'logstash' => [
'driver' => 'monolog',
'level' => 'debug',
'path' => storage_path('logs/lumen.log'),
'handler' => \Monolog\Handler\SocketHandler::class,
'handler_with' => [
'host' => env('LOGSTASH_HOST'),
'port' => env('LOGSTASH_PORT'),
],
],
]
我还更改了同一文件中的默认频道:
'default' => env('LOG_CHANNEL', 'stack'),
这是我的.env:
LOG_CHANNEL=logstash
LOGSTASH_HOST=(here I have my Logstash URL)
LOGSTASH_PORT=5055
问题是我没有收到任何错误,但是在ElasticSearch中没有任何保存。 我非常确定LogStash和Elastic之间的通信正常,因此我的配置中一定有问题。
答案 0 :(得分:0)
有些切线,但是我发现运行Filebeat来获取日志对我来说非常有效。
因此,您将使用默认的基于文件的日志记录配置来运行Lumen / Laravel,无需进行任何更改。您还将运行Filebeat并将其配置为
# filebeat config
filebeat.config:
filebeat.prospectors:
- type: log
enabled: true
paths:
- /var/www/laravel/storage/logs/*.log
tags:
- laravel
- myAppName
fields:
app: myAppName
output.file:
enabled: false
output.logstash:
hosts: ["logstash.local:5044"]
我的部署环境是Kubernetes,所以它在一个容器中的2个容器中共享一个emptyDir
卷,确实工作得很好。
如果您不想运行任何其他组件,那么这对您不起作用。