开放式遥测自动仪表在没有 sidecar 的情况下无法工作

问题描述 投票:0回答:2

我在一家初创公司工作,我们最近将工作负载迁移到使用 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 的情况下做到这一点的原因是,正如我之前所说,我们有一个相当小的集群,并且希望将开销保持在最低限度。

因此,我想首先了解我是否应该担心 Sidecar,它们的开销是否与不使用它们有明显不同。

其次,我想了解我的配置出了什么问题,因为我相信我遵循了 Signoz 文档中的所有说明。

感谢你们提供的任何帮助。

kubernetes open-telemetry observability
2个回答
0
投票

0
投票

您的问题得到答案了吗?端口 4318 对我来说也不起作用。

© www.soinside.com 2019 - 2024. All rights reserved.