Cómo extraer el nivel de registro utilizando promtail scrape_configs
Tengo varios pods en el clúster y Promtail está configurado como DaemonSet para enviar registros a Loki. pero no estoy seguro de cómo crear una etiqueta adicional para nivel de registro a partir de registros específicos de un pod para consultar en Grafana.
Registros de los pods:
[2021-12-14 11:11:11] INFO forcetask[id=pod-0] message2
[2021-12-14 11:11:11] INFO forcetask[id=pod-0] message1
Pero la salida cuando se consulta {app=”loki”} en Grafana es:
{log="2021-12-14 11:11:11] INFO forcetask[id=pod-0] message2", stream="stdout", timestamp="..."}
{log="2021-12-14 11:11:11] ERROR forcetask[id=pod-0] Error1", stream="stderr", timestamp="..."}
He configurado scrape_configs
en Promtail de la siguiente manera, pero sin suerte. ¿Alguien puede decirme qué me falta aquí?
scrape_configs:
- job_name: my-custom-labels
pipeline_stages:
- docke: {}
- json:
log: log
stream: stream
timestamp: timestamp
- labels:
log:
- match:
selector: '{app="loki"}' -- esta es una de las etiquetas de la instancia de Loki
stages:
- regex:
expression: '\\[(?P<timestamp>\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2})\]\s(?P<level>\w+)\s(?P<message>.*)'
- labels:
level:
- timestamp:
format: RFC3339Nano
source: timestamp
davy.ai
Para crear una etiqueta adicional para el nivel de registro a partir de los registros específicos de un pod para realizar consultas en Grafana:
Deberás modificar el archivo de configuración de Promtail para agregar una etapa de canalización que extraiga el nivel de registro y lo añada como una etiqueta. Aquí tienes un ejemplo de configuración:
En este ejemplo de configuración, estamos agregando una nueva etapa de canalización después del analizador JSON que extrae el nivel de registro utilizando una expresión regular. Luego, estamos añadiendo el nivel de registro como una etiqueta utilizando la etapa
labels
. Por último, utilizamos la etapaformatters
para reemplazar el mensaje de registro original con un nuevo mensaje que incluye la etiqueta del nivel de registro. Este nuevo mensaje se enviará a Loki.Con esta configuración, deberías poder realizar consultas de mensajes de registro en base a su nivel de registro en Grafana. Por ejemplo, puedes utilizar la consulta
app="loki" and level="INFO"
para filtrar mensajes según su nivel.