阿里云服务网格ASM支持将指标数据上报到阿里云可观测链路OpenTelemetry版。您可以通过可观测链路OpenTelemetry版控制台查看调用信息和基于调用信息生成的拓扑图等。本文介绍如何将链路追踪数据采集到阿里云可观测链路OpenTelemetry版。
前提条件
已创建ASM实例。具体操作,请参见创建ASM实例。
已添加ACK集群到ASM实例。具体操作,请参见添加集群到ASM实例和升级ASM实例。
阿里云账号已开通阿里云可观测链路OpenTelemetry版。关于如何计费,请参见计费规则。
操作步骤
请您按照ASM实例版本选择对应的页签进行操作。
ASM实例版本为1.17.2.35以下
登录ASM控制台,在左侧导航栏,选择 。
在网格管理页面,单击目标实例名称,然后在左侧导航栏,选择 。
在基本信息页面,单击功能设置,在功能设置更新面板,选中启用链路追踪,设置采样百分比,采样方式选择阿里云可观测链路OpenTelemetry版,然后单击确定。
在左侧导航栏,选择
,跳转至可观测链路OpenTelemetry版控制台查看链路追踪信息。关于链路追踪的更多信息,请参见什么是可观测链路OpenTelemetry版。
若您不再需要此功能,可以在功能设置更新面板取消选中启用链路追踪,然后单击确定。
ASM实例版本为1.17.2.35及以上,1.18.0.124以下
登录ASM控制台,在左侧导航栏,选择 。
在网格管理页面,单击目标实例名称,然后在左侧导航栏,选择 。
在链路追踪页面,单击将服务网格链路追踪数据采集到阿里云可观测链路OpenTelemetry版,然后在确认对话框,单击确定。
单击打开阿里云可观测链路OpenTelemetry版控制台,查看链路追踪信息。
关于链路追踪的更多信息,请参见什么是可观测链路OpenTelemetry版。
若您不再需要此功能,可以在链路追踪页面,单击关闭采集,然后在确认对话框,单击确定。
ASM实例版本为1.18.0.124及以上
步骤一:部署OpenTelemetry Operator
在ACK集群对应的KubeConfig环境,执行以下命令,创建opentelemetry-operator-system命名空间。
kubectl create namespace opentelemetry-operator-system
执行以下命令,使用Helm在opentelemetry-operator-system命名空间下安装OpenTelemetry Operator。
helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts helm install --namespace=opentelemetry-operator-system opentelemetry-operator open-telemetry/opentelemetry-operator \ --set "manager.collectorImage.repository=otel/opentelemetry-collector-k8s" \ --set admissionWebhooks.certManager.enabled=false \ --set admissionWebhooks.autoGenerateCert.enabled=true
执行以下命令,检查opentelemetry-operator是否正常运行。
kubectl get pod -n opentelemetry-operator-system
预期输出:
NAME READY STATUS RESTARTS AGE opentelemetry-operator-854fb558b5-pvllj 2/2 Running 0 1m
STATUS
为Running
,表明opentelemetry-operator正常运行。
步骤二:创建OpenTelemetry Collector
使用以下内容,创建collector.yaml文件。
请将YAML中的
${ENDPOINT}
替换为gRPC协议的VPC网络接入点,${TOKEN}
替换为鉴权Token。关于如何获取阿里云可观测链路OpenTelemetry版的接入点和鉴权Token,请参见接入和鉴权说明。在ACK集群对应的KubeConfig环境下,执行以下命令,将collector部署到集群。
kubectl apply -f collector.yaml
执行以下命令,检查collector是否正常启动。
kubectl get pod -n opentelemetry-operator-system
预期输出:
NAME READY STATUS RESTARTS AGE opentelemetry-operator-854fb558b5-pvllj 2/2 Running 0 3m default-collector-5cbb4497f4-2hjqv 1/1 Running 0 30s
预期输出表明collector正常启动。
执行以下命令,检查服务是否创建。
kubectl get svc -n opentelemetry-operator-system
预期输出:
opentelemetry-operator ClusterIP 172.16.138.165 <none> 8443/TCP,8080/TCP 3m opentelemetry-operator-webhook ClusterIP 172.16.127.0 <none> 443/TCP 3m default-collector ClusterIP 172.16.145.93 <none> 4317/TCP 30s default-collector-headless ClusterIP None <none> 4317/TCP 30s default-collector-monitoring ClusterIP 172.16.136.5 <none> 8888/TCP 30s
预期输出表明服务已创建成功。
步骤三:通过ASM控制台启用链路追踪
登录ASM控制台,在左侧导航栏,选择 。
在网格管理页面,单击目标实例名称,然后在左侧导航栏,选择 。
在可观测配置页面的链路追踪设置区域,将采样百分比设置为100,然后单击提交。
在左侧导航栏,选择
,在OpenTelemetry服务地址/域名输入default-collector.opentelemetry-operator-system.svc.cluster.local,在OpenTelemetry服务端口输入4317,然后单击将服务网格链路追踪数据采集到OpenTelemetry。
步骤四:部署测试应用
部署bookinfo和sleep应用。具体操作,请参见在ASM实例关联的集群中部署应用。
步骤五:访问应用并查看上报的追踪数据
执行以下命令,访问productpage应用。
kubectl exec -it deploy/sleep -c sleep -- curl productpage:9080/productpage?u=normal
访问成功后,查看OpenTelemetry Collector日志,查看debug exporter打印的输出。
2023-11-20T08:44:27.531Z info TracesExporter {"kind": "exporter", "data_type": "traces", "name": "debug", "resource spans": 1, "spans": 3}
通过ARMS控制台查看链路追踪数据。
登录ARMS控制台。
在左侧导航栏,单击
,然后在页面左上角选择目标地域。在应用名称区域,选中发起请求的sleep应用,右侧列表显示调用sleep应用的追踪数据。
通过sleep应用容器发起的访问,被ASM视作调用sleep应用Sidecar的Egress服务。
在调用列表右侧的操作列,单击目标调用对应的详情,查看完整调用链及延迟信息。