grafana / pyroscope-java

pyroscope java integration
Apache License 2.0
72 stars 31 forks source link

Can we change the configuration like sampling duration at runtime without restarting the app? #131

Open Nitish1210 opened 8 months ago

Nitish1210 commented 8 months ago

Currently, we can provide the sampling duration at the time of building configuration and then we provide that configuration to PyroscopeAgent.start(config) method.

But i didn't find any method/api so that i can change the sampling duration/sampling rate after starting the agent without restarting the app.

Please let me know if we can achieve this behavior already and i have missed it or it is not possible for now with current code.

Thanks.

    PyroscopeAgent.start(
        new Config.Builder()
            .setApplicationName("app-java")
            .setProfilingEvent(EventType.ITIMER)
            .setFormat(Format.JFR)
            //pyroscope is service name
            // pyroscope-test is namespace in which pyroscope service is running and listening for profiling data
            .setServerAddress("http://pyroscope.pyroscope-test.cluster.local:4040")
            // Optionally, if authentication is enabled, specify the API key.
            // .setAuthToken(System.getenv("PYROSCOPE_AUTH_TOKEN"))
            // Optionally, if you'd like to sets allocation threshold to register events, in bytes. '0' registers all events
            // .setProfilingAlloc("0")
            .setSamplingDuration(Duration.ofSeconds(1))
            .build()
    );
korniltsev commented 6 months ago

Currently not possible. You can work around it by creating a custom ProfilingScheduler.