Docker/Kubernetes – 运行Otel Collector 服务Datadog

【Docker本机运行】

1. 准备otel collector的config.yaml

receivers:
  otlp:
    protocols:
      http:
        endpoint: "0.0.0.0:4318"
      grpc:
        endpoint: "0.0.0.0:4317"

processors:
  probabilistic_sampler:
    sampling_percentage: 100 # <--- 为了测试,设置为 100%
  batch:
    send_batch_max_size: 1000
    send_batch_size: 100
    timeout: 10s

connectors:
  datadog/connector: null # 对于基本用法,这里不需要特定配置,它会使用 exporter 中的 API key

exporters:
  debug:
    verbosity: detailed
  datadog:
    api:
      key: "1234"    # <--- 请务必替换为您的真实 Datadog API 密钥
      site: "datadoghq.com" # <--- 设置为您账户对应的 Datadog 站点!
    # 可选:如果自动检测的主机名不理想,可以在 Datadog 中帮助识别主机
    # hostname: "my-otel-collector-host"

service:
  pipelines:
    traces:
      receivers: [otlp]
      processors: [batch] # 先批处理,再交给 connector
      exporters: [datadog/connector, debug] # connector 会生成 APM 统计信息并转发追踪

    traces/sampling: # 这个 pipeline 从 datadog/connector 接收追踪数据
      receivers: [datadog/connector]
      processors: [batch, probabilistic_sampler] # 在这里进行采样
      exporters: [datadog] # 将采样后的追踪数据发送到 Datadog

    metrics: # 这个 pipeline 从 datadog/connector 接收 APM 统计信息(指标)
      receivers: [datadog/connector]
      processors: [batch]
      exporters: [datadog] # 将指标发送到 Datadog

2. 在docker本机运行

4318是服务http
4317是服务grpc

docker run --rm --name otelcol-custom \
  -v "$(pwd)/config.yaml":/etc/otelcol/config.yaml \
  -p 4317:4317 \
  -p 4318:4318 \
  otel/opentelemetry-collector-contrib:latest \
  --config /etc/otelcol/config.yaml

【Kubernetes运行】

1. 需要创建namespace先

kubectl create namespace otel

2. 运行底下的yaml , apikey需要替换成你的datadog api key

以下的yaml有ConfigMap, Service 和Deployment

kubectl apply -f config.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: otel-collector-config
  namespace: otel
data:
  otel-collector-config.yaml: |
    receivers:
      otlp:
        protocols:
          http:
            endpoint: "0.0.0.0:4318"
          grpc:
            endpoint: "0.0.0.0:4317"

    processors:
      probabilistic_sampler:
        sampling_percentage: 100 # <--- 为了测试,设置为 100%
      batch:
        send_batch_max_size: 1000
        send_batch_size: 100
        timeout: 10s

    connectors:
      datadog/connector: null # 对于基本用法,这里不需要特定配置,它会使用 exporter 中的 API key

    exporters:
      debug:
        verbosity: detailed
      datadog:
        api:
          key: "123456"
          site: "datadoghq.com"

    service:
      pipelines:
        traces:
          receivers: [otlp]
          processors: [batch] # 先批处理,再交给 connector
          exporters: [datadog/connector, debug] # connector 会生成 APM 统计信息并转发追踪

        traces/sampling: # 这个 pipeline 从 datadog/connector 接收追踪数据
          receivers: [datadog/connector]
          processors: [batch, probabilistic_sampler] # 在这里进行采样
          exporters: [datadog] # 将采样后的追踪数据发送到 Datadog

        metrics: # 这个 pipeline 从 datadog/connector 接收 APM 统计信息(指标)
          receivers: [datadog/connector]
          processors: [batch]
          exporters: [datadog] # 将指标发送到 Datadog
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: otel-collector
  namespace: otel
spec:
  replicas: 1
  selector:
    matchLabels:
      app: otel-collector
  template:
    metadata:
      labels:
        app: otel-collector
    spec:
      containers:
        - name: otel-collector
          image: otel/opentelemetry-collector-contrib:latest
          args: ["--config=/conf/otel-collector-config.yaml"]
          volumeMounts:
            - name: config
              mountPath: /conf
      volumes:
        - name: config
          configMap:
            name: otel-collector-config
---
apiVersion: v1
kind: Service
metadata:
  name: otel-collector
  namespace: otel
spec:
  ports:
    - name: otlp-grpc
      port: 4317
      targetPort: 4317
    - name: otlp-http
      port: 4318
      targetPort: 4318
  selector:
    app: otel-collector

Loading

Facebook评论