在 docker-compose 中设置 Jaeger - 不使用一体化映像

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

我想要 docker-compose 文件中的解决方案。我拿了这个 docker-compose 文件和这个 one

我提出了以下建议,但与 Jaeger 收集器通信的服务存在问题。

traces export: context deadline exceeded: rpc error: code = Unavailable desc = connection error: desc = "transport: Error while dialing: dial tcp 172.18.0.10:4317: connect: connection refused"

version: '3'
services:
  service-a:
    build:
      context: .
      dockerfile: service-a/Dockerfile
    networks:
      - service-jaeger
    ports:
      - "8081:8081"
    environment:
      - OUTBOUND_HOST_PORT=service-b:8082
      - OTEL_EXPORTER_OTLP_ENDPOINT=http://jaeger-collector:4317
      - OTEL_EXPORTER_OTLP_INSECURE=true

  service-b:
    build:
      context: .
      dockerfile: service-b/Dockerfile
    networks:
      - service-jaeger
    environment:
      - OTEL_EXPORTER_OTLP_ENDPOINT=http://jaeger-collector:4317
      - OTEL_EXPORTER_OTLP_INSECURE=true

  # Using ElasticSearch as a storage for traces and logs
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:8.11.3
    networks:
      - service-jaeger
    environment:
      - "ES_JAVA_OPTS=-Xms2g -Xmx2g"
      - "bootstrap.memory_lock=true"
      - "discovery.type=single-node"
      - "xpack.security.enabled=false"
      - "xpack.security.enrollment.enabled=false"
    ports:
      - "127.0.0.1:9200:9200"
    restart: on-failure
    volumes:
      - esdata:/usr/share/elasticsearch/data
    ulimits:
      memlock:
        soft: -1
        hard: -1
      nofile:
        soft: 65536
        hard: 65536

  # Using Apache Kafka as a temporary storage and stream processing system (span post processing)
  kafka:
    image: confluentinc/cp-kafka:5.2.1
    networks:
      - service-jaeger
    ports:
      - "9092:9092"
    environment:
      KAFKA_ZOOKEEPER_CONNECT: "zookeeper:2181"
      KAFKA_ADVERTISED_LISTENERS: "PLAINTEXT://kafka:9092"
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
      KAFKA_BROKER_ID: 1
    restart: on-failure

  # Using Apache Zookeeper to coordenate Apache services
  zookeeper:
    image: confluentinc/cp-zookeeper:5.2.1
    networks:
      - service-jaeger
    ports:
      - "2181:2181"
    environment:
      ZOOKEEPER_CLIENT_PORT: "2181"

  # Using Jaeger Collector to receive spans from Jaeger Agents and send them to Kafka
  jaeger-collector:
    image: jaegertracing/jaeger-collector:1.11.0
    hostname: jaeger-collector
    ports:
      - "14269:14269"
      - "14268:14268"
      - "14267:14267"
      - "9411:9411"
    networks:
      - service-jaeger
    restart: on-failure
    environment:
      LOG_LEVEL: "info"
      SPAN_STORAGE_TYPE: "kafka"
      KAFKA_BROKERS: "kafka:9092"
      METRICS_BACKEND: "prometheus"
    depends_on:
      - elasticsearch

  # Using Jaeger Ingester to receive spans from Kafka and send them to ElasticSearch
  jaeger-ingester:
    image: jaegertracing/jaeger-ingester:1.11.0
    networks:
      - service-jaeger
    ports:
      - "14270:14270"
      - "14271:14271"
    restart: on-failure
    environment:
      LOG_LEVEL: "info"
      INGESTER_PARALLELISM: "1"
      INGESTER_DEADLOCKINTERVAL: "0ms"
      SPAN_STORAGE_TYPE: "elasticsearch"
      ES_SERVER_URLS: "http://elasticsearch:9200"
      KAFKA_BROKERS: "kafka:9092"
      METRICS_BACKEND: "prometheus"
    depends_on:
      - kafka

  # Using Jaeger Agent to receive spans from clients locally and send to remote Jaeger Collector
  jaeger-agent:
    image: jaegertracing/jaeger-agent:1.11.0
    hostname: jaeger-agent
    command: ["--collector.host-port=jaeger-collector:14267"]
    ports:
      - "5775:5775/udp"
      - "6831:6831/udp"
      - "6832:6832/udp"
      - "5778:5778"
    networks:
      - service-jaeger
    restart: on-failure
    environment:
      SPAN_STORAGE_TYPE: "elasticsearch"
      METRICS_BACKEND: "prometheus"
    depends_on:
      - jaeger-collector

  #
  # USER INTERFACES
  #

  # Using Jaeger Query to work with traces
  jaeger-query:
    image: jaegertracing/jaeger-query:1.11.0
    environment:
      SPAN_STORAGE_TYPE: "elasticsearch"
      no_proxy: "localhost"
      METRICS_BACKEND: "prometheus"
    ports:
      - "16686:16686"
      - "16687:16687"
    networks:
      - service-jaeger
    restart: on-failure
    command: [
      "--es.server-urls=http://elasticsearch:9200",
      "--span-storage.type=elasticsearch",
      "--log-level=debug",
      "--query.ui-config=/usr/share/jaeger-query/jaeger-query-config.json"
    ]
    volumes:
      - ./jaeger-query-config.json:/usr/share/jaeger-query/jaeger-query-config.json:ro
    depends_on:
      - jaeger-agent

volumes:
  esdata:

networks:
  service-jaeger:
    driver: bridge
go docker-compose open-telemetry jaeger
1个回答
0
投票

你没有将 4317 映射到我能看到的任何地方(添加 -p 4317:4317)。此外,您还必须在收集器上启用 OLTP -e COLLECTOR_OTLP_ENABLED=true。在 service-a 和 service-b 定义中添加 jaeger-collector 的 dependent_on 条目,这将确保收集器首先出现。

为什么不使用其他东西来管理 Kafka,而只是在容器中这样做?没有任何冗余的 Kafka 并不是最好的主意。

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