流式处理应用程序日志

编辑

流式处理应用程序日志

编辑

应用程序日志可以提供有关您的服务和应用程序中发生的事件的有价值的见解。

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

纯文本日志 vs. 结构化 Elastic Common Schema (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 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 来解析日志数据。

纯文本应用程序日志

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 代理日志发送

日志关联

编辑

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

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

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