grafana / grafana/pyroscope-java

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

Abierto
#147 1 comentario 4 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
Java
Estrellas
126
Forks
48
Merge medio
4 d 14 h
PR fusionados (30 d)
5

Descripción

### 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.

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Línea de trabajo

Comienza con agent/src/main/java/io/pyroscope/javaagent/PyroscopeAgent.java y agent/src/main/java/io/pyroscope/javaagent/api/Logger.java, los puntos de entrada enlazados en el issue. Sigue cómo se inicializa el logger del agente y revisa la configuración existente PYROSCOPE_LOG_LEVEL. Se considera completado cuando el agente expone la opción de formato de log solicitada y produce el formato seleccionado para su salida, con cobertura para los formatos compatibles.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
java
Área
observability
Tipo de issue
Nueva funcionalidad
Dificultad
3/5
Tiempo estimado
1-2 días
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
42/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.