前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >使用 Logstash 中的集成过滤插件处理来自 Elastic 集成的数据

使用 Logstash 中的集成过滤插件处理来自 Elastic 集成的数据

原创
作者头像
点火三周
发布2025-05-20 10:12:32
发布2025-05-20 10:12:32
13710
代码可运行
举报
文章被收录于专栏:Elastic Stack专栏Elastic Stack专栏
运行总次数:0
代码可运行

Elastic Integration 过滤插件是为 Logstash 设计的,它允许你在数据进入 Elastic 之前,通过执行 Logstash 中的处理管道来处理来自 Elastic 集成的数据。

为什么要使用这个插件?

这种方法的优势在于可以将数据处理操作从 Elastic 部署中分离出来,转移到 Logstash 上进行处理,从而为你提供了更灵活的数据处理选择。同时,Logstash 作为数据进入 Elastic 前的最后一站,可以汇总所有来自不同代理或 Beats 实例的输出,避免为每个实例单独开放端口和设置防火墙规则。

前提条件

确保你已经在服务器上运行了带有一个或多个集成的 Elastic agent。如果需要安装 Elastic agent,可以参考这里的指南

操作步骤

我们将进行以下操作:

  • 安装 Logstash,但在完成所有步骤之前不启动它
  • 在 Logstash 服务器上生成自定义证书和密钥,以便在 Fleet 服务器和 Logstash 之间建立安全通信
  • 配置 Fleet 以添加 Logstash 输出
  • 设置 Logstash,包括一个接收来自 Elastic agent 输入的自定义管道,使用集成过滤插件,最终将事件转发到 Elastic
  • 启动 Logstash
  • 更新代理策略以使用新的 Logstash 输出

安装 Logstash

请使用这个指南来在你的服务器上安装 Logstash。

在 Logstash 服务器上设置 SSL/TLS

使用这个指南来创建用于保护 Logstash 输出连接的自定义证书和密钥。这些证书和密钥将由 Fleet 使用。在设置 Logstash 的自定义管道文件之前,需要先完成这一步,因为我们将在配置中引用这些证书的值。

根据指南,我下载了 Elasticsearch,以便使用其中包含的 certutil 工具,并提取了内容。

在 Kibana 中为 Fleet 添加 Logstash 输出

有了证书和密钥后,我们可以在 Kibana 中完成设置 Fleet 的 Logstash 输出的步骤。但还不要在代理策略中设置 Logstash 输出,因为我们需要先在 Logstash 中配置自定义管道。

为 Logstash 设置自定义管道

我们需要添加一个自定义管道 yml 文件,其中将包括 Elastic agent 的输入和集成过滤插件。Logstash 管道的典型定义如下图所示:

基本 Logstash 管道
基本 Logstash 管道

我们的自定义管道 yml 文件将从 Elastic agent 的 input 插件开始,相关指南在这里

接下来,我们使用集成过滤插件,然后是一个输出到 Elastic Cloud 的 output,根据你是向托管云部署还是无服务器项目进行数据摄取,配置会有所不同。

完整的文件应该如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
input {
  elastic_agent {
    port => 5044
    ssl_enabled => true
    ssl_certificate_authorities => ["/pathtoca/ca.crt"]
    ssl_certificate => "/pathtologstashcrt/logstash.crt"
    ssl_key => "/pathtologstashkey/logstash.pkcs8.key"
    ssl_client_authentication => "required"
  }
}
filter {
  elastic_integration {
    cloud_id => "Ross_is_Testing:123456"
    cloud_auth => "elastic:yourpasswordhere"
  }
}
output {
    # 对于云托管部署
    elasticsearch {
        cloud_id => "Ross_is_Testing:123456"
        cloud_auth => "elastic:yourpasswordhere"
        data_stream => true
        ssl => true
        ecs_compatibility => v8
    }
    # 对于无服务器项目
    elasticsearch {
        hosts => ["https://projectname.es.us-east-1.aws.elastic.cloud:443"]
        api_key => "yourapikey-here"
        data_stream => true
        ssl => true
        ecs_compatibility => v8
    }
}

上述输出部分的语法是有效的,你可以指定多个输出!

对于云托管部署,可以使用部署的 CloudId 进行身份验证,这可以从云管理控制台的部署概览页面获得:

部署概览页面
部署概览页面

我还在使用用户名和密码,不过你也可以选择指定一个 API 密钥。

对于无服务器项目,你需要使用 Elasticsearch 的端点和 API 密钥来连接 Logstash,具体方法见这里。你可以从云管理控制台的项目管理页面获得 Elasticsearch 的端点:

无服务器项目端点
无服务器项目端点

确保 Logstash 的主 pipelines.yml 文件也包括对自定义管道文件的引用:

代码语言:javascript
代码运行次数:0
运行
复制
# 此文件用于定义你的管道。你可以定义多个管道。
# 有关多个管道的更多信息,请参阅文档:
#   https://www.elastic.co/guide/en/logstash/current/multiple-pipelines.html
- pipeline.id: fromagent
  path.config: "/etc/logstash/conf.d/agent.conf"

然后我们可以启动 Logstash。由于我们还没有更新 Elastic agent 策略来使用 Logstash 输出,目前没有事件会通过 Logstash。

更新代理策略以使用我们的 Logstash 输出

Logstash 启动后,我们可以在所选的代理策略中设置配置好的 Logstash 输出

完成

来自选定代理策略的集成事件将通过 Logstash 发送,并在 Logstash 内运行相关的摄取管道以处理数据,然后再发送到 Elasticsearch。

本文所述的任何功能或特性发布的时间和方式完全由 Elastic 单方面决定。目前尚未提供的任何功能或特性可能会被推迟或取消。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 为什么要使用这个插件?
  • 前提条件
  • 操作步骤
  • 安装 Logstash
  • 在 Logstash 服务器上设置 SSL/TLS
  • 在 Kibana 中为 Fleet 添加 Logstash 输出
  • 为 Logstash 设置自定义管道
  • 更新代理策略以使用我们的 Logstash 输出
  • 完成
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档