配置 Elasticsearch 输出编辑

Elasticsearch 输出使用 Elasticsearch HTTP API 将事件直接发送到 Elasticsearch。

示例配置

output.elasticsearch:
  hosts: ["https://myEShost:9200"] 

要启用 SSL,请在 hosts 下定义的所有 URL 中添加 https

通过 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"

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编辑

enabled 配置是一个布尔值设置,用于启用或禁用输出。如果设置为 false,则禁用输出。

默认值为 true

hosts编辑

要连接到的 Elasticsearch 节点列表。事件以循环方式分配到这些节点。如果一个节点变得不可达,则事件会自动发送到另一个节点。每个 Elasticsearch 节点都可以定义为 URLIP:PORT。例如:http://192.15.3.2https://es.found.io:9230192.24.3.2:9300。如果未指定端口,则使用 9200

当节点定义为 IP:PORT 时,方案路径 取自 protocolpath 配置选项。

output.elasticsearch:
  hosts: ["10.45.3.2:9220", "10.45.3.1:9230"] 
  protocol: https
  path: /elasticsearch

在前面的示例中,Elasticsearch 节点位于 https://10.45.3.2:9220/elasticsearchhttps://10.45.3.1:9230/elasticsearch

compression_level编辑

gzip 压缩级别。将此值设置为 0 将禁用压缩。压缩级别必须在 1(最佳速度)到 9(最佳压缩)范围内。

提高压缩级别将减少网络使用量,但会增加 CPU 使用量。

默认值为 0

escape_html编辑

配置字符串中 HTML 的转义。设置为 true 以启用转义。

默认值为 false

api_key编辑

您可以使用 API 密钥来保护与 Elasticsearch 的通信,而不是使用用户名和密码。该值必须是 API 密钥的 ID 和 API 密钥,用冒号分隔:id:api_key

有关更多信息,请参阅 使用 API 密钥授予访问权限

username编辑

用于连接到 Elasticsearch 的基本身份验证用户名。

此用户需要将事件发布到 Elasticsearch 所需的权限。要创建这样的用户,请参阅 创建 写入者 用户

password编辑

用于连接到 Elasticsearch 的基本身份验证密码。

parameters编辑

要与索引操作一起在 URL 中传递的 HTTP 参数字典。

protocol编辑

Elasticsearch 可达的协议名称。选项包括:httphttps。默认值为 http。但是,如果您为 hosts 指定 URL,则 protocol 的值将被您在 URL 中指定的任何方案覆盖。

path编辑

附加到 HTTP API 调用的 HTTP 路径前缀。这在 Elasticsearch 位于将 API 导出到自定义前缀下的 HTTP 反向代理后面的情况下很有用。

headers编辑

要添加到 Elasticsearch 输出创建的每个请求的自定义 HTTP 标头。示例

output.elasticsearch.headers:
  X-My-Header: Header contents

可以通过逗号分隔它们来为同一个标头名称指定多个标头值。

proxy_url编辑

连接到 Elasticsearch 服务器时要使用的代理的 URL。该值可以是完整的 URL 或“host[:port]”,在这种情况下,将假定“http”方案。如果未通过配置文件指定值,则使用代理环境变量。有关环境变量的更多信息,请参阅 Go 文档

max_retries编辑

在发布失败后重试发布事件的次数。在指定的重试次数后,事件通常会被丢弃。

max_retries 设置为小于 0 的值,以重试直到所有事件都发布。

默认值为 3。

flush_bytes编辑

在刷新到 Elasticsearch 之前,批量请求大小阈值(以字节为单位)。该值必须带有后缀,例如 "2MB"。默认值为 1MB

flush_interval编辑

在刷新到 Elasticsearch 之前,累积事件以进行批量请求的最大持续时间。该值必须带有持续时间后缀,例如 "5s"。默认值为 1s

backoff.init编辑

在网络错误后尝试重新连接到 Elasticsearch 之前等待的秒数。在等待 backoff.init 秒后,APM Server 会尝试重新连接。如果尝试失败,则回退计时器会以指数方式增加,直到达到 backoff.max。在成功连接后,回退计时器将重置。默认值为 1s

backoff.max编辑

在网络错误后尝试连接到 Elasticsearch 之前等待的最大秒数。默认值为 60s

timeout编辑

Elasticsearch 请求的 HTTP 请求超时时间(以秒为单位)。默认值为 90。

ssl编辑

用于 SSL 参数的配置选项,例如用于基于 HTTPS 的连接的证书颁发机构。如果缺少 ssl 部分,则主机 CA 用于与 Elasticsearch 的 HTTPS 连接。

有关更多信息,请参阅 与 Elasticsearch 的安全通信 指南或 SSL 配置参考

与 Elasticsearch 建立安全通信编辑

通过 elasticsearch 输出将数据发送到安全集群时,APM Server 可以使用以下任何一种身份验证方法

  • 基本身份验证凭据(用户名和密码)。
  • 基于令牌的 API 身份验证。
  • 客户端证书。

身份验证在 APM Server 配置文件中指定。

  • 要使用 基本身份验证,请在 output.elasticsearch 下指定 usernamepassword 设置。例如

    output.elasticsearch:
      hosts: ["https://myEShost:9200"]
      username: "apm_writer" 
      password: "YOUR_PASSWORD"

    此用户需要将事件发布到 Elasticsearch 所需的权限。要创建这样的用户,请参阅 创建 写入者 用户

  • 要使用基于令牌的 API 密钥身份验证,请在 output.elasticsearch 下指定 api_key。例如

    output.elasticsearch:
      hosts: ["https://myEShost:9200"]
      api_key: "KnR6yE41RrSowb0kQ0HWoA" 

    此 API 密钥必须具有将事件发布到 Elasticsearch 所需的权限。要创建这样的 API 密钥,请参阅 使用 API 密钥授予访问权限

  • 要使用 公钥基础设施 (PKI) 证书 对用户进行身份验证,请在 output.elasticsearch 下指定 certificatekey 设置。例如

    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 地址与主机名关联。

了解有关安全通信的更多信息编辑

有关将数据发送到安全集群的更多信息,请参阅配置参考