Files
alloy/internal/component/pyroscope/testutil/components.go
korniltsev-grafanista 612bbb3ef1 pyroscope.java: allow custom asprof distributions instead of embeded one. (#4452)
* pyroscope.java: decouple archive extraction from the profiler, remove Profiler(use Distribution).

* playground

* fix args

* cleanup

* todo

* review fix

* review fixes

* pyroscope.java: add integration tests (#4454)

* pyroscope.java: add integration tests

fix package name

Revert "pyroscope.java: Fix java log level parameter (#4440)"

This reverts commit 4909877427.

move the helper to pyroscope package

* second integration test

* revert compose tests

* revert unneeded changes

* fix buildtag

* fix buildtag

* improve start time for pyroscope container

* skip integration test if it's not pyoroscope job

* update makefile

* pyroscope.java: Fix java log level parameter (#4440)

* pyroscope.java: Fix java log level parameter

The version bundled of the async profiler has no loglevel parameter:

```
ts=2025-09-16T08:16:50.898924708Z level=error component_path=/profiling.feature component_id=pyroscope.java.java_pods pid=1184752 err="failed to start: asprof failed to run: asprof failed to run /tmp/alloy-asprof-ae0261b1093f2bc4df44a87300fef98dcdebccb5/bin/asprof: exit status 1  Unrecognized option: --loglevel\n"
```

* Quiet is not a valid argument for the async-profiler cli

It can only be used for attaching using agent

* remove comments

* fix

---------

Co-authored-by: Christian Simon <simon@swine.de>

---------

Co-authored-by: Christian Simon <simon@swine.de>
2025-10-09 15:28:27 +00:00

37 lines
968 B
Go

//go:build linux && (arm64 || amd64)
package testutil
import (
"fmt"
"github.com/go-kit/log"
"github.com/grafana/alloy/internal/component/pyroscope"
"github.com/grafana/alloy/internal/component/pyroscope/write"
"github.com/prometheus/client_golang/prometheus"
"go.opentelemetry.io/otel/trace/noop"
)
// CreateWriteComponent creates a pyroscope.write component that forwards to the given endpoint
func CreateWriteComponent(l log.Logger, reg prometheus.Registerer, endpoint string) (pyroscope.Appendable, error) {
var receiver pyroscope.Appendable
e := write.GetDefaultEndpointOptions()
e.URL = endpoint
_, err := write.New(
log.With(l, "component", "pyroscope.write"),
noop.Tracer{},
reg,
func(exports write.Exports) {
receiver = exports.Receiver
},
"test",
"",
write.Arguments{Endpoints: []*write.EndpointOptions{&e}},
)
if err != nil {
return nil, fmt.Errorf("error creating write component: %w", err)
}
return receiver, nil
}