gpt4 book ai didi

laravel - 如何将流明日志发送到 ELK

转载 作者:行者123 更新时间:2023-12-02 23:52:27 26 4
gpt4 key购买 nike

我有一个使用 Lumen 5.8 制作的微服务,我需要将所有日志发送到 Logstash,以便将它们保存在 ElasticSearch 中。

我需要尝试配置流明日志,但没有任何效果。

我在 logging.php 中创建了一个名为 logstash 的新 channel ,我使用 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'),
],
],
]

我还更改了同一文件中的默认 channel :

    'default' => env('LOG_CHANNEL', 'stack'),

这是我的 .env:
LOG_CHANNEL=logstash
LOGSTASH_HOST=(here I have my Logstash URL)
LOGSTASH_PORT=5055

问题是我没有收到任何错误,但 ElasticSearch 中没有保存任何内容。
我很确定 LogStash 和 Elastic 之间的通信可以正常工作,所以我的配置肯定有问题。

最佳答案

有点切线,但我发现真正适合我的是运行 Filebeat拿起日志。

因此,您将使用默认的基于文件的日志记录配置运行 Lumen/Laravel,无需进行任何更改。您还可以运行 Filebeat 并将其配置为

  • 知道 Logstash 在哪里
  • 知道拿起 Laravel/Lumen 日志
  • # 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,所以这在一个 pod 中的 2 个容器中运行得非常好,共享一个 emptyDir体积。

    如果您不想运行任何其他组件,这对您不起作用。

    关于laravel - 如何将流明日志发送到 ELK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56757944/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com