入门
编辑入门编辑
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编辑
- 请按照 Filebeat 快速入门 进行操作
- 将以下配置添加到您的
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: ~
- 确保您的应用程序将日志记录到 stdout/stderr。
- 请按照 在 Kubernetes 上运行 Filebeat 指南进行操作。
- 启用 基于提示的自动发现(取消
filebeat-kubernetes.yaml
中对应部分的注释)。 - 将这些注释添加到使用 ECS 日志记录器进行日志记录的 pod 中。这样可以确保日志以适当的方式进行解析。
- 确保您的应用程序将日志记录到 stdout/stderr。
- 请按照 在 Docker 上运行 Filebeat 指南进行操作。
- 启用 基于提示的自动发现。
- 将这些标签添加到使用 ECS 日志记录器进行日志记录的容器中。这样可以确保日志以适当的方式进行解析。
docker-compose.yml。
有关更多信息,请参阅 Filebeat 参考。