的跟踪分析 Amazon Elasticsearch Service - Amazon Elasticsearch Service
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

的跟踪分析 Amazon Elasticsearch Service

适用于 Amazon Elasticsearch Service (Amazon ES) 的 Kibana 的默认安装包括 Trace Analytics 插件,您可以使用该插件分析来自分布式应用程序的跟踪数据。该插件需要 Elasticsearch 7.9 或更高版本。

在分布式应用程序中,单个操作(例如用户单击按钮)可能会触发一系列扩展事件。例如,应用程序前端可能调用后端服务,该服务调用另一个服务,该服务查询数据库,数据库处理查询并返回结果。然后,第一个后端服务向前端发送确认,这将更新 UI。

您可以使用 Trace Analytics 帮助您可视化此事件流并确定性能问题。

Prerequisites

Trace Analytics 要求您向应用程序添加分析,并使用 OpenTelemetry 支持的库(如 Jaeger Zipkin)生成跟踪数据。此步骤完全在 外部执行Amazon ES。AWS Distro for OpenTelemetry 文档包含适用于多种编程语言的示例应用程序,可帮助您入门,包括 Java、Python、Go 和 JavaScript。

将分析添加到您的应用程序后OpenTelemetry 收集器将从该应用程序接收数据并将其格式化为 OpenTelemetry 数据。请参阅 GitHub 上的接收机列表。AWS Distro for OpenTelemetry 包括 的AWS X-Ray接收方

最后,Data Prepper 是一个独立的 Open Distro for Elasticsearch 组件,它设置了用于 的 OpenTelemetry 数据的格式Elasticsearch。数据预编译器在Amazon ES集群外部的计算机上运行,类似于 Logstash。

有关演示数据端到端流的 Docker Compose 文件,请参阅 Open Distro for Elasticsearch 文档

OpenTelemetry 收集器示例配置

要将 OpenTelemetry Collector 与 Data Prepper 结合使用,请尝试以下示例配置:

receivers: jaeger: protocols: grpc: otlp: protocols: grpc: zipkin: exporters: otlp/data-prepper: endpoint: data-prepper-host:21890 insecure: true service: pipelines: traces: receivers: [jaeger, otlp, zipkin] exporters: [otlp/data-prepper]

数据预编译器示例配置

要将跟踪数据发送到 Amazon ES 域,请尝试以下示例配置文件。

data-prepper-config.yaml

ssl: true keyStoreFilePath: "/usr/share/data-prepper/keystore.jks" # required if ssl is true keyStorePassword: "password" # optional, defaults to empty string privateKeyPassword: "other_password" # optional, defaults to empty string serverPort: 4900 # port for administrative endpoints, default is 4900

pipelines.yaml

entry-pipeline: # Workers is the number of application threads. # Try setting this value to the number of CPU cores on the machine. # We recommend the same number of workers for all pipelines. workers: 4 delay: "100" # milliseconds source: otel_trace_source: ssl: true sslKeyCertChainFile: "config/demo-data-prepper.crt" sslKeyFile: "config/demo-data-prepper.key" buffer: bounded_blocking: # Buffer size is the number of export requests to hold in memory. # We recommend the same value for all pipelines. # Batch size is the maximum number of requests each worker thread processes within the delay. # Keep buffer size >= number of workers * batch size. buffer_size: 1024 batch_size: 256 sink: - pipeline: name: "raw-pipeline" - pipeline: name: "service-map-pipeline" raw-pipeline: workers: 4 # We recommend the default delay for the raw pipeline. delay: "3000" source: pipeline: name: "entry-pipeline" prepper: - otel_trace_raw_prepper: buffer: bounded_blocking: buffer_size: 1024 batch_size: 256 sink: - elasticsearch: hosts: ["https://domain-endpoint"] # # Basic authentication # username: "ta-user" # password: "ta-password" # IAM signing aws_sigv4: true aws_region: "us-east-1" trace_analytics_raw: true service-map-pipeline: workers: 4 delay: "100" source: pipeline: name: "entry-pipeline" prepper: - service_map_stateful: buffer: bounded_blocking: buffer_size: 1024 batch_size: 256 sink: - elasticsearch: hosts: ["https://domain-endpoint"] # # Basic authentication # username: "ta-user" # password: "ta-password" # IAM signing aws_sigv4: true aws_region: "us-east-1" trace_analytics_service_map: true
  • 对于 IAM 签名aws configure,请使用 运行 AWS CLI 以设置您的凭证。

  • 如果您对内部用户数据库使用精细访问控制,请改用基本身份验证行。

如果您的域使用精细访问控制,则必须将 Data Prepper 用户或角色映射到 all_access 角色

如果您的域未使用精细访问控制,则 Data Prepper 用户或角色必须具有对多个索引和模板的写入权限,以及访问索引状态管理 (ISM) 策略和检索集群设置的权限。以下策略显示了所需的权限:

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:user/data-prepper-sink-user" }, "Action": "es:ESHttp*", "Resource": [ "arn:aws:es:us-east-1:123456789012:domain/domain-name/otel-v1*", "arn:aws:es:us-east-1:123456789012:domain/domain-name/_template/otel-v1*", "arn:aws:es:us-east-1:123456789012:domain/domain-name/_opendistro/_ism/policies/raw-span-policy", "arn:aws:es:us-east-1:123456789012:domain/domain-name/_alias/otel-v1*" ] }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:user/data-prepper-sink-user" }, "Action": "es:ESHttpGet", "Resource": "arn:aws:us-east-1:123456789012:domain/domain-name/_cluster/settings" } ] }

Data Prepper 使用端口 21890 接收数据,并且它必须能够连接到 OpenTelemetry 收集器和 Elasticsearch 集群。对于性能优化,调整配置文件中的工作线程计数和缓冲区设置,以及计算机的 Java 虚拟机 (JVM) 堆大小。

有关 Data Prepper 的完整文档,请参阅 Open Distro for Elasticsearch 文档。为方便起见,我们还提供了一个 模板,该AWS CloudFormation模板可在 Amazon EC2 实例上安装 Data Prepper。

探索跟踪数据

Dashboard (控制面板) 视图按 HTTP 方法和路径将跟踪在一起,以便您可以查看与特定操作关联的平均延迟、错误率和趋势。有关更集中的视图,请尝试按跟踪组名称进行筛选。

要向下钻取构成跟踪组的跟踪,请选择右侧列中的跟踪数量。然后,为详细摘要选择单个跟踪。

Services (服务) 视图列出应用程序中的所有服务,以及显示各个服务如何相互连接的交互式映射。与控制面板(可帮助按操作识别问题)相反,服务地图可帮助您按服务识别问题。尝试按错误率或延迟进行排序,以了解应用程序的潜在问题领域。