Derzeit verwende ich die Datei „docker-compose.yaml“ und die Datei „Collector-gateway.yaml“ als Otel-Sammler, um Tracking-Informationen an Jaeger zu senden. Was ich erreichen möchte, ist Datenpersistenz mit Postgresql und ich versuche, dieses Github-Repo zu verwenden: Text. Allerdings erhalte ich diese Fehlermeldung immer wieder, wenn ich Docker-Container mit Docker-Compose Up starte.
Fehlerprotokoll:
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"}
Mehr Kontext zu meinem 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
Ich habe versucht, den Jaeger-Plugin-Store mit CGO_ENABLED=0 GOARCH=amd64 GOOS=darwin zu erstellen, da ich ein Mac-System verwende. Insgesamt bin ich noch relativ neu.
Das Seltsame ist, dass es funktioniert, wenn ich den normalen Anweisungen in der Readme-Datei folge, die jaeger-all-in-one als ausführbare Datei aus der Binärdatei und nicht über Docker-Compose ausführen. Meine Postgres-Datenbank kann jedoch nicht erkannt werden. Ich würde es jedoch lieber mit meiner Docker-Compose-Datei ausführen.
Der zugehörige Fehler ist
fork/exec /etc/cmd/jaeger-pg-store: exec format error
Dies weist auf ein inkompatibles Binärformat hin. Wenn Sie in einem Docker-Container ausführen, hat Ihre Binärdatei eine andere Sicht auf das Betriebssystem als Ihr lokaler Computer, d. h. Sie verwenden ein Docker-Image, das für Linux erstellt wurde, aber Sie versuchen, es auf eine für MacOS erstellte Plugin-Binärdatei zu verweisen . Sie müssen auch die Plugin-Binärdateien für Linux erstellen.
Das obige ist der detaillierte Inhalt vonjaeger-all-in-one docker-compose.yaml-Konfiguration zum Speichern von Traces in Postgresql. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!