开始使用

编辑

PHP 的 ECS 日志记录目前仅适用于 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 通常添加的字段(类型、源、偏移量等)。

如果发生 JSON 反序列化错误,Filebeat 会添加 “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 参考