正在加载

为 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!

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

    ./bin/elasticsearch-certutil ca --pem
    

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

    Screen capture of a folder called ca that contains two files:ca.crt and ca.key
  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 文件。

    Screen capture of a folder called client that contains two files:client.crt and client.key
  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 文件。

    Screen capture of a folder called logstash that contains two files:logstash.crt and logstash.key
  4. 将 Logstash 密钥转换为 pkcs8 格式。例如,在 Linux 上运行:

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

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

提示

如果您已经创建了 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 Hosted 所需的配置与自管 Elasticsearch 集群的配置不同。如果您复制了 Fleet 中显示的配置,请根据需要进行调整。

Elastic Cloud Hosted 示例

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
  }
}
  1. 使用 Elastic Cloud 中部署页面上显示的 cloud_id
  2. 在 Fleet 中,您在添加 Logstash 输出时可以生成此 API 密钥。
  3. Elastic Cloud Hosted 使用标准的公开可信证书,因此无需在此处指定其他 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"
  }
}
  1. 使用为 Elasticsearch 生成的证书。

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

配置完管道后,重启 Logstash。

bin/logstash

本节介绍如何在 Fleet 中添加 Logstash 输出并配置 SSL 设置。如果您运行的是独立的 Elastic Agent,请参阅Logstash 输出配置文档。

  1. 在 Kibana 中,前往Fleet > Settings
  2. Outputs下,点击Add output。如果您一直在遵循 Fleet 中 Logstash 的步骤,您可能已经在此页面上。
  3. 为输出指定一个名称。
  4. 对于类型,选择Logstash
  5. Logstash hosts下,指定您的代理将用于连接到 Logstash 的主机和端口。使用 host:port 格式。
  6. Server SSL certificate authorities字段中,粘贴您之前生成的 ca.crt 文件的全部内容。
  7. Client SSL certificate字段中,粘贴您之前生成的 client.crt 文件的全部内容。
  8. Client SSL certificate key字段中,粘贴您之前生成的 client.key 文件的全部内容。
Screen capture of a folder called `logstash` that contains two files:logstash.crt and logstash.key

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

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 输出。您可能需要向下滚动才能看到这些选项:

    Screen capture showing the {{ls}} output policy selected in an agent policy
  3. 保存您的更改。

任何已在该代理策略中注册的 Elastic Agent 都将开始通过 Logstash 向 Elasticsearch 发送数据。如果您还没有已安装的 Elastic Agent 注册到该代理策略,请立即进行注册。

Elastic Agent 更新到新策略并通过安全连接连接到 Logstash 可能稍有延迟。

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

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

该请求应返回事件进出的统计信息。如果这些值为 0,请检查 Elastic Agent 日志以查找问题。

当数据流式传输到 Elasticsearch 后,前往Observability并点击Metrics以查看有关您系统的指标。

© . All rights reserved.