流式处理应用程序日志

编辑

流式处理应用程序日志

编辑

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

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

纯文本日志与结构化 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 代理日志发送

日志关联

编辑

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

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

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