我正在使用 Laravel 将我的日志发送到 Logstash,并且我想在 Kibana 中显示它们。这是我所做的:
在logging.php
:
'logstash' => [
'driver' => 'custom',
'via' => \App\LogstashLogger::class,
'host' => env('LOGSTASH_HOST', '127.0.0.1'),
'port' => env('LOGSTASH_PORT', 9200),
],
在LogstashLogger
课堂上:
<?php
/**
* Created by PhpStorm.
* User: farshad
* Date: 8/5/19
* Time: 1:19 PM
*/
namespace App;
use Monolog\Formatter\LogstashFormatter;
use Monolog\Handler\SocketHandler;
use Monolog\Logger;
use Psr\Log\LoggerInterface;
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]);
}
}
当我运行这个命令时,在修补程序中:
>>> Log::channel('logstash')->info('Hello logstash!');
我的日志中没有任何错误,我得到空值。这应该意味着数据已成功发送到 Logstash。我现在如何从 Logstash 获取数据并在 Kibana 中显示?当我想创建一个索引模式时,它不会接受任何名称。我不知道如何检查我是否在 Logstash 中收到了数据,或者如何在 Kibana 中显示它。