Skip to content

Commit 1dfbcf8

Browse files
authored
Fix metrics (#2998)
* Fix metrics * Fix errors against parca-dev/opentelemetry-ebpf-profile HEAD * update go.mod to point to github.com/parca-dev/opentelemetry-ebpf-profiler HEAD
1 parent 2e00ac0 commit 1dfbcf8

File tree

7 files changed

+36
-71
lines changed

7 files changed

+36
-71
lines changed

go.mod

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ require (
1515
github.com/common-nighthawk/go-figure v0.0.0-20210622060536-734e95fb86be
1616
github.com/containerd/containerd v1.7.20
1717
github.com/docker/docker v26.1.5+incompatible
18-
github.com/elastic/go-freelru v0.13.0
18+
github.com/elastic/go-freelru v0.15.0
1919
github.com/gogo/protobuf v1.3.2
2020
github.com/golang/snappy v0.0.4
2121
github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1
@@ -149,4 +149,4 @@ require (
149149
sigs.k8s.io/yaml v1.3.0 // indirect
150150
)
151151

152-
replace go.opentelemetry.io/ebpf-profiler => github.com/parca-dev/opentelemetry-ebpf-profiler v0.0.0-20241030163650-5b64dd57b3ea
152+
replace go.opentelemetry.io/ebpf-profiler => github.com/parca-dev/opentelemetry-ebpf-profiler v0.0.0-20241107010347-d633df82a9a2

go.sum

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -87,8 +87,8 @@ github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c h1:+pKlWGMw7gf6bQ
8787
github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA=
8888
github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4=
8989
github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
90-
github.com/elastic/go-freelru v0.13.0 h1:TKKY6yCfNNNky7Pj9xZAOEpBcdNgZJfihEftOb55omg=
91-
github.com/elastic/go-freelru v0.13.0/go.mod h1:bSdWT4M0lW79K8QbX6XY2heQYSCqD7THoYf82pT/H3I=
90+
github.com/elastic/go-freelru v0.15.0 h1:Jo1aY8JAvpyxbTDJEudrsBfjFDaALpfVv8mxuh9sfvI=
91+
github.com/elastic/go-freelru v0.15.0/go.mod h1:bSdWT4M0lW79K8QbX6XY2heQYSCqD7THoYf82pT/H3I=
9292
github.com/elastic/go-perf v0.0.0-20241016160959-1342461adb4a h1:ymmtaN4bVCmKKeu4XEf6JEWNZKRXPMng1zjpKd+8rCU=
9393
github.com/elastic/go-perf v0.0.0-20241016160959-1342461adb4a/go.mod h1:Nt+pnRYvf0POC+7pXsrv8ubsEOSsaipJP0zlz1Ms1RM=
9494
github.com/emicklei/go-restful/v3 v3.11.0 h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g=
@@ -244,8 +244,8 @@ github.com/opencontainers/runtime-spec v1.1.0 h1:HHUyrt9mwHUjtasSbXSMvs4cyFxh+Bl
244244
github.com/opencontainers/runtime-spec v1.1.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0=
245245
github.com/opencontainers/selinux v1.11.0 h1:+5Zbo97w3Lbmb3PeqQtpmTkMwsW5nRI3YaLpt7tQ7oU=
246246
github.com/opencontainers/selinux v1.11.0/go.mod h1:E5dMC3VPuVvVHDYmi78qvhJp8+M586T4DlDRYpFkyec=
247-
github.com/parca-dev/opentelemetry-ebpf-profiler v0.0.0-20241030163650-5b64dd57b3ea h1:HNLGar6f5Sy9DqZirDu4zIniX3Bg90GelQB9HKdhoRQ=
248-
github.com/parca-dev/opentelemetry-ebpf-profiler v0.0.0-20241030163650-5b64dd57b3ea/go.mod h1:poOphaa9n1NeidFV425KI5PzP6Ho90LEkERlJqLBEpE=
247+
github.com/parca-dev/opentelemetry-ebpf-profiler v0.0.0-20241107010347-d633df82a9a2 h1:ZcYFRGuhgf3od4taXiiYOSx4k5W3aoQD22kdv9jK6Ms=
248+
github.com/parca-dev/opentelemetry-ebpf-profiler v0.0.0-20241107010347-d633df82a9a2/go.mod h1:LZs0Ai6k5IPICeMqXRDpr1uyW7NJnoXgyrlaQh36XSM=
249249
github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 h1:onHthvaw9LFnH4t2DcNVpwGmV9E1BkGknEliJkfwQj0=
250250
github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58/go.mod h1:DXv8WO4yhMYhSNPKjeNKa5WY9YCIEBRbNzFFPJbWO6Y=
251251
github.com/pierrec/lz4/v4 v4.1.21 h1:yOVMLb6qSIDP67pl/5F7RepeKYu/VmTyEXvuMI5d9mQ=

main.go

Lines changed: 11 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,6 @@ import (
2323
"github.com/apache/arrow/go/v16/arrow/memory"
2424
"github.com/armon/circbuf"
2525
"github.com/common-nighthawk/go-figure"
26-
"go.opentelemetry.io/ebpf-profiler/host"
27-
otelmetrics "go.opentelemetry.io/ebpf-profiler/metrics"
28-
otelreporter "go.opentelemetry.io/ebpf-profiler/reporter"
29-
"go.opentelemetry.io/ebpf-profiler/times"
30-
"go.opentelemetry.io/ebpf-profiler/tracehandler"
31-
"go.opentelemetry.io/ebpf-profiler/tracer"
32-
tracertypes "go.opentelemetry.io/ebpf-profiler/tracer/types"
33-
"go.opentelemetry.io/ebpf-profiler/util"
3426
"github.com/prometheus/client_golang/prometheus"
3527
"github.com/prometheus/client_golang/prometheus/collectors"
3628
"github.com/prometheus/client_golang/prometheus/promauto"
@@ -41,6 +33,14 @@ import (
4133
"github.com/tklauser/numcpus"
4234
"github.com/zcalusic/sysinfo"
4335
"go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp"
36+
"go.opentelemetry.io/ebpf-profiler/host"
37+
otelmetrics "go.opentelemetry.io/ebpf-profiler/metrics"
38+
otelreporter "go.opentelemetry.io/ebpf-profiler/reporter"
39+
"go.opentelemetry.io/ebpf-profiler/times"
40+
"go.opentelemetry.io/ebpf-profiler/tracehandler"
41+
"go.opentelemetry.io/ebpf-profiler/tracer"
42+
tracertypes "go.opentelemetry.io/ebpf-profiler/tracer/types"
43+
"go.opentelemetry.io/ebpf-profiler/util"
4444
"go.opentelemetry.io/otel/trace"
4545
"go.opentelemetry.io/otel/trace/noop"
4646
"golang.org/x/sys/unix"
@@ -249,10 +249,6 @@ func mainWithExitCode() flags.ExitCode {
249249
return flags.Failure(fmt.Sprintf("Failed to probe eBPF syscall: %v", err))
250250
}
251251

252-
if err = tracer.ProbeTracepoint(); err != nil {
253-
log.Warnf("Failed to probe tracepoint: %v. Parca-agent may fail to run on some kernel versions.", err)
254-
}
255-
256252
externalLabels := reporter.Labels{}
257253
if len(f.Metadata.ExternalLabels) > 0 {
258254
for name, value := range f.Metadata.ExternalLabels {
@@ -317,7 +313,7 @@ func mainWithExitCode() flags.ExitCode {
317313
return flags.Failure("Failed to start reporting: %v", err)
318314
}
319315
otelmetrics.SetReporter(parcaReporter)
320-
parcaReporter.Run(mainCtx)
316+
parcaReporter.Start(mainCtx)
321317
var rep otelreporter.Reporter = parcaReporter
322318

323319
// Load the eBPF code and map definitions
@@ -340,11 +336,8 @@ func mainWithExitCode() flags.ExitCode {
340336
log.Printf("eBPF tracer loaded")
341337
defer trc.Close()
342338

343-
// Initial scan of /proc filesystem to list currently-active PIDs and have them processed.
344-
if err = trc.StartPIDEventProcessor(mainCtx); err != nil {
345-
log.Errorf("Failed to list processes from /proc: %v", err)
346-
}
347-
log.Debug("Completed initial PID listing")
339+
// Start watching for PID events.
340+
trc.StartPIDEventProcessor(mainCtx)
348341

349342
// Attach our tracer to the perf event
350343
if err := trc.AttachTracer(); err != nil {

metrics/all.go

Lines changed: 1 addition & 43 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

metrics/genschema/gen.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ def read_json_array(filename):
2020
package metrics
2121
2222
import (
23-
\totelmetrics "github.com/open-telemetry/opentelemetry-ebpf-profiler/metrics"
23+
\totelmetrics "go.opentelemetry.io/ebpf-profiler/metrics"
2424
)
2525
2626
const (
@@ -64,7 +64,7 @@ def get_unit(s):
6464
return "MetricUnitSeconds"
6565
case _:
6666
raise ValueError(f"Unknown metric unit: {s}")
67-
67+
6868
for metric in data:
6969
if not "name" in metric:
7070
continue

metrics/metrics.json

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -434,48 +434,55 @@
434434
"id": 59
435435
},
436436
{
437+
"obsolete": true,
437438
"description": "Indicator for whether the exeMetadata queue has been overwritten",
438439
"type": "counter",
439440
"name": "ExeMetadataOverwrite",
440441
"field": "agent.overwrites.exe_metadata",
441442
"id": 60
442443
},
443444
{
445+
"obsolete": true,
444446
"description": "Indicator for whether the countsForTraces queue has been overwritten",
445447
"type": "counter",
446448
"name": "CountsForTracesOverwrite",
447449
"field": "agent.overwrites.counts_for_traces",
448450
"id": 61
449451
},
450452
{
453+
"obsolete": true,
451454
"description": "Indicator for whether the metrics queue has been overwritten",
452455
"type": "counter",
453456
"name": "MetricsOverwrite",
454457
"field": "agent.overwrites.metrics",
455458
"id": 62
456459
},
457460
{
461+
"obsolete": true,
458462
"description": "Indicator for whether the framesForTraces queue has been overwritten",
459463
"type": "counter",
460464
"name": "FramesForTracesOverwrite",
461465
"field": "agent.overwrites.frames_for_traces",
462466
"id": 63
463467
},
464468
{
469+
"obsolete": true,
465470
"description": "Indicator for whether the frameMetadata queue has been overwritten",
466471
"type": "counter",
467472
"name": "FrameMetadataOverwrite",
468473
"field": "agent.overwrites.frame_metadata",
469474
"id": 64
470475
},
471476
{
477+
"obsolete": true,
472478
"description": "Indicator for whether the hostMetadata queue has been overwritten",
473479
"type": "counter",
474480
"name": "HostMetadataOverwrite",
475481
"field": "agent.overwrites.host_metadata",
476482
"id": 65
477483
},
478484
{
485+
"obsolete": true,
479486
"description": "Indicator for whether the fallbackSymbols queue has been overwritten",
480487
"type": "counter",
481488
"name": "FallbackSymbolsOverwrite",

reporter/parca_reporter.go

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,13 @@ func (r *ParcaReporter) ReportFramesForTrace(_ *libpf.Trace) {}
235235
func (r *ParcaReporter) ReportCountForTrace(_ libpf.TraceHash, _ uint16, _ *reporter.TraceEventMeta) {
236236
}
237237

238+
// ExecutableKnown returns true if the metadata of the Executable specified by fileID is
239+
// cached in the reporter.
240+
func (r *ParcaReporter) ExecutableKnown(fileID libpf.FileID) bool {
241+
_, known := r.executables.Get(fileID)
242+
return known
243+
}
244+
238245
// ExecutableMetadata accepts a fileID with the corresponding filename
239246
// and caches this information.
240247
func (r *ParcaReporter) ExecutableMetadata(args *reporter.ExecutableMetadataArgs) {
@@ -526,7 +533,7 @@ func New(
526533
return r, nil
527534
}
528535

529-
func (r *ParcaReporter) Run(mainCtx context.Context) (reporter.Reporter, error) {
536+
func (r *ParcaReporter) Start(mainCtx context.Context) error {
530537
// Create a child context for reporting features
531538
ctx, cancelReporting := context.WithCancel(mainCtx)
532539

@@ -564,7 +571,7 @@ func (r *ParcaReporter) Run(mainCtx context.Context) (reporter.Reporter, error)
564571
cancelReporting()
565572
}()
566573

567-
return r, nil
574+
return nil
568575
}
569576

570577
// reportDataToBackend creates and sends out an arrow record for a Parca backend.

0 commit comments

Comments
 (0)