Maison >développement back-end >Golang >Configuration jaeger-all-in-one docker-compose.yaml pour stocker les traces dans postgresql

Configuration jaeger-all-in-one docker-compose.yaml pour stocker les traces dans postgresql

WBOY
WBOYavant
2024-02-06 08:09:03833parcourir

jaeger-all-in-one docker-compose.yaml 配置用于将跟踪存储到 postgresql

Contenu de la question

Actuellement, j'utilise le fichier docker-compose.yaml et le fichier Collector-gateway.yaml comme collecteur d'otel pour envoyer des informations de suivi à Jaeger. Ce que je veux réaliser, c'est la persistance des données en utilisant postgresql et j'essaie d'utiliser ce dépôt github : text. Cependant, je continue à recevoir cette erreur lors du lancement de conteneurs Docker à l'aide de docker-compose up.

Journal des erreurs : 

jaeger-postgresql-jaeger-all-in-one-1  | {"level":"fatal","ts":1696996008.1216166,"caller":"./main.go:110","msg":"Failed to init storage factory","error":"grpc-plugin builder failed to create a store: error attempting to connect to plugin rpc client: fork/exec /etc/cmd/jaeger-pg-store: exec format error","stacktrace":"main.main.func1\n\t./main.go:110\ngithub.com/spf13/cobra.(*Command).execute\n\tgithub.com/spf13/[email protected]/command.go:940\ngithub.com/spf13/cobra.(*Command).ExecuteC\n\tgithub.com/spf13/[email protected]/command.go:1068\ngithub.com/spf13/cobra.(*Command).Execute\n\tgithub.com/spf13/[email protected]/command.go:992\nmain.main\n\t./main.go:243\nruntime.main\n\truntime/proc.go:267"}

Plus de contexte sur mon code docker-compose.yaml :

version: "3"
services:
  # Jaeger
  jaeger-all-in-one:
    image: jaegertracing/all-in-one:latest
    ports:
      - "16686:16686"
      - "14268"
      - "14250"
    environment:
      - SPAN_STORAGE_TYPE=grpc-plugin
      - COLLECTOR_OTLP_ENABLED=true
    volumes:
      - ./jaeger-pg-store:/etc/cmd/jaeger-pg-store
      - ./collector-gateway.yaml:/etc/collector-gateway.yaml
    command: ["--grpc-storage-plugin.binary=/etc/cmd/jaeger-pg-store", "--grpc-storage-plugin.configuration-file=/etc/collector-gateway.yaml"]
    
  # Collector
  collector-gateway:
    image: otel/opentelemetry-collector-contrib:0.53.0
    volumes:
      - ./collector-gateway.yaml:/etc/collector-gateway.yaml
      - ./jaeger-pg-store:/etc/cmd
    command: [ "--config=/etc/collector-gateway.yaml"]
    ports:
      - "1888:1888"   # pprof extension
      - "13133:13133" # health_check extension
      - "4317:4317"        # OTLP gRPC receiver
      - "4318:4318"        # OTLP HTTP receiver
      - "55670:55679" # zpages extension
    depends_on:
      - jaeger-all-in-one
    links:
      - jaeger-all-in-one

J'ai essayé de créer jaeger-plugin-store avec CGO_ENABLED=0 GOARCH=amd64 GOOS=darwin puisque je suis sur un système Mac. Dans l'ensemble, je suis encore relativement nouveau.

Ce qui est étrange, c'est que lorsque je suis les instructions normales du fichier readme, qui exécutent Jaeger-all-in-one en tant qu'exécutable à partir du binaire, plutôt que via docker-compose, cela fonctionne, mais ma base de données postgres ne peut pas être détectée. Cependant, je préférerais l'exécuter avec mon fichier docker-compose.


La bonne réponse


L'erreur associée est

fork/exec /etc/cmd/jaeger-pg-store: exec format error

Cela indique un format binaire incompatible. Lorsque vous exécutez dans un conteneur Docker, votre binaire a une vue du système d'exploitation différente de celle de votre machine locale, c'est-à-dire que vous utilisez une image Docker conçue pour Linux, mais vous essayez de la pointer vers un binaire de plug-in conçu pour MacOS. . Vous devez également créer les binaires du plugin pour Linux.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer