es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Puede Grafana/Loki convertir una cadena de texto a objeto y luego expandirlo?

Estoy analizando registros de Traefik en Loki y tengo una entrada de registro como esta:

{
  "Request": "{\"Method\":\"GET\",\"URL\":{\"Scheme\":\"\",\"Opaque\":\"\",\"User\":null,\"Host\":\"\",\"Path\":\"/test\",\"RawPath\":\"\",\"ForceQuery\":false,\"RawQuery\":\"\",\"Fragment\":\"\",\"RawFragment\":\"\"},\"Proto\":\"HTTP/2.0\",\"ProtoMajor\":2,\"ProtoMinor\":0,\"Header\":{\"Accept\":[\"*/*\"],\"User-Agent\":[\"something\"],\"X-Forwarded-Host\":[\"example.com\"],\"X-Forwarded-Port\":[\"443\"],\"X-Forwarded-Proto\":[\"https\"],\"X-Forwarded-Server\":[\"xxx\"],\"X-Real-Ip\":[\"x.x.x.x\"]},\"ContentLength\":0,\"TransferEncoding\":null,\"Host\":\"example.com\",\"Form\":null,\"PostForm\":null,\"MultipartForm\":null,\"Trailer\":null,\"RemoteAddr\":\"x.x.x.x:yyy\",\"RequestURI\":\"/test\",\"TLS\":null}",
  "level": "debug",
  "msg": "vulcand/oxy/roundrobin/rr: begin ServeHttp on request",
  "time": "2021-12-13T11:52:42-05:00"
}

¿Grafana puede detectar los objetos como level, msg y request, pero hay alguna manera de convertir esa línea de Request a JSON y hacer que también la detecte o expanda? El resultado debería ser algo así como request.method, request.URL, etc.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, hay una forma de convertir la línea de solicitud a JSON y hacer que Grafana la detecte o expanda también. Puedes usar el analizador Loki en Grafana para analizar el registro de Traefik y extraer los campos de la línea de solicitud JSON. Para hacer esto, puedes crear un archivo de configuración del analizador que defina el diseño de la entrada del registro y los campos a extraer.

    Por ejemplo, el archivo de configuración del analizador puede ser algo como esto:

    parsers:
      - name: traefik
        pattern: '{^({[^{}]*}|[^{}])*(}{([^{}])*)?$}'
        time_key: time
        time_format: "2006-01-02T15:04:05-07:00"
        json_fields:
          - name: request
            path: Request
    

    En este archivo de configuración, definimos un analizador llamado “traefik” que coincide con el patrón de la entrada del registro JSON, y extrae la hora y el campo JSON “Request”. También especificamos el formato de hora del registro para que Grafana pueda analizar correctamente la hora.

    Después de haber creado el archivo de configuración del analizador, puedes aplicarlo a tu fuente de datos Loki en Grafana. Luego, puedes crear una consulta en Grafana que use el analizador para extraer los campos de la entrada del registro y visualizar los resultados en una tabla o gráfico. Por ejemplo, la consulta puede ser algo como esto:

    {app="traefik"} | json | traefik
    

    En esta consulta, filtramos los registros que tienen la etiqueta “app=traefik”, luego aplicamos el analizador Loki usando la función “json”, y finalmente aplicamos la configuración del analizador “traefik” que definimos anteriormente.

    Una vez que hayas ejecutado la consulta, Grafana debería poder expandir el campo “request” en subcampos como “request.method”, “request.URL”, etc., y puedes usar estos campos en tu visualización.

Comments are closed.