开始使用
编辑开始使用
编辑步骤 1:安装
编辑将软件包添加到您的 go.mod
文件中
require go.elastic.co/ecslogrus master
步骤 2:配置
编辑设置一个默认的日志记录器。例如
log := logrus.New() log.SetFormatter(&ecslogrus.Formatter{})
示例
编辑使用结构化日志记录
编辑// Add custom fields. log.WithError(errors.New("boom!")).WithField("custom", "foo").Info("hello")
上面的示例产生以下日志输出
{ "@timestamp": "2021-01-20T11:12:43.061+0800", "custom":"foo", "ecs.version": "1.6.0", "error": { "message": "boom!" }, "log.level": "info", "message":"hello" }
将自定义字段嵌套在 "labels" 下
编辑为了完全符合 ECS 标准,自定义字段应嵌套在 "labels" 对象中。
log := logrus.New() log.SetFormatter(&ecslogrus.Formatter{ DataKey: "labels", }) log.WithError(errors.New("boom!")).WithField("custom", "foo").Info("hello")
上面的示例产生以下日志输出
{ "@timestamp": "2021-01-20T11:12:43.061+0800", "ecs.version": "1.6.0", "error": { "message": "boom!" }, "labels": { "custom": "foo" }, "log.level": "info", "message":"hello" }
报告调用者信息
编辑log := logrus.New() log.SetFormatter(&ecslogrus.Formatter{}) log.ReportCaller = true log.Info("hello")
上面的示例产生以下日志输出
{ "@timestamp": "2021-01-20T11:12:43.061+0800", "ecs.version": "1.6.0", "log.level": "info", "log.origin.file.line": 48, "log.origin.file.name": "/path/to/example_test.go", "log.origin.function": "go.elastic.co/ecslogrus_test.ExampleFoo", "message":"hello" }
步骤 3:配置 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 通常添加的字段(类型、源、偏移量等)。 |
|
如果发生 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: ~
- 请确保您的应用程序将日志记录到 stdout/stderr。
- 请遵循 在 Kubernetes 上运行 Filebeat 指南。
- 启用 基于提示的自动发现 (取消注释
filebeat-kubernetes.yaml
中的相应部分)。 - 将这些注释添加到使用 ECS 日志记录器的 Pod 中。这将确保日志被正确解析。
- 请确保您的应用程序将日志记录到 stdout/stderr。
- 请遵循 在 Docker 上运行 Filebeat 指南。
- 启用 基于提示的自动发现。
- 将这些标签添加到使用 ECS 日志记录器的容器中。这将确保日志被正确解析。
docker-compose.yml。
有关更多信息,请参阅 Filebeat 参考。