Observability:如何在使用 Elastic Agents 把多行的日志摄入到 Elasticsearch 中

2022年8月25日   |   by mebius

在我之前的文章 “Observability:如何使用 Elastic Agents 把定制的日志摄入到 Elasticsearch 中”,我详述了如何使用 Custom Logs 来采集定制的日志。在文章的留言中,有位开发者想了解如何把多行的日志摄入到 Elasticsearch 中来。一般来说,多行的日志有如下的格式:

Exception in thread "main" java.lang.NullPointerException
        at com.example.myproject.Book.getTitltgcodee(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/liuxtgcodeg/tmp
liuxg@liuxgu:~/tmp$ cat multiline 
Exception in thread "main" java.lang.NullPointerException
        at cotgcodem.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 集成:

%title插图%num

%title插图%num

%title插图%num

%title插图%num

%title插图%num

%title插图%num

%title插图%num

关于上面的配置,请参阅我之前的文章 “Beats:使用 Filebeat 传送多行日志”。

%title插图%num

这样,我们就配置好了。

检查日志是否已经被成功摄入

我们来到 Discover 的界面:

%title插图%num

%title插图%num

从上面,我们可以看到 message 的信息是含有整个 Exception 的。我们也可以通过查询来找到这个日志:

GET logs-*/_search
{
  "query": {
    "match": {
      "message": "com.example.myproject.Book.getTitle"
    }
  },
  "_source": [
    "message"
   ]
}

%title插图%num

好啦。今天的分享就到这里。希望大家学到知识!

文章来源于互联网:Observability:如何在使用 Elastic Agents 把多行的日志摄入到 Elasticsearch 中

相关推荐: Elasticsearch:Apache spark 大数据集成

Elasticsearch 已成为大数据架构中的常用组件,因为它提供了以下几个特性: 它使你可以快速搜索大量数据。 对于常见的聚合操作,它提供对大数据的实时分析。 使用 Elasticsearch 聚合比使用 Spark 聚合更容易。 如果你需要转向快速数据解…

Tags: , ,