正在加载

流式处理应用程序日志

Elastic Stack Serverless

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

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

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

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 Common Schema (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 来解析日志数据。

documentation icon纯文本日志 中了解更多信息

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

将 ECS 日志记录插件添加到您的日志记录库,以将您的日志格式化为与 ECS 兼容的 JSON,而无需解析。

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

documentation iconECS 格式化日志 中了解更多信息

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

以下 APM 代理支持此功能:

documentation iconECS 格式化日志 中了解更多信息

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

Java APM 代理支持日志发送。

documentation iconAPM 代理日志发送 中了解更多信息

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

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

在特定于代理的摄取指南中了解有关日志关联的更多信息

© . All rights reserved.