The documentation you are viewing is for Dapr v1.12 which is an older version of Dapr. For up-to-date documentation, see the latest version.
操作方法: 为分布式跟踪安装 Jaeger
Dapr 支持 Zipkin 协议。 由于 Jaeger 与 Zipkin 兼容,Zipkin 协议可用于与 Jaeger 通信。
配置自托管模式
设置
启动 Jaeger 的最简单方式是使用发布到 DockerHub 的 Jaeger 全家桶镜像:
docker run -d --name jaeger \
-e COLLECTOR_ZIPKIN_HOST_PORT=:9412 \
-p 16686:16686 \
-p 9412:9412 \
jaegertracing/all-in-one:1.22
接下来,在本地创建以下 YAML 文件:
- config.yaml: 注意, 因为我们正在使用 Zipkin 协议 来与 Jaeger 通信, 我们指定
zipkin
追踪部分 配置设置endpointAddress
来定位Jaeger 实例。
apiVersion: dapr.io/v1alpha1
kind: Configuration
metadata:
name: tracing
namespace: default
spec:
tracing:
samplingRate: "1"
zipkin:
endpointAddress: "http://localhost:9412/api/v2/spans"
要启动指向新的 YAML 文件的应用程序,您可以使用 --config
选项:
dapr run --app-id mynode --app-port 3000 node app.js --config config.yaml
查看 Traces
要查看分布式追踪,在您的浏览器中请访问 http://localhost:16686,您会看到 Jaeger UI。
配置 Kubernetes
以下步骤可向您展示如何配置 Dapr 将分布式跟踪数据发送给 Jaeger,该数据作为 Dapr 中的容器运行,以及如何查看它们。
设置
首先创建以下 YAML 文件来安装 Jaeger,文件名为 jaeger-operator.yaml
。
开发和测试
默认情况下,allInOne Jaeger 镜像使用内存作为后端存储,不建议在生产环境中使用这种方式。
apiVersion: jaegertracing.io/v1
kind: "Jaeger"
metadata:
name: jaeger
spec:
strategy: allInOne
ingress:
enabled: false
allInOne:
image: jaegertracing/all-in-one:1.22
options:
query:
base-path: /jaeger
生产
Jaeger 使用 Elasticsearch 作为后端存储,您可以在 k8s 集群中创建一个密钥,以访问具有访问控制的 Elasticsearch 服务器。
kubectl create secret generic jaeger-secret --from-literal=ES_PASSWORD='xxx' --from-literal=ES_USERNAME='xxx' -n ${NAMESPACE}
apiVersion: jaegertracing.io/v1
kind: "Jaeger"
metadata:
name: jaeger
spec:
strategy: production
query:
options:
log-level: info
query:
base-path: /jaeger
collector:
maxReplicas: 5
resources:
limits:
cpu: 500m
memory: 516Mi
storage:
type: elasticsearch
esIndexCleaner:
enabled: false ## turn the job deployment on and off
numberOfDays: 7 ## number of days to wait before deleting a record
schedule: "55 23 * * *" ## cron expression for it to run
image: jaegertracing/jaeger-es-index-cleaner ## image of the job
secretName: jaeger-secret
options:
es:
server-urls: http://elasticsearch:9200
图片如下,包括 Elasticsearch 和 Grafana 的追踪数据。
现在,使用上面的 YAML 文件安装 Jaeger
# Install Jaeger
helm repo add jaegertracing https://jaegertracing.github.io/helm-charts
helm install jaeger-operator jaegertracing/jaeger-operator
kubectl apply -f jaeger-operator.yaml
# Wait for Jaeger to be up and running
kubectl wait deploy --selector app.kubernetes.io/name=jaeger --for=condition=available
接下来,在本地创建以下YAML文件:
- tracing.yaml
apiVersion: dapr.io/v1alpha1
kind: Configuration
metadata:
name: tracing
namespace: default
spec:
tracing:
samplingRate: "1"
zipkin:
endpointAddress: "http://jaeger-collector.default.svc.cluster.local:9411/api/v2/spans"
最后,部署 Dapr 组件和配置文件:
kubectl apply -f tracing.yaml
为了启用您的 Dapr sidecar 的配置,请在您的pod spec模板中添加以下注释:
annotations:
dapr.io/config: "tracing"
就这么简单! 您的 Dapr sidecar 现已配置为Jaeger 使用。
查看追踪数据
要查看 traces 数据,请连接到 Jaeger 服务并打开 UI:
kubectl port-forward svc/jaeger-query 16686
在您的浏览器中,转到 http://localhost:16686
并会看到Jaeger UI。
参考资料
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.