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

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

Amazon Elasticsearch Service 的跟踪分析

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

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

您可以使用跟踪分析来帮助您可视化此事件流并识别性能问题。

Prerequisites

跟踪分析要求您添加分析添加到您的应用程序中,并使用 OpenTelemetrt 支持的库生成跟踪数据,例如积格或者拉链。此步骤完全发生在亚马逊 ES 之外。这些区域有:Amazon用于开放遥测的发行版文档包含许多编程语言的示例应用程序,这些语言可以帮助您开始使用,包括 Java、Python、Go 和 JavaScript。

将工具插入添加到应用程序后,Open 遥测收集器从应用程序接收数据并将其格式化为 Open遥测数据。查看接收器列表GitHub。Amazon用于开放遥测的发行版包括接收器Amazon X-Ray

最后,数据准备器,一个独立的开放式发行版的弹性搜索组件,可将 Open遥测数据与 Elasticsearch 一起使用。数据准备程序在 Amazon ES 群集以外的计算机上运行,类似于 Logstash。

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

Open 遥测收集器示例配置

要将 Open 遥测收集器与数据准备器一起使用,请尝试以下示例配置:

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 域,请尝试以下示例配置文件。

数据准备-配置 .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

流水线 .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使用Amazon CLI以设置您的凭证。

  • 如果您使用访问权限的精细控制与内部用户数据库一起使用基本身份验证行。

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

如果您的域不使用精细访问控制,则数据 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" } ] }

数据准备器使用端口 21890 接收数据,它必须能够连接到 Open 遥测收集器和 Elasticsearch 集群。要进行性能调整,请调整配置文件中的工作线程计数和缓冲区设置,以及计算机的 Java 虚拟机 (JVM) 堆大小。

有关数据准备程序的完整文档在Open Distro for Elasticsearch 文档。为了方便起见,我们还提供Amazon CloudFormation模板在 Amazon EC2 实例上安装数据准备程序。

浏览跟踪数据

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

要向下钻取组成跟踪组的迹线,请选择右侧列中的迹线数。然后选择一个单独的跟踪以获取详细的摘要。

这些区域有:服务视图列出了应用程序中的所有服务,以及显示各种服务之间如何相互连接的交互式地图。与仪表板(有助于按操作识别问题)不同,服务图可帮助您按服务识别问题。尝试按错误率或延迟进行排序,以了解应用程序的潜在问题区域。