我在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' => AppLogstashLogger::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"
}
}
您的logstash配置在端口5044
上只有beats
输入,但您的应用程序配置为使用端口4718
上的UDP
发送日志。
您需要在该端口上侦听UDP输入,还需要在弹性搜索输出中指定索引名。
从应用程序中侦听日志并将其发送到弹性搜索的配置如下:
input {
udp {
port => 4718
}
}
output {
elasticsearch {
hosts => ["http://localhost:9200"]
index => "index-name-for-your-logs-%{+YYYY.MM.dd}"
}
}