入门编辑

ECS 日志 for PHP 目前仅适用于 Monolog v2.*。

步骤 1:设置应用程序日志编辑

添加依赖项编辑

composer require elastic/ecs-logging

配置 Monolog 日志记录器编辑

Elastic\Monolog\v2\Formatter\ElasticCommonSchemaFormatter 实现 Monolog 的 FormatterInterface,因此它可以在设置 Monolog 日志记录器时使用。

例如

use Monolog\Logger;
use Monolog\Handler\StreamHandler;
use Elastic\Monolog\Formatter\ElasticCommonSchemaFormatter;

$log = new Logger('MyLogger');
$handler = new StreamHandler('php://stdout', Logger::DEBUG);
$handler->setFormatter(new ElasticCommonSchemaFormatter());
$log->pushHandler($handler);

$log->warning('Be aware that...');

将以下 JSON 日志记录到标准输出

{"@timestamp":"2021-02-07T18:08:07.229676Z","log.level":"WARNING","message":"Be aware that...","ecs.version":"1.2.0","log":{"logger":"MyLogger"}}

此外,它允许向消息添加额外的键。

例如

$log->info('My message', ['labels' => ['my_label_key' => 'my_label_value'], 'trace.id' => 'abc-xyz']);

记录以下内容(多行格式,便于阅读)

{
    "@timestamp": "2021-02-08T06:36:38.913824Z",
    "log.level": "INFO",
    "message": "My message",
    "ecs.version": "1.2.0",
    "log": {
        "logger": "MyLogger"
    },
    "labels": {
        "my_label_key": "my_label_value"
    },
    "trace.id": "abc-xyz"
}

步骤 2:配置 Filebeat编辑

  1. 请按照 Filebeat 快速入门 进行操作
  2. 将以下配置添加到您的 filebeat.yaml 文件中。

对于 Filebeat 7.16+

filebeat.yaml。

filebeat.inputs:
- type: filestream 
  paths: /path/to/logs.json
  parsers:
    - ndjson:
      overwrite_keys: true 
      add_error_key: true 
      expand_keys: true 

processors: 
  - add_host_metadata: ~
  - add_cloud_metadata: ~
  - add_docker_metadata: ~
  - add_kubernetes_metadata: ~

使用 filestream 输入从活动日志文件读取行。

如果发生冲突,解码的 JSON 对象中的值会覆盖 Filebeat 通常添加的字段(type、source、offset 等)。

Filebeat 在发生 JSON 反序列化错误时添加 “error.message” 和 “error.type: json” 键。

Filebeat 将递归地对解码的 JSON 中的键进行点分隔,并将它们扩展为分层对象结构。

处理器可增强您的数据。请参阅 处理器 了解详细信息。

对于 Filebeat < 7.16

filebeat.yaml。

filebeat.inputs:
- type: log
  paths: /path/to/logs.json
  json.keys_under_root: true
  json.overwrite_keys: true
  json.add_error_key: true
  json.expand_keys: true

processors:
- add_host_metadata: ~
- add_cloud_metadata: ~
- add_docker_metadata: ~
- add_kubernetes_metadata: ~

有关更多信息,请参阅 Filebeat 参考