首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在k8s中打开遥测python自动仪表不收集数据

在k8s中打开遥测python自动仪表不收集数据
EN

Stack Overflow用户
提问于 2022-05-22 11:46:28
回答 1查看 751关注 0票数 0

因此,我正在尝试使用开放遥测技术来测试FastAPI python服务器。我通过诗歌安装了所需的依赖项:

代码语言:javascript
复制
opentelemetry-api = "^1.11.1"
opentelemetry-distro = {extras = ["otlp"], version = "^0.31b0"}
opentelemetry-instrumentation-fastapi = "^0.31b0"

在本地运行服务器时,在使用opentelemetry-instrument --traces_exporter console uvicorn src.main:app --host 0.0.0.0 --port 5000时,每当调用任何端点时,我都可以看到输出到控制台的跟踪。

我面临的主要问题是,当在k8s中运行应用程序时,在收集器中看不到日志。

我添加了cert管理器kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.8.0/cert-manager.yaml ( OTel操作符需要)和OTel运算符本身install the operator kubectl apply -f https://github.com/open-telemetry/opentelemetry-operator/releases/latest/download/opentelemetry-operator.yaml

然后,我使用以下配置添加了一个收集器:

代码语言:javascript
复制
apiVersion: opentelemetry.io/v1alpha1
kind: OpenTelemetryCollector
metadata:
  name: otel
spec:
  config: |
    receivers:
      otlp:
        protocols:
          grpc:
          http:
    processors:

    exporters:
      logging:

    service:
      pipelines:
        traces:
          receivers: [otlp]
          processors: []
          exporters: [logging]

最后,为启用自动检测设备,提供了一种仪器CR:

代码语言:javascript
复制
apiVersion: opentelemetry.io/v1alpha1
kind: Instrumentation
metadata:
  name: my-instrumentation
spec:
  exporter:
    endpoint: http://otel-collector:4317
  propagators:
    - tracecontext
    - baggage
  sampler:
    type: parentbased_traceidratio
    argument: "0.25"

我的应用程序的部署包括:

代码语言:javascript
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  annotations:
    kompose.cmd: kompose convert -f docker-compose-run-local-with-aws.yml -c
    kompose.version: 1.26.1 (HEAD)
  creationTimestamp: null
  labels:
    io.kompose.service: api
  name: api
spec:
  replicas: 1
  selector:
    matchLabels:
      io.kompose.service: api
  strategy:
    type: Recreate
  template:
    metadata:
      annotations:
        kompose.cmd: kompose convert -f docker-compose-run-local-with-aws.yml -c
        kompose.version: 1.26.1 (HEAD)
        sidecar.opentelemetry.io/inject: "true"
        instrumentation.opentelemetry.io/inject-python: "true"
      creationTimestamp: null
      labels:
        io.kompose.network/backend: "true"
        io.kompose.service: api
        app: api
    spec:
      containers:
        - env:
            - name: APP_ENV
              value: docker
            - name: RELEASE_VERSION
              value: "1.0.0"
            - name: OTEL_RESOURCE_ATTRIBUTES
              value: "service.name=fastapiApp"
            - name: OTEL_LOG_LEVEL
              value: "debug"
            - name: OTEL_TRACES_EXPORTER
              value: otlp_proto_http
            - name: OTEL_EXPORTER_OTLP_ENDPOINT
              value: http://otel-collector:4317
          image: my_org/api:1.0.0
          name: api
          ports:
            - containerPort: 5000
          resources: {}
          imagePullPolicy: IfNotPresent
      restartPolicy: Always

我遗漏了什么?我每件事都检查了一千遍,不知道可能出了什么问题。

EN

回答 1

Stack Overflow用户

发布于 2022-05-22 13:33:57

您已经错误地配置了导出端点设置OTEL_EXPORTER_OTLP_ENDPOINT。OTLP over HTTP导出程序的端点值应该有端口号4318。第4317号港口号应用于OTLP/gRPC出口商。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72337290

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档