返回

无畏复杂,以 ingest pipeline 的“灯塔”指引日志格式化解析

后端

在浩瀚的数据汪洋中,日志宛若一盏盏微弱的灯塔,指引着我们通向系统的脉搏。作为系统运行过程中的记录者,日志承载着宝贵的历史信息,是系统故障排除、性能优化和安全审计的可靠依据。然而,这些日志数据往往处于碎片化、异构化的状态,想要从中提取有意义的信息,犹如大海捞针。

Elasticsearch 的 ingest pipeline 便如同一位得力助手,帮助我们轻松地解析和格式化日志数据,让这些宝贵的历史信息焕发生机。在本教程中,你将了解如何使用 ingest pipeline 来处理来自不同来源和格式的日志数据,将其转化为可被搜索和分析的结构化数据,助力你洞悉系统运行状况、做出明智决策。

摄取管道基础知识

在正式开始之前,让我们先对摄取管道有个基本的了解。摄取管道是 Elasticsearch 中的一个功能,用于在将数据索引到 Elasticsearch 之前对其进行处理。这可以包括各种各样的操作,如解析、转换、丰富和验证。

你可以使用摄取管道来完成各种各样的任务,例如:

  • 将来自不同来源的数据转换为一致的格式
  • 从数据中提取有价值的信息
  • 验证数据并确保其完整性
  • 过滤掉不需要的数据

解析通用日志格式

通用日志格式(CLF)是一种广泛用于记录服务器请求的日志格式。它包含了诸如时间戳、请求方法、请求 URL、HTTP 状态代码、响应大小和引荐者等信息。以下是一个 CLF 日志的示例:

127.0.0.1 - - [01/Jan/2023:00:00:00 +0000] "GET /index.html HTTP/1.1" 200 1024 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.5359.125 Safari/537.36 Edg/108.0.1462.54"

为了能够在 Elasticsearch 中对 CLF 日志进行搜索和分析,我们需要将其解析为结构化的数据。我们可以通过创建一个摄取管道来实现这一目标。

创建摄取管道

要创建摄取管道,你可以使用 Elasticsearch API 或通过 Kibana 图形用户界面。在本教程中,我们将使用 Kibana 来创建摄取管道。

  1. 打开 Kibana 并转到“管道”选项卡。
  2. 点击“创建管道”按钮。
  3. 在“管道名称”字段中输入一个名称,例如“clf-pipeline”。
  4. 在“管道定义”字段中输入以下内容:
{
  "processors": [
    {
      "grok": {
        "field": "message",
        "patterns": [
          "%{TIMESTAMP_ISO8601:timestamp}",
          "%{IP:clientip}",
          "%{WORD:ident}",
          "%{USER:user}",
          "%{NOTSPACE:request}",
          "%{NUMBER:status}",
          "%{NUMBER:bytes}",
          "%{QS:referrer}",
          "%{GREEDYDATA:agent}"
        ]
      }
    }
  ]
}
  1. 点击“创建管道”按钮。

这个摄取管道将把 CLF 日志解析为以下字段:

  • timestamp:时间戳
  • clientip:客户端 IP 地址
  • ident:用户名
  • user:用户
  • request:请求
  • status:HTTP 状态代码
  • bytes:响应大小
  • referrer:引荐者
  • agent:用户代理

应用摄取管道

现在我们已经创建了摄取管道,我们需要将其应用到索引。为此,请按照以下步骤操作:

  1. 打开 Kibana 并转到“索引模式”选项卡。
  2. 选择要应用摄取管道的索引模式。
  3. 在“摄取管道”字段中,选择“clf-pipeline”。
  4. 点击“保存”按钮。

摄取管道现在将应用于索引模式。所有进入该索引模式的新文档都将被解析并格式化为结构化的数据。

搜索和分析日志数据

现在我们已经解析了 CLF 日志,就可以开始搜索和分析日志数据了。你可以使用 Kibana 来执行此操作。

搜索日志数据

要搜索日志数据,请按照以下步骤操作:

  1. 打开 Kibana 并转到“发现”选项卡。
  2. 选择要搜索的索引模式。
  3. 在搜索字段中输入你的搜索查询。例如,你可以搜索以下内容:
timestamp:[2023-01-01 TO 2023-01-31] AND status:200

这将搜索从 2023 年 1 月 1 日到 2023 年 1 月 31 日之间发生的,并且 HTTP 状态代码为 200 的所有日志条目。

  1. 点击“搜索”按钮。

你的搜索结果将显示在“发现”选项卡中。

分析日志数据

你还可以使用 Kibana 来分析日志数据。例如,你可以创建图表或表格来可视化日志数据。你还可以使用聚合来汇总日志数据。

要创建图表或表格,请按照以下步骤操作:

  1. 打开 Kibana 并转到“可视化”选项卡。
  2. 选择要创建的图表或表格类型。
  3. 将字段拖放到图表或表格中。
  4. 点击“运行”按钮。

你的图表或表格将显示在“可视化”选项卡中。

结论

通过使用 ingest pipeline,你可以轻松地解析和格式化来自不同来源和格式的日志数据。这将使你能够更轻松地搜索和分析日志数据,从而做出更明智的决策。