3.2.5.5.2. 连接到现有 Elasticsearch 实例

您可以使用现有 Elasticsearch 集群进行分布式追踪存储。现有的 Elasticsearch 集群(也称为 外部 Elasticsearch 实例)是由 Red Hat OpenShift distributed tracing platform Operator 或 Red Hat Elasticsearch Operator 安装的实例。

部署 Jaeger 自定义资源时,如果设置了以下配置,Red Hat OpenShift distributed tracing Platform Operator 不会置备 Elasticsearch:

  • spec.storage.elasticsearch.doNotProvision 设置为 true
  • spec.storage.options.es.server-urls 有一个值
  • spec.storage.elasticsearch.name 具有一个值,或者 Elasticsearch 实例名称是 elasticsearch

Red Hat OpenShift distributed tracing platform Operator 使用 spec.storage.elasticsearch.name 中指定的 Elasticsearch 实例连接到 Elasticsearch。

限制

  • 您无法将 OpenShift Container Platform 日志记录 Elasticsearch 实例与分布式追踪平台共享或重复使用。Elasticsearch 集群旨在专用于单个分布式追踪平台实例。
注意

红帽不为外部 Elasticsearch 实例提供支持。您可以在客户门户网站中查看经过测试的集成列表。

以下配置参数适用于已经存在的 Elasticsearch 实例,也称为外部 Elasticsearch 实例。在本例中,您可以在自定义资源文件中的 spec:storage:options:es 下为 Elasticsearch 指定配置选项。

表 3.8. 常规 ES 配置参数

参数描述默认值
es:
  server-urls:

Elasticsearch 实例的 URL。

Elasticsearch 服务器的完全限定域名。

http://elasticsearch.<namespace>.svc:9200

es:
  max-doc-count:

从 Elasticsearch 查询返回的最大文档数量。这也适用于聚合。如果同时设置了 es.max-doc-countes.max-num-spans,Elasticsearch 将使用两者中的较小的值。

 

10000

es:
  max-num-spans:

[已弃用 - 将在以后的版本中删除,使用 es.max-doc-count 代替。] 在 Elasticsearch 中每个查询每次抓取的最大 span 数量。如果同时设置了 es.max-num-spanses.max-doc-count,Elasticsearch 将使用两者中的较小的值。

 

10000

es:
  max-span-age:

Elasticsearch 中 span 的最大查询。

 

72h0m0s

es:
  sniffer:

Elasticsearch 的侦察器配置。客户端使用侦察过程自动查找所有节点。默认禁用此选项。

true/ false

false

es:
  sniffer-tls-enabled:

在监控 Elasticsearch 集群时启用 TLS 的选项。客户端使用侦察过程自动查找所有节点。默认禁用

true/ false

false

es:
  timeout:

用于查询的超时。当设为零时,则没有超时。

 

0s

es:
  username:

Elasticsearch 所需的用户名。如果指定,基本身份验证也会加载 CA。另请参阅 es.password

  
es:
  password:

Elasticsearch 所需的密码。另请参阅 es.username

  
es:
  version:

主要的 Elasticsearch 版本。如果没有指定,则该值将从 Elasticsearch 中自动探测到。

 

0

表 3.9. ES 数据复制参数

参数描述默认值
es:
  num-replicas:

Elasticsearch 中每个索引的副本数。

 

1

es:
  num-shards:

Elasticsearch 中每个索引的分片数量。

 

5

表 3.10. ES 索引配置参数

参数描述默认值
es:
  create-index-templates:

设置为 true 时,应用程序启动时自动创建索引模板。手动安装模板时,设置为 false

true/ false

true

es:
  index-prefix:

分布式追踪平台索引的可选前缀。例如,将其设置为 "production" 会创建名为 "production-tracing-*" 的索引。

  

表 3.11. ES 批量处理器配置参数

参数描述默认值
es:
  bulk:
    actions:

在批量处理器决定向磁盘提交更新前可添加到队列的请求数。

 

1000

es:
  bulk:
    flush-interval:

提交批量请求的时间.要禁用批量处理器清除间隔,请将其设置为零。

 

200ms

es:
  bulk:
    size:

在批量处理器决定提交更新之前,批量请求可以处理的字节数。

 

5000000

es:
  bulk:
    workers:

可以接收并将批量请求提交 Elasticsearch 的 worker 数量。

 

1

表 3.12. ES TLS 配置参数

参数描述默认值
es:
  tls:
    ca:

用于验证远程服务器的 TLS 证书颁发机构(CA)文件的路径。

 

默认将使用系统信任存储。

es:
  tls:
    cert:

TLS 证书文件的路径,用来识别此进程到远程服务器。

  
es:
  tls:
    enabled:

与远程服务器对话时启用传输层安全(TLS)。默认禁用此选项。

true/ false

false

es:
  tls:
    key:

TLS 私钥文件的路径,用来识别此进程到远程服务器。

  
es:
  tls:
    server-name:

覆盖远程服务器证书中预期的 TLS 服务器名称。

  
es:
  token-file:

包含 bearer 令牌的文件的路径。如果指定该标志,该标志也会载入认证机构(CA)文件。

  

表 3.13. ES 归档配置参数

参数描述默认值
es-archive:
  bulk:
    actions:

在批量处理器决定向磁盘提交更新前可添加到队列的请求数。

 

0

es-archive:
  bulk:
    flush-interval:

提交批量请求的时间.要禁用批量处理器清除间隔,请将其设置为零。

 

0s

es-archive:
  bulk:
    size:

在批量处理器决定提交更新之前,批量请求可以处理的字节数。

 

0

es-archive:
  bulk:
    workers:

可以接收并将批量请求提交 Elasticsearch 的 worker 数量。

 

0

es-archive:
  create-index-templates:

设置为 true 时,应用程序启动时自动创建索引模板。手动安装模板时,设置为 false

true/ false

false

es-archive:
  enabled:

启用额外的存储。

true/ false

false

es-archive:
  index-prefix:

分布式追踪平台索引的可选前缀。例如,将其设置为 "production" 会创建名为 "production-tracing-*" 的索引。

  
es-archive:
  max-doc-count:

从 Elasticsearch 查询返回的最大文档数量。这也适用于聚合。

 

0

es-archive:
  max-num-spans:

[已弃用 - 将在以后的版本中删除,使用 es-archive.max-doc-count 替代。] Elasticsearch 中的每个查询一次获取的最大 span 数量。

 

0

es-archive:
  max-span-age:

Elasticsearch 中 span 的最大查询。

 

0s

es-archive:
  num-replicas:

Elasticsearch 中每个索引的副本数。

 

0

es-archive:
  num-shards:

Elasticsearch 中每个索引的分片数量。

 

0

es-archive:
  password:

Elasticsearch 所需的密码。另请参阅 es.username

  
es-archive:
  server-urls:

以逗号分隔的 Elasticsearch 服务器列表。必须指定为完全限定的 URL,例如 http://localhost:9200

  
es-archive:
  sniffer:

Elasticsearch 的侦察器配置。客户端使用侦察过程自动查找所有节点。默认禁用此选项。

true/ false

false

es-archive:
  sniffer-tls-enabled:

在监控 Elasticsearch 集群时启用 TLS 的选项。客户端使用侦察过程自动查找所有节点。默认禁用此选项。

true/ false

false

es-archive:
  timeout:

用于查询的超时。当设为零时,则没有超时。

 

0s

es-archive:
  tls:
    ca:

用于验证远程服务器的 TLS 证书颁发机构(CA)文件的路径。

 

默认将使用系统信任存储。

es-archive:
  tls:
    cert:

TLS 证书文件的路径,用来识别此进程到远程服务器。

  
es-archive:
  tls:
    enabled:

与远程服务器对话时启用传输层安全(TLS)。默认禁用此选项。

true/ false

false

es-archive:
  tls:
    key:

TLS 私钥文件的路径,用来识别此进程到远程服务器。

  
es-archive:
  tls:
    server-name:

覆盖远程服务器证书中预期的 TLS 服务器名称。

  
es-archive:
  token-file:

包含 bearer 令牌的文件的路径。如果指定该标志,该标志也会载入认证机构(CA)文件。

  
es-archive:
  username:

Elasticsearch 所需的用户名。如果指定,基本身份验证也会加载 CA。请参阅 es-archive.password

  
es-archive:
  version:

主要的 Elasticsearch 版本。如果没有指定,则该值将从 Elasticsearch 中自动探测到。

 

0

使用卷挂载的存储示例

apiVersion: jaegertracing.io/v1
kind: Jaeger
metadata:
  name: simple-prod
spec:
  strategy: production
  storage:
    type: elasticsearch
    options:
      es:
        server-urls: https://quickstart-es-http.default.svc:9200
        index-prefix: my-prefix
        tls:
          ca: /es/certificates/ca.crt
    secretName: tracing-secret
  volumeMounts:
    - name: certificates
      mountPath: /es/certificates/
      readOnly: true
  volumes:
    - name: certificates
      secret:
        secretName: quickstart-es-http-certs-public

以下示例显示了使用从存储在 secret 中的卷和用户/密码挂载了 TLS CA 证书的外部 Elasticsearch 集群的 Jaeger CR。

外部 Elasticsearch 示例:

apiVersion: jaegertracing.io/v1
kind: Jaeger
metadata:
  name: simple-prod
spec:
  strategy: production
  storage:
    type: elasticsearch
    options:
      es:
        server-urls: https://quickstart-es-http.default.svc:9200 1
        index-prefix: my-prefix
        tls: 2
          ca: /es/certificates/ca.crt
    secretName: tracing-secret 3
  volumeMounts: 4
    - name: certificates
      mountPath: /es/certificates/
      readOnly: true
  volumes:
    - name: certificates
      secret:
        secretName: quickstart-es-http-certs-public

1
在默认命名空间中运行的 Elasticsearch 服务 URL。
2
TLS 配置。在这种情况下,只有 CA 证书,但在使用 mutual TLS 时,它也可以包含 es.tls.key 和 es.tls.cert。
3
定义环境变量 ES_PASSWORD 和 ES_USERNAME 的 Secret。由 kubectl create secret generic tracing-secret --from-literal=ES_PASSWORD=changeme --from-literal=ES_USERNAME=elastic 创建
4
被挂载到所有存储组件的卷挂载和卷。