流式传输应用程序日志

编辑

流式传输应用程序日志编辑

应用程序日志提供了对服务和应用程序中发生的事件的宝贵洞察。

日志的格式(结构化或纯文本)会影响日志提取策略。

纯文本日志与结构化 Elastic 通用模式 (ECS) 日志编辑

日志通常以纯文本或结构化形式生成。纯文本日志仅包含文本,没有特殊格式,例如

2019-08-06T12:09:12.375Z INFO:spring-petclinic: Tomcat started on port(s): 8080 (http) with context path, org.springframework.boot.web.embedded.tomcat.TomcatWebServer
2019-08-06T12:09:12.379Z INFO:spring-petclinic: Started PetClinicApplication in 7.095 seconds (JVM running for 9.082), org.springframework.samples.petclinic.PetClinicApplication
2019-08-06T14:08:40.199Z DEBUG:spring-petclinic: init find form, org.springframework.samples.petclinic.owner.OwnerController

结构化日志遵循预定义的、可重复的模式或结构。此结构在写入时应用,无需在提取时进行解析。Elastic 通用模式 (ECS) 定义了一组用于构建日志的通用字段。这种结构允许轻松提取日志,并提供对日志中的各个字段进行关联、搜索和聚合的功能。

例如,前面的示例日志在使用 ECS 兼容的 JSON 进行结构化时可能如下所示

{"@timestamp":"2019-08-06T12:09:12.375Z", "log.level": "INFO", "message":"Tomcat started on port(s): 8080 (http) with context path ''", "service.name":"spring-petclinic","process.thread.name":"restartedMain","log.logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer"}
{"@timestamp":"2019-08-06T12:09:12.379Z", "log.level": "INFO", "message":"Started PetClinicApplication in 7.095 seconds (JVM running for 9.082)", "service.name":"spring-petclinic","process.thread.name":"restartedMain","log.logger":"org.springframework.samples.petclinic.PetClinicApplication"}
{"@timestamp":"2019-08-06T14:08:40.199Z", "log.level":"DEBUG", "message":"init find form", "service.name":"spring-petclinic","process.thread.name":"http-nio-8080-exec-8","log.logger":"org.springframework.samples.petclinic.owner.OwnerController","transaction.id":"28b7fb8d5aba51f1","trace.id":"2869b25b5469590610fea49ac04af7da"}

提取日志编辑

有多种方法可以将应用程序日志提取到项目中。您的具体情况有助于确定适合您的方法。

纯文本日志编辑

使用 Filebeat 或 Elastic Agent,您可以提取任何编程语言或框架的纯文本日志(包括现有日志),而无需修改应用程序或其配置。

要使纯文本日志有用,您需要使用 Filebeat 或 Elastic Agent 来解析日志数据。

纯文本应用程序日志

ECS 格式的日志编辑

以 ECS 格式化的日志不需要手动解析,并且配置可以在应用程序之间重复使用。它们还包括日志关联。您可以使用 ECS 日志记录插件或 APM 代理 ECS 重新格式化来格式化 ECS 中的日志。

  • ECS 日志记录插件

    将 ECS 日志记录插件添加到日志记录库中,以将日志格式化为不需要解析的 ECS 兼容 JSON。

    要使用 ECS 日志记录,您需要修改应用程序及其日志配置。

  • APM 代理日志重新格式化

    一些 Elastic APM 代理可以自动将应用程序日志重新格式化为 ECS 格式,而无需添加 ECS 记录器依赖项或修改应用程序。

    以下 APM 代理支持此功能

ECS 格式的应用程序日志

APM 代理日志发送编辑

使用 APM 代理自动捕获日志并将其直接发送到托管提取服务,而无需使用 Filebeat 或 Elastic Agent。

Java APM 代理支持日志发送。

APM 代理日志发送

日志关联编辑

将应用程序日志与跟踪事件相关联以

  • 查看日志上下文和用户提供的参数
  • 查看属于特定跟踪的所有日志
  • 在调试应用程序问题时轻松地在日志和跟踪之间移动

在特定于代理的提取指南中详细了解日志关联