grafana / grafana/pyroscope-java

Be able to set an agent log format with a configuration option

Offen
#147 1 Kommentar 4 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
Java
Sterne
126
Forks
48
Ø Merge
4 T. 14 Std.
Gemergte PRs (30 T.)
5

Beschreibung

### Our scenario

Hello. We are using docker as the underlying technology to deploy apps and the observability stack. For all the logs we decide to use JSON format that is sent to our Loki backend.
We are trying to adopt the pyroscope Java Otel extension (that implicitly has the Java Agent) to send profiling data to our Pyroscope server.

### The issue

During our testing, when we are sending the Pyroscope backend server down, all Java apps using the extension are producing lot of logs that don't align with the rest of echosystem. In our case is JSON.
This is the kind of output we are getting from the agent logger in the docker console:

```
2024-03-21 11:37:15.292 [ERROR] Error uploading snapshot: 502
502 Bad Gateway

502 Bad Gateway



nginx

```

Currently the agent only has this log parameter `PYROSCOPE_LOG_LEVEL` which is not enough for this case.

### Possible solutions

- As discussed in this [thread](https://app.slack.com/client/T05675Y01/C049PLMV8TB) a custom logger interface implementation can be done:

[https://github.com/grafana/pyroscope-java/blob/f73ebfaae1fcdfdf61d3418a78807c5b2b0[…]/agent/src/main/java/io/pyroscope/javaagent/PyroscopeAgent.java](https://github.com/grafana/pyroscope-java/blob/f73ebfaae1fcdfdf61d3418a78807c5b2b0e869d/agent/src/main/java/io/pyroscope/javaagent/PyroscopeAgent.java#L98)
[https://github.com/grafana/pyroscope-java/blob/82b1daba0dc05b1851e6b96f2d760ab7901[…]0c49/agent/src/main/java/io/pyroscope/javaagent/api/Logger.java](https://github.com/grafana/pyroscope-java/blob/82b1daba0dc05b1851e6b96f2d760ab790120c49/agent/src/main/java/io/pyroscope/javaagent/api/Logger.java#L3)

However, that would require initializing the profiler outside the otel extension, and this is not available when it's running as a javagent.

- Add a flag `PYROSCOPE_LOG_FORMAT` to set the logger format. it could be JSON or LOGFTM to align with rest of Grafana stack.

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Rechercherichtung

Start with agent/src/main/java/io/pyroscope/javaagent/PyroscopeAgent.java and agent/src/main/java/io/pyroscope/javaagent/api/Logger.java, the entry points linked in the issue. Trace how the agent logger is initialized and review the existing PYROSCOPE_LOG_LEVEL configuration. Done means the agent exposes the requested log-format option and produces the selected format for its output, with coverage for the supported formats.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
java
Bereich
observability
Issue-Typ
Feature
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
42/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.