datadog分析之trace

2023-03-01  本文已影响0人  flystarts

如何使用:

https://us5.datadoghq.com/apm/service-setup

java语言只需要在chart定义里加上标签,不需要改代码和镜像:

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    tags.datadoghq.com/env: <env>
    tags.datadoghq.com/service: <service>
    tags.datadoghq.com/version: <version>
spec:
  template:
    metadata:
      labels:
        tags.datadoghq.com/env: <env>
        tags.datadoghq.com/service: <service>
        tags.datadoghq.com/version: <version>
        admission.datadoghq.com/enabled: "true"
        admission.datadoghq.com/config.mode: "socket"
      annotations:
        admission.datadoghq.com/java-lib.version: v1.10.0
    spec:
      containers:
        - name: <CONTAINER_NAME>
          image: <CONTAINER_IMAGE>/<TAG>
          env:
            - name: DD_LOGS_INJECTION
              value: "true"

go语言的除了要加标签,还需要改代码:

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    tags.datadoghq.com/env: <env>
    tags.datadoghq.com/service: <service>
    tags.datadoghq.com/version: <version>
spec:
  template:
    metadata:
      labels:
        tags.datadoghq.com/env: <env>
        tags.datadoghq.com/service: <service>
        tags.datadoghq.com/version: <version>
    spec:
      volumes:
        - hostPath:
            path: /var/run/datadog/
          name: apmsocketpath
      containers:
        - name: <CONTAINER_NAME>
          image: <CONTAINER_IMAGE>/<TAG>
          volumeMounts:
            - name: apmsocketpath
              mountPath: /var/run/datadog
          env:
            - name: DD_ENV
              valueFrom:
                fieldRef:
                  fieldPath: metadata.labels['tags.datadoghq.com/env']
            - name: DD_SERVICE
              valueFrom:
                fieldRef:
                  fieldPath: metadata.labels['tags.datadoghq.com/service']
            - name: DD_VERSION
              valueFrom:
                fieldRef:
                  fieldPath: metadata.labels['tags.datadoghq.com/version']

代码:
https://docs.datadoghq.com/tracing/trace_collection/custom_instrumentation/go/

使用效果

service map:


image.png

我们发现这个map有点不对,godemo也有调用cktest,为什么这里没显示出来?后面有分析

image.png

查看trace:


image.png

我们把h2的去勾选了

image.png image.png

java服务的调用链抓的比较全,能看到java调用go的

但是go语言的就不行了,看不到go调用java的,这就是service map里显示不全的原因


image.png

为什么看不到go调用其他服务的呢?因为go的不支持auto instrument,需要手动打点。我们的demo代码里并未在发起http调用的地方添加打点,所以没有跟踪到

原理分析

Java的原理和swck是一样的,也是通过webhook 的init container注入agent

go语言并未实现自动注入,需要用sdk手动打点。这一点比odigos的自动打点要落后一点。

上一篇 下一篇

猜你喜欢

热点阅读