Observability:如何在使用 Elastic Agents 把多行的日志摄入到 Elasticsearch 中
Posted Elastic 中国社区官方博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Observability:如何在使用 Elastic Agents 把多行的日志摄入到 Elasticsearch 中相关的知识,希望对你有一定的参考价值。
在我之前的文章 “Observability:如何使用 Elastic Agents 把定制的日志摄入到 Elasticsearch 中”,我详述了如何使用 Custom Logs 来采集定制的日志。在文章的留言中,有位开发者想了解如何把多行的日志摄入到 Elasticsearch 中来。一般来说,多行的日志有如下的格式:
Exception in thread "main" java.lang.NullPointerException
at com.example.myproject.Book.getTitle(Book.java:16)
at com.example.myproject.Author.getBookTitles(Author.java:25)
at com.example.myproject.Bootstrap.main(Bootstrap.java:14)
这是一个典型的 Java Exception 日志。在摄入的过程中,我们并不想把它分拆成几个日志信息,而是希望是一条日志信息。
在我之前的文章 “Beats:使用 Filebeat 传送多行日志”,我有详述该如何实现这个。那个是在配置 Filebeat 时需要使用的一些配置。究其实质,Elastic Agent 也是使用 Filebeat 来采集数据的。那么我们该在 Custom Logs 的哪个地方配置相应的设置呢?
前提条件
在进行如下的练习之前,请详细阅读我之前的文章 “Observability:如何使用 Elastic Agents 把定制的日志摄入到 Elasticsearch 中”。里面含有详细的一步一步地配置。在这篇文章中,我将展示一些地方的区别。
我们在自己喜欢的目录里创建如下的一个日志文件:
liuxg@liuxgu:~/tmp$ pwd
/home/liuxg/tmp
liuxg@liuxgu:~/tmp$ cat multiline
Exception in thread "main" java.lang.NullPointerException
at com.example.myproject.Book.getTitle(Book.java:16)
at com.example.myproject.Author.getBookTitles(Author.java:25)
at com.example.myproject.Bootstrap.main(Bootstrap.java:14)
配置 Custom Logs
下面展示如何配置 Custom Logs 集成:
关于上面的配置,请参阅我之前的文章 “Beats:使用 Filebeat 传送多行日志”。
这样,我们就配置好了。
检查日志是否已经被成功摄入
我们来到 Discover 的界面:
从上面,我们可以看到 message 的信息是含有整个 Exception 的。我们也可以通过查询来找到这个日志:
GET logs-*/_search
"query":
"match":
"message": "com.example.myproject.Book.getTitle"
,
"_source": [
"message"
]
好啦。今天的分享就到这里。希望大家学到知识!
以上是关于Observability:如何在使用 Elastic Agents 把多行的日志摄入到 Elasticsearch 中的主要内容,如果未能解决你的问题,请参考以下文章
Observability:在 Elastic Observability 部署中添加免费和开放的 Elastic APM
Observability:在 Elastic Observability 部署中添加免费和开放的 Elastic APM
Observability:如何使用 Elastic Agents 把微服务的数据摄入到 Elasticsearch 中
Observability:如何在最新的 Elastic Stack 中使用 Fleet 摄入 system 日志及指标