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
?
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áusulaunless
en LogQL para excluir los registros que contienen el textoCronTest
cuandoskipTestLog
está configurado en “Sí”. La consulta modificada se vería así:Esta consulta usa la función
contains
en LogQL para verificar si el campotrace_message
contiene el textoCronTest
, y la cláusulaunless
para excluir los registros que cumplen esta condición cuandoskipTestLog
está configurado en “Sí”. SiskipTestLog
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 cuandoskipTestLog
está configurado en “Sí”. La consulta modificada se vería así:Esta consulta utiliza la función
regexp
en LogQL para coincidir con los registros que contienen el textoCronTest
y agregar una etiqueta (log_label="cron_test"
) a ellos. La cláusulaif
se utiliza para crear una etiqueta vacía ({}
) para los registros que no coinciden con elregexp
. La cláusulaunless
se utiliza para excluir los registros que tienen la etiquetacron_test
cuandoskipTestLog
está configurado en “Sí”. SiskipTestLog
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.