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

作者:来自 Elastic Rossall Sandford

通过使用集成过滤插件,将数据处理操作从你的 Elastic 部署卸载到 Logstash。

Logstash 的 Elastic 集成过滤插件允许你在 Logstash 内执行摄取管道来处理来自 Elastic 集成的数据,然后再将数据转发到 Elastic。

为什么要使用它?

这种方法的优势在于,它可以将数据处理操作从你的 Elastic 部署中卸载到 Logstash,使你可以灵活决定处理数据的位置。

此外,使用 Logstash 作为数据进入 Elastic 之前的最终路由,可以避免为每个 Agent 或 Beats 实例单独开放端口和设置不同的防火墙规则,因为 Logstash 可以聚合所有这些组件的输出。

先决条件

你需要在服务器上运行一个 Elastic Agent,并在其代理策略中包含一个或多个集成。如果需要安装 Elastic Agent,可以按照Elastic 集成过滤插件进行操作。

步骤

我们将执行以下操作:

  1. 安装 Logstash,但在所有步骤完成之前不会运行它。

  2. 在 Logstash 服务器上生成自定义证书和密钥,以启用 Fleet 服务器与 Logstash 之间的安全通信。

  3. 配置 Fleet 以添加 Logstash 输出。

  4. 设置 Logstash,包括一个自定义管道,该管道接收来自 Elastic Agent 的输入,使用集成过滤插件,并最终将事件转发到 Elastic。

  5. 启动 Logstash。

  6. 更新代理策略以使用新的 Logstash 输出。

安装 Logstash

请按照此指南在你的服务器上安装 Logstash。

在 Logstash 服务器上设置 SSL/TLS

请按照此指南创建自定义证书和密钥,以保护 Fleet 与 Logstash 之间的输出连接。在设置 Logstash 的自定义管道文件之前,我们需要先完成此步骤,因为在配置中将引用部分证书的值。

按照指南,我下载了 Elasticsearch,以便使用其中包含的 certutil 工具,并解压了内容。

在 Kibana 中为 Fleet 添加 Logstash 输出

在获得证书和密钥后,我们可以在 Kibana 内完成设置 Logstash 输出的必要步骤,以供 Fleet 使用。但暂时不要在代理策略上设置 Logstash 输出,因为我们首先需要在 Logstash 中配置一个自定义管道。

为 Logstash 设置自定义管道

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

我们的自定义 pipeline.yml 文件将从 Elastic Agent 输入插件开始,相关指南可在此处找到。

接下来,我们将添加**集成过滤插件,然后根据数据是否要进入 托管云部署无服务器项目**,配置不同的 Elastic Cloud 输出。

完整的 pipeline.yml 文件应类似于以下内容:

ini 复制代码
`

1.  input {
2.    elastic_agent {
3.      port => 5044
4.      ssl_enabled => true
5.      ssl_certificate_authorities => ["/pathtoca/ca.crt"]
6.      ssl_certificate => "/pathtologstashcrt/logstash.crt"
7.      ssl_key => "/pathtologstashkey/logstash.pkcs8.key"
8.      ssl_client_authentication => "required"
9.    }
10.  }
11.  filter {
12.    elastic_integration{
13.      cloud_id => "Ross_is_Testing:123456"
14.      cloud_auth => "elastic:yourpasswordhere"
15.    }
16.  }
17.  output {
18.      # For cloud hosted deployments
19.      elasticsearch {
20.          cloud_id => "Ross_is_Testing:123456
21.          cloud_auth => "elastic:yourpasswordhere"
22.          data_stream => true
23.          ssl => true
24.          ecs_compatibility => v8
25.      }
26.      # For serverless projects
27.      elasticsearch {
28.          hosts => ["https://projectname.es.us-east-1.aws.elastic.cloud:443"]
29.          api_key => "yourapikey-here"
30.          data_stream => true
31.          ssl => true
32.          ecs_compatibility => v8
33.      }
34.  }



`AI写代码

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

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

我也在使用用户名和密码, 但如果需要, 你 也可以指定一个 API key。

对于无服务器项目, 你 需要使用 你的 Elasticsearch 端点和 API key 来连接 Logstash, 具体请参考此处的文档。 你 可以在云管理控制台的项目管理页面获取 Elasticsearch 端点:

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

python 复制代码
`

1.  # This file is where you define your pipelines. You can define multiple.
2.  # For more information on multiple pipelines, see the documentation:
3.  #   https://www.elastic.co/guide/en/logstash/current/multiple-pipelines.html
4.  - pipeline.id: fromagent
5.    path.config: "/etc/logstash/conf.d/agent.conf"

`AI写代码

然后, 你 可以启动 Logstash。 由于尚未更新 Elastic Agent 策略以使用 Logstash 输出, 目前不会有事件通过 Logstash。

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

在 Logstash 运行后, 你现在可以在所选的代理策略上设置已配置的 Logstash 输出

完成

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

本帖子中描述的任何功能或特性均由 Elastic 全权决定其发布与时间安排。 任何当前不可用的功能或特性可能不会按时发布, 甚至可能不会发布。

原文:Process data from Elastic integrations with the integration filter plugin in Logstash --- Elastic Observability Labs

相关推荐
Code额4 小时前
Elasticsearch 的搜索功能
elasticsearch·微服务
lilye665 小时前
程序化广告行业(44/89):岗位职责与RTB竞价逻辑深度解析
大数据·elasticsearch·flask·memcache
致良知云5 小时前
elasticsearch-7.17.16阿里云部署
elasticsearch·阿里云·jenkins
被放养的研究生16 小时前
Git和GitCode使用(从Git安装到上传项目一条龙)
git·elasticsearch·gitcode
java技术小馆1 天前
ES的文档更新机制
大数据·elasticsearch·搜索引擎
Elastic 中国社区官方博客1 天前
如何自动化同义词并使用我们的 Synonyms API 进行上传
大数据·运维·数据库·人工智能·elasticsearch·搜索引擎·自动化
Elasticsearch1 天前
将代理连接到 Elasticsearch 使用模型上下文协议
elasticsearch
烛.照1031 天前
SpringBoot整合Easy-Es
java·spring boot·elasticsearch
2401_897930062 天前
docker下安装 es 设置账号密码
elasticsearch·docker·jenkins