Как отправить журналы Lumen в ELK - PullRequest
0 голосов
/ 25 июня 2019

У меня есть микросервис, созданный с помощью 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 работает, поэтому в моей конфигурации должно быть что-то не так.

1 Ответ

0 голосов
/ 25 июня 2019

Немного касательно, но я обнаружил, что для меня действительно хорошо работает: 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, поэтому она отлично работает как 2 контейнера в одном модуле, совместно используя один том emptyDir.

Это не работает для вас, если вы не хотите запускать какие-либо дополнительные компоненты.

...