Link Search Menu Expand Document Documentation Menu

追踪分析入门

OpenSearch 追踪分析包含两个组件:Data Prepper 和追踪分析 OpenSearch Dashboards 插件。Data Prepper 仓库包含多个示例应用程序,可帮助您入门。

基本数据流

Data flow diagram from a distributed application to OpenSearch

  1. 追踪分析依赖于您向应用程序添加插桩并生成追踪数据。OpenTelemetry 文档包含多种编程语言的示例应用程序,可以帮助您入门,包括 Java、Python、Go 和 JavaScript。

    (在下面的 Jaeger HotROD 示例中,一个额外的组件,即 Jaeger 代理,与应用程序并行运行并将数据发送到 OpenTelemetry Collector,但概念是相似的。)

  2. OpenTelemetry Collector 从应用程序接收数据并将其格式化为 OpenTelemetry 数据。

  3. Data Prepper 处理 OpenTelemetry 数据,将其转换为 OpenSearch 可用的格式,并将其索引到 OpenSearch 集群上。

  4. 追踪分析 OpenSearch Dashboards 插件以图表和表格的形式近乎实时地显示数据,重点关注服务架构、延迟、错误率和吞吐量。

Jaeger HotROD

一个追踪分析示例应用程序是 Jaeger HotROD 演示,它模拟了数据在分布式应用程序中的流动。

下载或克隆 Data Prepper 仓库。然后导航到 examples/jaeger-hotrod/,并在文本编辑器中打开 docker-compose.yml。此文件包含 基本数据流 中每个元素的容器。

  • 一个分布式应用程序 (jaeger-hot-rod) 带有 Jaeger 代理 (jaeger-agent)
  • OpenTelemetry Collector (otel-collector)
  • Data Prepper (data-prepper)
  • 一个单节点 OpenSearch 集群 (opensearch)
  • OpenSearch Dashboards (opensearch-dashboards)。

关闭文件并运行 docker compose up --build。容器启动后,在网络浏览器中导航到 https://:8080

HotROD web interface

在网页界面中点击一个按钮,向应用程序发送请求。每个请求都会启动组成应用程序的各项服务的一系列操作。从控制台日志中,您可以看到这些操作共享相同的 trace-id,这让您可以将请求中的所有操作作为一个单一的追踪来跟踪。

jaeger-hot-rod  | http://0.0.0.0:8081/customer?customer=392
jaeger-hot-rod  | 2020-11-19T16:29:53.425Z	INFO	frontend/server.go:92	HTTP request received	{"service": "frontend", "trace_id": "12091bd60f45ea2c", "span_id": "12091bd60f45ea2c", "method": "GET", "url": "/dispatch?customer=392&nonse=0.6509021735471818"}
jaeger-hot-rod  | 2020-11-19T16:29:53.426Z	INFO	customer/client.go:54	Getting customer{"service": "frontend", "component": "customer_client", "trace_id": "12091bd60f45ea2c", "span_id": "12091bd60f45ea2c", "customer_id": "392"}
jaeger-hot-rod  | 2020-11-19T16:29:53.430Z	INFO	customer/server.go:67	HTTP request received	{"service": "customer", "trace_id": "12091bd60f45ea2c", "span_id": "252ff7d0e1ac533b", "method": "GET", "url": "/customer?customer=392"}
jaeger-hot-rod  | 2020-11-19T16:29:53.430Z	INFO	customer/database.go:73	Loading customer{"service": "customer", "component": "mysql", "trace_id": "12091bd60f45ea2c", "span_id": "252ff7d0e1ac533b", "customer_id": "392"}

这些操作也具有 span_idSpan 是来自单个服务的工作单元。每个追踪都包含若干个 span。应用程序开始处理请求后不久,您就可以看到 OpenTelemetry Collector 开始导出 span。

otel-collector  | 2020-11-19T16:29:53.781Z	INFO	loggingexporter/logging_exporter.go:296	TraceExporter	{"#spans": 1}
otel-collector  | 2020-11-19T16:29:53.787Z	INFO	loggingexporter/logging_exporter.go:296	TraceExporter	{"#spans": 3}

然后 Data Prepper 处理来自 OpenTelemetry Collector 的数据并对其进行索引。

data-prepper  | 1031918 [service-map-pipeline-process-worker-2-thread-1] INFO  com.amazon.dataprepper.pipeline.ProcessWorker  –  service-map-pipeline Worker: Processing 3 records from buffer
data-prepper  | 1031923 [entry-pipeline-process-worker-1-thread-1] INFO  com.amazon.dataprepper.pipeline.ProcessWorker  –  entry-pipeline Worker: Processing 1 records from buffer

最后,您可以看到 OpenSearch 节点响应索引请求。

node-0.example.com  | [2020-11-19T16:29:55,064][INFO ][o.e.c.m.MetadataMappingService] [9fb4fb37a516] [otel-v1-apm-span-000001/NGYbmVD9RmmqnxjfTzBQsQ] update_mapping [_doc]
node-0.example.com  | [2020-11-19T16:29:55,267][INFO ][o.e.c.m.MetadataMappingService] [9fb4fb37a516] [otel-v1-apm-span-000001/NGYbmVD9RmmqnxjfTzBQsQ] update_mapping [_doc]

在一个新的终端窗口中,运行以下命令以查看 OpenSearch 集群中的一个原始文档

curl -X GET -u 'admin:<custom-admin-password>' -k 'https://:9200/otel-v1-apm-span-000001/_search?pretty&size=1'

在网络浏览器中导航到 https://:5601 并选择 Trace Analytics。您可以在 Jaeger HotROD 网页界面中看到您单次点击的结果:每个 API 和 HTTP 方法的追踪数量、延迟趋势、服务架构的颜色编码地图,以及一个可用于深入查看单个操作的追踪 ID 列表。

如果您没有看到您的追踪,请在 OpenSearch Dashboards 中调整时间范围。有关使用该插件的更多信息,请参阅OpenSearch Dashboards 插件

剩余 350 字符

有问题?

想做贡献?