Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How to continue using a OTLP/gRPC exporter with ebpf-profiler #285

Open
bhavnajindal opened this issue Dec 18, 2024 · 2 comments
Open

How to continue using a OTLP/gRPC exporter with ebpf-profiler #285

bhavnajindal opened this issue Dec 18, 2024 · 2 comments

Comments

@bhavnajindal
Copy link
Contributor

bhavnajindal commented Dec 18, 2024

Hi,
I have a collector for OpenTelemetry's default OTLP exporter on the ports 4317 for gRPC which I was using to receive profiles through the collection-agent :
sudo ./ebpf-profiler -collection-agent=127.0.0.1:4317 -disable-tls

But now I am getting the following errors:

ERRO[0005] Request failed: rpc error: code = Unimplemented desc = Method not found: opentelemetry.proto.collector.profiles.v1development.ProfilesService/Export 
ERRO[0009] Request failed: rpc error: code = Unimplemented desc = Method not found: opentelemetry.proto.collector.profiles.v1development.ProfilesService/Export 
ERRO[0013] Request failed: rpc error: code = Unimplemented desc = Method not found: opentelemetry.proto.collector.profiles.v1development.ProfilesService/Export 

I see that changes have been introduced in #208 for the agent collector deployment. How can I continue using my own collector that receives data using OTLP/gRpc protocol? Is there a OTLP exporter which was introduced? If yes, how can I use it?

@JLowe-N
Copy link

JLowe-N commented Jan 3, 2025

I also was getting this error, but seem to have it resolved.
I believe you will need to first set up a Pipeline in your OTEL Collector to receive and export the profiles signal.

exporters:
  otlp/pyroscope:
    endpoint: http://pyroscope:4040
    tls:
      insecure: true
# SNIP
  pipelines:
    traces:
      receivers: [otlp]
      processors: [batch]
      exporters: [otlp/tempo]
    metrics:
      receivers: [otlp]
      processors: [batch]
      exporters: [prometheus]
    logs:
      # if logs are mounted in
      # receivers: [filelog]
      # exporters: [loki]
      # if shipping logs from ESP OTEL to external OTEL
      receivers: [otlp]
      processors: []
      exporters: [loki]
    profiles:
      receivers: [otlp]
      exporters: [otlp/pyroscope]

You will then need to enable the feature flag for profiles service:

  otel-collector:
    # fixed versions for pyroscope, otel-collector, otel-profiler due to protocol changes
    image: otel/opentelemetry-collector-contrib:0.114.0
    volumes:
      - ./monitoring/otel/otel-collector-config.yaml:/etc/otelcol-contrib/config.yaml
    # environment:
    #   GODEBUG: "http2debug=2"
    ports:
      - 1888:1888 # pprof extension
      - 8888:8888 # Prometheus metrics exposed by the Collector
      - 8889:8889 # Prometheus exporter metrics
      - 13133:13133 # health_check extension
      - 4317:4317 # OTLP gRPC receiver
      - 4318:4318 # OTLP http receiver
      - 55679:55679 # zpages extension
    command: ["--config=/etc/otelcol-contrib/config.yaml", "--feature-gates=service.profilesSupport"]

Hope that helps!

@dmathieu
Copy link
Member

dmathieu commented Jan 6, 2025

Method not found: opentelemetry.proto.collector.profiles.v1development.ProfilesService/Export

This is due to the upgrade to the latest proto version, where v1development has been renamed to v1experimental.
The main branch of this repository has been upgraded to the latest proto version, hence the issue being fixed.

Because the profiler is still experimental, we do not yet follow semantic versioning and there are and will be breaking changes like this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants