配置 Elasticsearch 输出
Elastic Stack
此文档仅适用于 APM Server 二进制文件用户。由 Fleet 管理的用户应参阅配置 Elasticsearch 输出。
Elasticsearch 输出使用 Elasticsearch HTTP API 将事件直接发送到 Elasticsearch。
配置示例
output.elasticsearch:
hosts: ["https://myEShost:9200"]
- 要启用 SSL,请将
https
添加到 hosts 下定义的所有 URL。
通过 elasticsearch
输出将数据发送到安全集群时,APM Server 可以使用以下任何一种身份验证方法
- 基本身份验证凭据(用户名和密码)。
- 基于令牌(API 密钥)的身份验证。
- 公钥基础设施 (PKI) 证书。
基本身份验证
output.elasticsearch:
hosts: ["https://myEShost:9200"]
username: "apm_writer"
password: "YOUR_PASSWORD"
API 密钥身份验证
output.elasticsearch:
hosts: ["https://myEShost:9200"]
api_key: "ZCV7VnwBgnX0T19fN8Qe:KnR6yE41RrSowb0kQ0HWoA"
- 您必须将 API 密钥配置为 Beats。此配置当前不支持 Base64 编码的 API 密钥。有关如何创建和配置兼容 API 密钥的详细信息,请参阅创建用于写入事件的 API 密钥。
PKI 证书身份验证
output.elasticsearch:
hosts: ["https://myEShost:9200"]
ssl.certificate: "/etc/pki/client/cert.pem"
ssl.key: "/etc/pki/client/cert.key"
有关每种身份验证方法的详细信息,请参阅与 Elasticsearch 的安全通信。
此输出适用于所有兼容版本的 Elasticsearch。请参阅Elastic 支持矩阵。
您可以在 apm-server.yml
配置文件的 elasticsearch
部分中指定以下选项
enabled 配置是一个布尔值设置,用于启用或禁用输出。如果设置为 false
,则输出将被禁用。
默认值为 true
。
要连接的 Elasticsearch 节点的列表。事件以循环方式分发到这些节点。如果一个节点无法访问,事件将自动发送到另一个节点。每个 Elasticsearch 节点都可以定义为 URL
或 IP:PORT
。例如:http://192.15.3.2
、https://es.found.io:9230
或 192.24.3.2:9300
。如果未指定端口,则使用 9200
。
output.elasticsearch:
hosts: ["10.45.3.2:9220", "10.45.3.1:9230"]
protocol: https
path: /elasticsearch
在前面的示例中,Elasticsearch 节点可在 https://10.45.3.2:9220/elasticsearch
和 https://10.45.3.1:9230/elasticsearch
上访问。
gzip 压缩级别。将此值设置为 0
将禁用压缩。压缩级别必须在 1
(最佳速度)到 9
(最佳压缩)的范围内。
增加压缩级别将减少网络使用量,但会增加 CPU 使用量。
默认值为 0
。
配置字符串中 HTML 的转义。设置为 true
以启用转义。
默认值为 false
。
除了使用用户名和密码外,您还可以使用 API 密钥来保护与 Elasticsearch 的通信。该值必须是 API 密钥的 ID 和 API 密钥的组合,用冒号分隔:id:api_key
。
您必须将 API 密钥配置为 Beats。此配置当前不支持 Base64 编码的 API 密钥。有关如何创建和配置兼容 API 密钥的详细信息,请参阅创建用于写入事件的 API 密钥。

用于连接到 Elasticsearch 的基本身份验证用户名。
此用户需要将事件发布到 Elasticsearch 所需的权限。要创建这样的用户,请参阅创建writer角色。
用于连接到 Elasticsearch 的基本身份验证密码。
要在 URL 中传递的 HTTP 参数的字典,用于索引操作。
Elasticsearch 可访问的协议名称。选项包括:http
或 https
。默认值为 http
。但是,如果您为hosts
指定 URL,则 protocol
的值将被您在 URL 中指定的任何方案覆盖。
一个 HTTP 路径前缀,它被添加到 HTTP API 调用之前。这对于 Elasticsearch 在 HTTP 反向代理后面侦听且在自定义前缀下导出 API 的情况很有用。
要添加到 Elasticsearch 输出创建的每个请求的自定义 HTTP 标头。示例
output.elasticsearch.headers:
X-My-Header: Header contents
可以通过用逗号分隔相同标头名称的多个标头值。
连接到 Elasticsearch 服务器时要使用的代理的 URL。该值可以是完整的 URL,也可以是“host[:port]”,在这种情况下,假定为“http”方案。如果未通过配置文件指定值,则使用代理环境变量。有关环境变量的更多信息,请参阅Go 文档。
发布失败后重试发布事件的次数。在指定的重试次数之后,事件通常会被丢弃。
将 max_retries
设置为小于 0 的值以重试直到发布所有事件。
默认值为 3。
在刷新到 Elasticsearch 之前,批量请求大小阈值(以字节为单位)。该值必须具有后缀,例如 "2MB"
。默认值为 1MB
。
刷新到 Elasticsearch 之前,累积批量请求事件的最长时间。该值必须具有持续时间后缀,例如 "5s"
。默认值为 1s
。
在网络错误后尝试重新连接到 Elasticsearch 之前等待的秒数。在等待 backoff.init
秒后,APM Server 尝试重新连接。如果尝试失败,则退避计时器呈指数增长,最高可达 backoff.max
。成功连接后,退避计时器将重置。默认值为 1s
。
在网络错误后尝试连接到 Elasticsearch 之前等待的最大秒数。默认值为 60s
。
Elasticsearch 请求的 HTTP 请求超时时间(以秒为单位)。默认值为 90。
SSL 参数的配置选项,例如用于基于 HTTPS 的连接的证书颁发机构。如果缺少 ssl
部分,则主机 CA 用于与 Elasticsearch 的 HTTPS 连接。
有关更多信息,请参阅与 Elasticsearch 的安全通信指南或SSL 配置参考。
通过 elasticsearch
输出将数据发送到安全集群时,APM Server 可以使用以下任何一种身份验证方法
- 基本身份验证凭据(用户名和密码)。
- 基于令牌的 API 身份验证。
- 客户端证书。
身份验证在 APM Server 配置文件中指定
要使用基本身份验证,请在
output.elasticsearch
下指定username
和password
设置。例如output.elasticsearch: hosts: ["https://myEShost:9200"] username: "apm_writer" password: "YOUR_PASSWORD"
- 此用户需要将事件发布到 Elasticsearch 所需的权限。要创建这样的用户,请参阅创建writer角色。
要使用基于令牌的 API 密钥身份验证,请在
output.elasticsearch
下指定api_key
。例如output.elasticsearch: hosts: ["https://myEShost:9200"] api_key: "KnR6yE41RrSowb0kQ0HWoA"
- 此 API 密钥必须具有将事件发布到 Elasticsearch 所需的权限。您必须将 API 密钥配置为 Beats。此配置当前不支持 Base64 编码的 API 密钥。有关如何创建和配置兼容 API 密钥的详细信息,请参阅创建用于写入事件的 API 密钥。
要使用 公钥基础设施 (PKI) 证书 来验证用户,请在
output.elasticsearch
下指定certificate
和key
设置。例如output.elasticsearch: hosts: ["https://myEShost:9200"] ssl.certificate: "/etc/pki/client/cert.pem" ssl.key: "/etc/pki/client/cert.key"
- 用于 SSL 客户端身份验证的证书的路径
- 客户端证书密钥
这些设置假设证书中的可分辨名称 (DN) 映射到 Elasticsearch 集群中每个节点上的
role_mapping.yml
文件中的相应角色。有关更多信息,请参阅使用角色映射文件。默认情况下,APM Server 使用运行 APM Server 的操作系统中的受信任证书颁发机构 (CA) 列表。如果签署节点证书的证书颁发机构不在主机系统的受信任证书颁发机构列表中,则需要将包含 CA 证书的
.pem
文件的路径添加到 APM Server 配置中。这将配置 APM Server 使用特定的 CA 证书列表,而不是操作系统中的默认列表。以下是一个配置示例
output.elasticsearch: hosts: ["https://myEShost:9200"] ssl.certificate_authorities: - /etc/pki/my_root_ca.pem - /etc/pki/my_other_ca.pem ssl.certificate: "/etc/pki/client.pem" ssl.key: "/etc/pki/key.pem"
- 指定包含证书颁发机构证书的本地
.pem
文件的路径。如果您使用自己的 CA 签署节点证书,则需要此操作。 - 用于 SSL 客户端身份验证的证书的路径
- 客户端证书密钥
注意对于任何给定的连接,SSL/TLS 证书必须具有与为
hosts
指定的值匹配的主题,否则 SSL 握手将失败。例如,如果您指定hosts: ["foobar:9200"]
,则证书必须在主题 (CN=foobar
) 或作为主题备用名称 (SAN) 中包含foobar
。确保主机名解析为正确的 IP 地址。如果没有 DNS 可用,那么您可以在/etc/hosts
(在 Unix 上) 或C:\Windows\System32\drivers\etc\hosts
(在 Windows 上) 中将 IP 地址与您的主机名关联。
有关将数据发送到安全集群的更多信息,请参阅配置参考