在 Elastic Agent 中为 Logstash 输出配置 SSL/TLS

要将数据从 Elastic Agent 安全地发送到 Logstash,你需要配置传输层安全性 (TLS)。 使用 TLS 可确保你的 Elastic Agent 将加密数据发送到受信任的 Logstash 服务器,并且你的 Logstash 服务器从受信任的 Elastic Agent 客户端接收数据。

先决条件

  • 确保你的订阅级别支持输出到 Logstash。
  • 在 Windows 上,将队列服务器的端口 8220 和 Logstash 的端口 5044 添加到 Windows 高级防火墙的入站端口规则。
  • 如果你要连接到自托管的 Elasticsearch 集群,则需要用于签署 Elasticsearch 集群 HTTP 层证书的 CA 证书。 有关更多信息,请参阅 Elasticsearch 安全文档。

生成自定义证书和私钥

你可以使用通常使用的任何过程来生成 PEM 格式的证书。 此处显示的示例使用 Elasticsearch 提供的 certutil 工具。

提示:certutil 工具在 Elastic Cloud 上不可用,但你仍然可以使用它为 Elastic Agent 到 Logstash 连接生成证书。 只需下载 Elasticsearch 包,将其解压到本地目录,然后运行 elasticsearch-certutil 命令。 无需启动 Elasticsearch!

1. 生成证书颁发机构 (CA)。 如果你想使用现有的 CA,请跳过此步骤。

./bin/elasticsearch-certutil ca --pem

此命令创建一个 zip 文件,其中包含 CA 证书和用于签署证书的密钥。 解压 zip 文件:

2. 生成由你的 CA 签名的客户端 SSL 证书。 例如:

./bin/elasticsearch-certutil cert \
  --name client \
  --ca-cert /path/to/ca/ca.crt \
  --ca-key /path/to/ca/ca.key \
  --pem

解压 zip 文件:

3. 生成由你的 CA 签名的 Logstash SSL 证书。 例如:

./bin/elasticsearch-certutil cert \
  --name logstash \
  --ca-cert /path/to/ca/ca.crt \
  --ca-key /path/to/ca/ca.key \
  --dns your.host.name.here \
  --ip 192.0.2.1 \
  --pem

解压 zip 文件:

4. 将 Logstash 密钥转换为 pkcs8。 例如,在 Linux 上运行:

openssl pkcs8 -inform PEM -in logstash.key -topk8 -nocrypt -outform PEM -out logstash.pkcs8.key

将这些文件存储在安全的位置。

配置 Logstash 管道

提示:如果你已经创建了 Logstash elastic-agent-pipeline.conf 管道并将其添加到 pipelines.yml,请跳到示例配置并根据需要修改管道配置。

在 Logstash 配置目录中,打开 pipelines.yml 文件并添加以下配置。 替换你的文件的路径。

- pipeline.id: elastic-agent-pipeline
  path.config: "/etc/path/to/elastic-agent-pipeline.conf"

在 elastic-agent-pipeline.conf 文件中,添加管道配置。 请注意,Elastic Cloud 上的 Elasticsearch 服务所需的配置与自管理 Elasticsearch 集群不同。 如果你复制了 Fleet 中显示的配置,请根据需要进行调整。

Elasticsearch 服务示例:

elastic-agent-pipeline.conf

input {
  elastic_agent {
    port => 5044
    ssl => true
    ssl_certificate_authorities => ["/path/to/ca.crt"]
    ssl_certificate => "/path/to/logstash.crt"
    ssl_key => "/path/to/logstash.pkcs8.key"
    ssl_verify_mode => "force_peer"
  }
}

output {
  elasticsearch {
    cloud_id => "xxxx:xxxxxxxxxxxxxxxxxxxxxxxxxxxxx=" 
    api_key => "xxxx:xxxx" 
    data_stream => true
    ssl => true 
  }
}
  • 使用 Elastic Cloud 中的部署页面上显示的 cloud_id。
  • 在 Fleet 中,你可以在添加 Logstash 输出时生成此 API 密钥。
  • Elasticsearch Service 使用标准的公共信任证书,因此无需在此处指定其他 SSL 设置。

自托管的 Elasticsearch 集群示例:

elastic-agent-pipeline.conf

input {
  elastic_agent {
    port => 5044
    ssl => true
    ssl_certificate_authorities => ["/path/to/ca.crt"]
    ssl_certificate => "/path/to/logstash.crt"
    ssl_key => "/path/to/logstash.pkcs8.key"
    ssl_verify_mode => "force_peer"
  }
}

output {
  elasticsearch {
    hosts => "https://xxxx:9200"
    api_key => "xxxx:xxxx"
    data_stream => true
    ssl => true
    cacert => "/path/to/http_ca.crt" 
  }
}
  • 使用为 Elasticsearch 生成的证书。

要了解有关 Logstash 配置的更多信息,请参阅:

  • Elastic Agent 输入插件
  • Elasticsearch 输出插件
  • 保护你与 Elasticsearch 的连接

完成管道配置后,重新启动 Logstash:

bin/logstash

将 Logstash 输出添加到 Fleet

本节介绍如何在 Fleet 中添加 Logstash 输出并配置 SSL 设置。 如果你独立运行 Elastic Agent,请参阅 Logstash 输出配置文档。你也可以阅读文章 “Observability:如何把 Elastic Agent 采集的数据输入到 Logstash 并最终写入到 Elasticsearch”。

  1. 在 Kibana 中,转到 Fleet > Settings
  2. Output 下,单击 Add output。 如果你一直在 Fleet 中执行 Logstash 步骤,那么你可能已经位于此页面上。
  3. 指定输出的名称。
  4. 对于 Type,选择 Logstash
  5. 在 Logstash 主机下,指定代理将用于连接 Logstash 的主机和端口。 使用格式 host:port。格式有点类似 mylogstashhost:5044。参考链接
  6. 在  Server SSL certificate authorities 字段中,粘贴你之前生成的 ca.crt 文件的全部内容。
  7. 在 Client SSL certificate 字段中,粘贴你之前生成的 client.crt 文件的全部内容。
  8. 在 Client SSL certificate key 字段中,粘贴你之前生成的 client.key 文件的全部内容。

完成后,保存并应用设置。

在代理策略中选择 Logstash 输出

Logstash 现在正在侦听来自 Elastic Agent 的事件,但事件尚未流入 Elasticsearch。 你需要在代理策略中选择 Logstash 输出。 你可以编辑现有策略或创建新策略:

1)在 Kibana 中,转到 Fleet > Agent policies,然后创建新的代理策略或单击现有策略进行编辑:

  • 要更改新策略中的输出设置,请单击 Create agent policy 并展开 Advanced options
  • 要更改现有策略中的输出设置,请单击该策略进行编辑,然后单击 Settings

2)设置 Output for integrations  及(可选)Output for agent monitoring 以使用你之前创建的 Logstash 输出。 你可能需要向下滚动才能看到这些选项:

3)保存你的更改。

任何在 agent policy 中注册的 Elastic Agent 都将开始通过 Logstash 向 Elasticsearch 发送数据。 如果你没有在 agent policy 中注册任何已安装的 Elastic Agent,请立即执行此操作。

Elastic Agent 更新到新策略并通过安全连接连接到 Logstash 时可能会出现轻微延迟。

测试连接

要确保 Logstash 正在发送数据,请从运行 Logstash 的主机运行以下命令:

curl -XGET localhost:9600/_node/stats/events

该请求应返回有关输入和输出事件数量的统计信息。 如果这些值为 0,请检查 Elastic Agent 日志是否存在问题。

当数据流式传输到 Elasticsearch 时,转到 Observability 并单击指标以查看有关系统的 Metrics

更多阅读:Observability:如何把 Elastic Agent 采集的数据输入到 Logstash 并最终写入到 Elasticsearch


http://www.niftyadmin.cn/n/5361568.html

相关文章

pip安装tf-gpu=2.4的bug解决方案

背景:在centos7.9服务器上,v100单卡,cuda-11.7,驱动也是匹配的,安装torch不费劲,但是tf-gpu就是不行,conda安装失败,只有pip安装,然而pip失败。woc conda安装失败: conda install tensorflow-gpu==2.4 Collecting package metadata (current_repodata.json): done…

Flutter 各种Demo效果合集

Flutter 各种Demo实现效果: github:GitHub - PangHaHa12138/FlutterDemo: Flutter 各种Demo效果合集 1:2种 仿朋友圈 效果,顶部拉伸 和 不拉伸 2:仿抖音上下滑动视频播放 3:视频直播(使用的电视台的m3u…

YOLO部署实战(2):使用OpenCV优化视频转图片流程并设置帧数

在计算机视觉和图像处理领域,OpenCV是一个强大的开源库,它为处理图像和视频提供了丰富的工具和功能。本文将介绍如何使用OpenCV将视频文件转换为一系列图片,并演示如何通过设置转换的帧数来优化这一过程。 1 Win10配置OpenCV 在Windows操作系统上安装OpenCV可以通过以下步…

wsl + vscode 离线配置 ERROR: Faild to download https://update.code.visualstudio.com

内网情况配置 wsl 和 vscode。在wsl中下载不了 vscode 的核心。 报错: ERROR: Faild to download https://update.code.visualstudio.com/commit:8b3775030ed1a69b13e4f4c628c612102e30a681/server-linux-x64/stable 很多情况下是没有现成的VS Code Server程序的&…

基于springboot校园二手书交易管理系统源码和论文

在Internet高速发展的今天,我们生活的各个领域都涉及到计算机的应用,其中包括乐校园二手书交易管理系统的网络应用,在外国二手书交易管理系统已经是很普遍的方式,不过国内的管理系统可能还处于起步阶段。乐校园二手书交易管理系统…

【国产MCU】-CH32V307-通用DMA控制器及使用

通用DMA控制器及使用 文章目录 通用DMA控制器及使用1、通用DMA控制器介绍2、DMA驱动API介绍3、DMA使用实例直接存储器访问控制器(DMA)提供在外设和存储器之间或存储器和存储器之间的高速数据传输方式,无须CPU 干预,数据可以通过DMA 快速地移动,以节省CPU 的资源来做其他操…

海康威视有插件、无插件播放;webrtc直播;西瓜视频播放器;mpegts.js直播;flvjs直播

Notes 视频播放的几种方式 一、Video mp4链接直接播放 二、海康威视3.3插件版直播、云台控制,资源下载地址 index.html引入hk文件中的js文件双击HCWebSDKPlugin.exe安装插件前端参照文件夹hkCamera中的示例代码 三、海康威视3.2无插件版直播,资源下…

PPT录屏功能在哪?一键快速找到它!

在现代办公环境中,ppt的录屏功能日益受到关注,它不仅能帮助我们记录演示文稿的播放过程,还能将操作过程、游戏等内容完美录制下来。可是很多人不知道ppt录屏功能在哪,本文将为您介绍ppt录屏的打开方法,以帮助读者更好地…