Link Search Menu Expand Document Documentation Menu

日志分析

OpenSearch Data Prepper 是一种可扩展、可配置且可伸缩的解决方案,用于将日志摄取到 OpenSearch 和 Amazon OpenSearch Service 中。Data Prepper 支持通过 HTTP 源接收来自 Fluent Bit 的日志,并使用 Grok 处理器处理这些日志,然后通过 OpenSearch 接收器将其摄取到 OpenSearch 中。

下图显示了使用 Fluent Bit、Data Prepper 和 OpenSearch 进行日志分析所使用的所有组件。

Log analytics component

在应用程序环境中运行 Fluent Bit。Fluent Bit 可以通过 Kubernetes、Docker 或 Amazon Elastic Container Service (Amazon ECS) 进行容器化。您还可以将 Fluent Bit 作为代理在 Amazon Elastic Compute Cloud (Amazon EC2) 上运行。配置 Fluent Bit HTTP 输出插件以将日志数据导出到 Data Prepper。然后将 Data Prepper 部署为中间组件,并将其配置为将富化的日志数据发送到您的 OpenSearch 集群。从那里,使用 OpenSearch Dashboards 进行更深入的可视化和分析。

日志分析管道

Data Prepper 中的日志分析管道具有极高的可定制性。下图显示了一个简单的管道。

Log analytics component

HTTP 源

HTTP 源接受来自 Fluent Bit 的日志数据。此源接受 JSON 数组格式的日志数据,并支持 TLS/HTTPS 和 HTTP 基本身份验证形式的行业标准加密。

处理器

Data Prepper 1.2 及更高版本附带 Grok 处理器。Grok 处理器是一个非常有用的工具,用于从日志中构建和提取重要字段,使它们更易于查询。

Grok 处理器附带各种 默认模式,这些模式与 Apache 日志或 syslog 等常见日志格式匹配,但它也可以轻松接受适合您特定日志格式的任何自定义模式。

有关 Grok 功能的更多信息,请参阅文档。

接收器

有一个通用接收器将数据写入 OpenSearch 作为目标。OpenSearch 接收器具有与 OpenSearch 集群相关的配置选项,例如端点、SSL/用户名、索引名称、索引模板和索引状态管理。

管道配置

以下部分讨论管道配置。

启用了 SSL 和基本身份验证的示例管道

此示例管道配置为 http-source 启用了 SSL 和基本身份验证。

log-pipeline:
  source:
    http:
      ssl_certificate_file: "/full/path/to/certfile.crt"
      ssl_key_file: "/full/path/to/keyfile.key"
      authentication:
        http_basic:
          username: "myuser"
          password: "mys3cret"
  processor:
    - grok:
        match:
          # This will match logs with a "log" key against the COMMONAPACHELOG pattern (ex: { "log": "actual apache log..." } )
          # You should change this to match what your logs look like. See the grok documenation to get started.
          log: [ "%{COMMONAPACHELOG}" ]
  sink:
    - opensearch:
        hosts: [ "https://:9200" ]
        # Change to your credentials
        username: "admin"
        password: "admin"
        # Add a certificate file if you are accessing an OpenSearch cluster with a self-signed certificate  
        #cert: /path/to/cert
        # If you are connecting to an Amazon OpenSearch Service domain without
        # Fine-Grained Access Control, enable these settings. Comment out the
        # username and password above.
        #aws_sigv4: true
        #aws_region: us-east-1
        # Since we are grok matching for apache logs, it makes sense to send them to an OpenSearch index named apache_logs.
        # You should change this to correspond with how your OpenSearch indexes are set up.
        index: apache_logs

此管道配置是 Apache 日志摄取的示例。请记住,您可以轻松地为自己的自定义日志配置 Grok 处理器。您需要修改 OpenSearch 集群的配置。

以下是您需要进行的主要更改:

  • hosts – 设置为您的主机。
  • index – 将此项更改为您要发送日志的 OpenSearch 索引。
  • username – 提供您的 OpenSearch 用户名。
  • password – 提供您的 OpenSearch 密码。
  • aws_sigv4 – 如果您使用带有 AWS 签名的 Amazon OpenSearch Service,请将其设置为 true。它将使用默认的 AWS 凭证提供程序对请求进行签名。
  • aws_region – 如果您使用带有 AWS 签名的 Amazon OpenSearch Service,请将此值设置为您的集群所在的 AWS 区域。

Fluent Bit

您需要在您的服务环境中运行 Fluent Bit。有关安装说明,请参阅Fluent Bit 入门。确保您可以将Fluent Bit HTTP 输出插件配置到您的 Data Prepper HTTP 源。以下是一个 fluent-bit.conf 示例,它会跟踪名为 test.log 的日志文件,并将其转发到本地运行的 Data Prepper HTTP 源,该源默认在端口 2021 上运行。

请注意,您应该根据 Fluent Bit 和 Data Prepper 的运行方式和位置调整文件 path、输出 HostPort

示例:未启用 SSL 和基本身份验证的 Fluent Bit 文件

以下是 HTTP 源上未启用 SSL 和基本身份验证的 fluent-bit.conf 文件示例

[INPUT]
  name                  tail
  refresh_interval      5
  path                  test.log
  read_from_head        true

[OUTPUT]
  Name http
  Match *
  Host localhost
  Port 2021
  URI /log/ingest
  Format json

如果您的 HTTP 源启用了 SSL 和基本身份验证,您需要将 http_Userhttp_Passwdtls.crt_filetls.key_file 的详细信息添加到 fluent-bit.conf 文件中,如以下示例所示。

示例:启用 SSL 和基本身份验证的 Fluent Bit 文件

以下是 HTTP 源上启用了 SSL 和基本身份验证的 fluent-bit.conf 文件示例

[INPUT]
  name                  tail
  refresh_interval      5
  path                  test.log
  read_from_head        true

[OUTPUT]
  Name http
  Match *
  Host localhost
  http_User myuser
  http_Passwd mys3cret
  tls On
  tls.crt_file /full/path/to/certfile.crt
  tls.key_file /full/path/to/keyfile.key
  Port 2021
  URI /log/ingest
  Format json

后续步骤

有关通过 Docker 运行的 FluentBit -> Data Prepper -> OpenSearch Apache 日志摄取的具体示例,请参阅Data Prepper 日志摄取演示指南

未来,Data Prepper 将提供更多的源和处理器,从而实现更复杂的日志分析管道。请查看Data Prepper 项目路线图,了解即将推出的功能。

如果您的日志分析工作流中需要包含目前不在路线图上的特定源、处理器或接收器,请通过创建 GitHub issue 告知我们。此外,如果您有兴趣为 Data Prepper 做出贡献,请参阅我们的贡献指南以及我们的开发者指南插件开发指南