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.

Grafana: ¿Es posible utilizar variables en la consulta del panel basado en Loki?

Estoy trabajando en un panel del tablero basado en Loki en Grafana. Tengo un panel para buscar texto en los registros de rastreo de Loki, la consulta actual es la siguiente:

{job="abc-service"}
|~ "searchTrace"
|json
|line_format "{if .trace_message}} Mensaje: \t{{.trace_message}} {{end}}"

Donde searchTrace es una variable de tipo “Cuadro de texto” para que el usuario ingrese texto de búsqueda.

Quiero incluir otra variable skipTestLog para omitir los registros creados por algunas tareas de cron de prueba. skipTestLog es una variable personalizada con dos opciones: Sí, No.

Supongamos que los registros creados por las tareas de cron de prueba contienen el texto CronTest en el campo trace_message después del analizador json, ¿hay alguna forma de filtrarlos según el valor seleccionado de skipTestLog?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, hay algunas formas de filtrar los registros creados por tareas cron de prueba en función del valor seleccionado de skipTestLog. Una forma es utilizar la cláusula unless en LogQL para excluir los registros que contienen el texto CronTest cuando skipTestLog está configurado en “Sí”. La consulta modificada se vería así:

    {job="abc-service"} 
    |~ "searchTrace"
    | json 
    | line_format "{if .trace_message}} Mensaje: \t{{.trace_message}} {{end}}"
    | unless skipTestLog == "Sí" and contains({{.trace_message}}, "CronTest")
    

    Esta consulta usa la función contains en LogQL para verificar si el campo trace_message contiene el texto CronTest, y la cláusula unless para excluir los registros que cumplen esta condición cuando skipTestLog está configurado en “Sí”. Si skipTestLog está configurado en “No”, se mostrarán todos los registros.

    Otra forma de filtrar los registros es modificar el analizador json para agregar una etiqueta a los registros creados por tareas cron de prueba, y luego utilizar el operador != para excluir los registros con esa etiqueta cuando skipTestLog está configurado en “Sí”. La consulta modificada se vería así:

    {job="abc-service"} 
    |~ "searchTrace" 
    | json 
      | regexp "CronTest" as cron_test 
      | if cron_test == "CronTest" 
        then {__name__="log_label", log_label="cron_test"} 
        else {}
    | line_format "{if .trace_message}} Mensaje: \t{{.trace_message}} {{end}}"
    | unless skipTestLog == "Sí" and log_label != ""
    

    Esta consulta utiliza la función regexp en LogQL para coincidir con los registros que contienen el texto CronTest y agregar una etiqueta (log_label="cron_test") a ellos. La cláusula if se utiliza para crear una etiqueta vacía ({}) para los registros que no coinciden con el regexp. La cláusula unless se utiliza para excluir los registros que tienen la etiqueta cron_test cuando skipTestLog está configurado en “Sí”. Si skipTestLog está configurado en “No”, se mostrarán todos los registros.

    Ambos métodos deberían funcionar, pero la elección del método dependerá de su caso de uso y requisitos específicos.

Comments are closed.