kubernetes 开放式遥测自动仪器在没有边车的情况下无法工作

ws51t4hk  于 2023-08-03  发布在  Kubernetes
关注(0)|答案(1)|浏览(104)

我在一家初创公司工作,我们最近迁移了我们的工作负载以使用Kubernetes,特别是我们在EKS(AWS)的集群内运行。
我目前正在尝试在我们的集群上实现一个可观察性堆栈。我在一个单独的EC2示例上运行Signoz(用于测试,并且因为我们的集群使用的是其Helm Chart不支持的小型机器)。
在集群中,我正在运行Open Telemetry Operator,并设法在部署模式下部署了一个Collector,并验证了它能够连接到signoz示例。然而,当我尝试自动检测我的应用程序时,如果不使用Sidecar,我就无法做到这一点。
上面的元素的清单文件如下。

apiVersion: v1
kind: Namespace
metadata:
  name: opentelemetry
  labels:
    name: opentelemetry
---
apiVersion: opentelemetry.io/v1alpha1
kind: OpenTelemetryCollector
metadata:
  name: otel-collector
  namespace: opentelemetry
spec:
  config: |
    receivers:
      otlp:
        protocols:
          grpc: 
          http:
    processors:
      memory_limiter:
        check_interval: 1s
        limit_percentage: 75
        spike_limit_percentage: 15
      batch:
        send_batch_size: 10000
        timeout: 10s
    exporters:
      otlp:
        endpoint: obs.stg.company.domain:4317
        tls:
          insecure: true
      logging:
    service:
      pipelines:
        traces:
          receivers: [otlp]
          processors: [memory_limiter, batch]
          exporters: [otlp, logging]
        metrics:
          receivers: [otlp]
          processors: [memory_limiter, batch]
          exporters: [otlp, logging]
        logs:
          receivers: [otlp]
          processors: []
          exporters: [otlp, logging]
---
apiVersion: opentelemetry.io/v1alpha1
kind: Instrumentation
metadata:
  name: my-instrumentation
  namespace: opentelemetry
spec:
  exporter:
    endpoint: http://otel-collector-collector.opentelemetry.svc.cluster.local:4317
  propagators: 
    - tracecontext
    - baggage
    - b3
  sampler:
    type: parentbased_traceidratio
    argument: "0.25"
  dotnet:
  nodejs:

字符串
当我将注解instrumentation.opentelemetry.io/inject-dotnet=opentelemetry/auto-instrumentation应用于应用程序的部署,甚至应用于命名空间,并删除pod(因此它被重新创建)时,我可以看到用于dotnet自动检测的init容器运行没有问题,但是我没有得到任何跟踪、度量或日志,无论是在Collector上还是Signoz中。
如果我在sidecar模式下创建另一个收集器,如下面的,将检测指向这个收集器,并将注解sidecar.opentelemetry.io/inject=sidecar应用到命名空间,一切都可以正常工作。

apiVersion: opentelemetry.io/v1alpha1
kind: OpenTelemetryCollector
metadata:
  name: sidecar
  namespace: application
spec:
  mode: sidecar
  config: |
    receivers:
      otlp:
        protocols:
          grpc:
          http:
    processors:
      batch:
    exporters:
      logging:
      otlp:
        endpoint: "http://otel-collector-collector.opentelemetry.svc.cluster.local:4317"
        tls:
          insecure: true
    service:
      telemetry:
        logs:
          level: "debug"
      pipelines:
        traces:
          receivers: [otlp]
          processors: []
          exporters: [logging, otlp]


我之所以不使用sidecar来实现,是因为,正如我之前所说的,我们的集群很小,希望将开销保持在最低限度。
因此,我想首先了解我是否应该担心侧车,如果它们的开销与不使用它们有明显的不同。
其次,我想了解我的配置出了什么问题,因为我相信我遵循了Signoz文档中的所有说明。
谢谢你们能提供的任何帮助。

相关问题