为 Logstash 输出配置 SSL/TLS
编辑为 Logstash 输出配置 SSL/TLS
编辑要安全地将数据从 Elastic Agent 发送到 Logstash,您需要配置传输层安全 (TLS)。使用 TLS 可确保您的 Elastic Agent 向受信任的 Logstash 服务器发送加密数据,并且您的 Logstash 服务器接收来自受信任的 Elastic Agent 客户端的数据。
先决条件
编辑- 确保您的订阅级别支持输出到 Logstash。
- 在 Windows 上,将 Fleet Server 的 8220 端口和 Logstash 的 5044 端口添加到 Windows 高级防火墙的入站端口规则中。
- 如果您连接到自托管 Elasticsearch 集群,则需要用于签署 Elasticsearch 集群 HTTP 层证书的 CA 证书。有关更多信息,请参阅Elasticsearch 安全文档。
生成自定义证书和私钥
编辑您可以使用通常用于生成 PEM 格式证书的任何流程。此处显示的示例使用 Elasticsearch 提供的certutil
工具。
certutil
工具在 Elastic Cloud 上不可用,但您仍然可以使用它为 Elastic Agent 到 Logstash 的连接生成证书。只需下载 Elasticsearch 软件包,将其解压缩到本地目录,然后运行elasticsearch-certutil
命令即可。无需启动 Elasticsearch!
-
生成证书颁发机构 (CA)。如果您要使用现有的 CA,请跳过此步骤。
./bin/elasticsearch-certutil ca --pem
此命令会创建一个 zip 文件,其中包含您将用于签署证书的 CA 证书和密钥。解压缩 zip 文件
-
生成由您的 CA 签名的客户端 SSL 证书。例如
./bin/elasticsearch-certutil cert \ --name client \ --ca-cert /path/to/ca/ca.crt \ --ca-key /path/to/ca/ca.key \ --pem
解压缩 zip 文件
-
生成由您的 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 文件
-
将 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 服务示例
input { elastic_agent { port => 5044 ssl_enabled => true ssl_certificate_authorities => ["/path/to/ca.crt"] ssl_certificate => "/path/to/logstash.crt" ssl_key => "/path/to/logstash.pkcs8.key" ssl_client_authentication => "required" } } output { elasticsearch { cloud_id => "xxxx:xxxxxxxxxxxxxxxxxxxxxxxxxxxxx=" api_key => "xxxx:xxxx" data_stream => true ssl => true } }
使用您在 Elastic Cloud 部署页面上显示的 |
|
在 Fleet 中,您可以在添加 Logstash 输出时生成此 API 密钥。 |
|
Elasticsearch 服务使用标准的公共可信证书,因此无需在此处指定其他 SSL 设置。 |
自托管 Elasticsearch 集群示例
input { elastic_agent { port => 5044 ssl_enabled => true ssl_certificate_authorities => ["/path/to/ca.crt"] ssl_certificate => "/path/to/logstash.crt" ssl_key => "/path/to/logstash.pkcs8.key" ssl_client_authentication => "required" } } output { elasticsearch { hosts => "https://xxxx:9200" api_key => "xxxx:xxxx" data_stream => true ssl => true cacert => "/path/to/http_ca.crt" } }
要了解有关 Logstash 配置的更多信息,请参阅
配置完管道后,重新启动 Logstash
bin/logstash
向 Fleet 添加 Logstash 输出
编辑本节介绍如何在 Fleet 中添加 Logstash 输出和配置 SSL 设置。如果您单独运行 Elastic Agent,请参阅Logstash 输出配置文档。
- 在 Kibana 中,转到Fleet > 设置。
- 在输出下,单击添加输出。如果您一直在按照 Fleet 中的 Logstash 步骤操作,您可能已经在该页面上了。
- 指定输出的名称。
- 对于类型,选择Logstash。
- 在Logstash 主机下,指定您的代理将用于连接到 Logstash 的主机和端口。使用
host:port
格式。 - 在服务器 SSL 证书颁发机构字段中,粘贴您之前生成的
ca.crt
文件的全部内容。 - 在客户端 SSL 证书字段中,粘贴您之前生成的
client.crt
文件的全部内容。 - 在客户端 SSL 证书密钥字段中,粘贴您之前生成的
client.key
文件的全部内容。
完成后,保存并应用设置。
在代理策略中选择 Logstash 输出
编辑Logstash 现在正在侦听来自 Elastic Agent 的事件,但事件尚未流入 Elasticsearch。您需要在代理策略中选择 Logstash 输出。您可以编辑现有策略或创建新的策略
-
在 Kibana 中,转到Fleet > 代理策略,然后创建新的代理策略或单击现有策略进行编辑
- 要在新策略中更改输出设置,请单击创建代理策略并展开高级选项。
- 要在现有策略中更改输出设置,请单击该策略进行编辑,然后单击设置。
-
将集成输出和(可选)代理监控输出设置为使用您之前创建的 Logstash 输出。您可能需要向下滚动才能看到这些选项
- 保存您的更改。
注册到代理策略中的任何 Elastic Agent 都将开始通过 Logstash 将数据发送到 Elasticsearch。如果您没有注册到代理策略中的任何已安装的 Elastic Agent,请立即执行此操作。
Elastic Agent 更新到新策略并通过安全连接连接到 Logstash 时,可能会稍有延迟。
测试连接
编辑要确保 Logstash 正在发送数据,请从运行 Logstash 的主机运行以下命令
curl -XGET localhost:9600/_node/stats/events
该请求应返回有关输入和输出事件数量的统计信息。如果这些值为 0,请检查 Elastic Agent 日志以查找问题。
当数据流式传输到 Elasticsearch 时,转到可观察性并单击指标以查看有关您的系统的指标。