我有一个用Lumen5.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之间的通信,所以我的配置肯定有问题。
发布于 2019-06-25 16:53:49
有点切线,但我发现对我来说真正有效的是运行菲莱来获取日志。
因此,您将使用默认的基于文件的日志配置运行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,所以这个工作非常好,在一个吊舱中有两个容器,共享一个emptyDir
卷。
如果不希望运行任何其他组件,则此操作不适用于您。
https://stackoverflow.com/questions/56757944
复制相似问题