使用集成过滤插件在 Logstash 中处理来自 Elastic 集成的数据
作者:来自 Elastic Rossall Sandford
通过使用集成过滤插件,将数据处理操作从你的 Elastic 部署卸载到 Logstash。
Logstash 的 Elastic 集成过滤插件允许你在 Logstash 内执行摄取管道来处理来自 Elastic 集成的数据,然后再将数据转发到 Elastic。
为什么要使用它?
这种方法的优势在于,它可以将数据处理操作从你的 Elastic 部署中卸载到 Logstash,使你可以灵活决定处理数据的位置。
此外,使用 Logstash 作为数据进入 Elastic 之前的最终路由,可以避免为每个 Agent 或 Beats 实例单独开放端口和设置不同的防火墙规则,因为 Logstash 可以聚合所有这些组件的输出。
先决条件
你需要在服务器上运行一个 Elastic Agent,并在其代理策略中包含一个或多个集成。如果需要安装 Elastic Agent,可以按照Elastic 集成过滤插件进行操作。
步骤
我们将执行以下操作:
-
安装 Logstash,但在所有步骤完成之前不会运行它。
-
在 Logstash 服务器上生成自定义证书和密钥,以启用 Fleet 服务器与 Logstash 之间的安全通信。
-
配置 Fleet 以添加 Logstash 输出。
-
设置 Logstash,包括一个自定义管道,该管道接收来自 Elastic Agent 的输入,使用集成过滤插件,并最终将事件转发到 Elastic。
-
启动 Logstash。
-
更新代理策略以使用新的 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
文件应类似于以下内容:
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 {
# For cloud hosted deployments
elasticsearch {
cloud_id => "Ross_is_Testing:123456
cloud_auth => "elastic:yourpasswordhere"
data_stream => true
ssl => true
ecs_compatibility => v8
}
# For serverless projects
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 key。
对于无服务器项目, 你 需要使用 你的 Elasticsearch 端点和 API key 来连接 Logstash, 具体请参考此处的文档。 你 可以在云管理控制台的项目管理页面获取 Elasticsearch 端点:
确保 Logstash 的主 pipelines.yml
文件也包含对 你的 自定义管道文件的引用:
# This file is where you define your pipelines. You can define multiple.
# For more information on multiple pipelines, see the documentation:
# 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 内运行相关的摄取管道来处理数据, 然后再发送到 Elastic Cloud。
本帖子中描述的任何功能或特性均由 Elastic 全权决定其发布与时间安排。 任何当前不可用的功能或特性可能不会按时发布, 甚至可能不会发布。
原文:Process data from Elastic integrations with the integration filter plugin in Logstash — Elastic Observability Labs