logstash 将laravel日志插入日志存储区

3pmvbmvn  于 2022-12-16  发布在  Logstash
关注(0)|答案(1)|浏览(237)

我在laravel中搜索使用logstash的日志教程,发现它是这样的:
首先创建一个logstashLogger类:

class LogstashLogger {

/**
 * @param array $config
 * @return LoggerInterface
 */
public function __invoke(array $config): LoggerInterface
{
    $handler = new SocketHandler("udp://{$config['host']}:{$config['port']}");
    $handler->setFormatter(new LogstashFormatter(config('app.name')));

    return new Logger('logstash.main', [$handler]);
}

}

然后我将logstash添加到logging.php中的通道:

'logstash' => [
        'driver' => 'custom',
        'via'    => \App\LogstashLogger::class,
        'host'   => env('LOGSTASH_HOST', '127.0.0.1'),
        'port'   => env('LOGSTASH_PORT', 4718),
    ],

最后我是这样写的:

Log::channel('logstash')->debug('Logging to logstash');

而问题是我在哪里可以看到日志,索引是什么?这很混乱
logstash.conf:

input {
  beats {
    port => 5044
  }
}

output {
  elasticsearch {
    hosts => ["http://localhost:9200"]
    index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
    #user => "elastic"
    #password => "changeme"
  }
}
huwehgph

huwehgph1#

您的logstash配置在端口5044上只有一个beats输入,但是您的应用程序被配置为使用端口4718上的UDP发送日志。
你需要有一个UDP输入监听那个端口,你还需要在你的elasticsearch输出中指定一个indexname。
侦听应用程序日志并将其发送到elasticsearch的配置如下所示:

input {
  udp {
    port => 4718
  }
}

output {
  elasticsearch {
    hosts => ["http://localhost:9200"]
    index => "index-name-for-your-logs-%{+YYYY.MM.dd}"
  }
}

相关问题