Hola buen día,
Estoy trabajando con un log como el siguiente (fragmento):
2018-01-30 18:14:10.466554
(0x03000000:PCDataField ):folio = '201711231427280265' (CHARACTER)
(0x03000000:PCDataField ):idProceso = '7' (CHARACTER)
(0x03000000:PCDataField ):idSubproceso = '101' (CHARACTER)
(0x03000000:PCDataField ):idSubetapa = '273' (CHARACTER)
(0x03000000:PCDataField ):idSnapshot = '2064.c76a4df4-7e11-4c0a-9a04-f305faaef4d6' (CHARACTER)
(0x01000000:Folder ):parametros = (
(0x01000000:Folder):parametro = (
(0x03000000:PCDataField):nombre = 'REPROCESO' (CHARACTER)
(0x01000000:Folder ):valores = (
(0x03000000:PCDataField):valor = '2' (CHARACTER)
)
)
(0x01000000:Folder):parametro = (
(0x03000000:PCDataField):nombre = 'ID_INSTANCIA' (CHARACTER)
(0x01000000:Folder ):valores = (
(0x03000000:PCDataField):valor = '16649' (CHARACTER)
)
)....
cada que se genera un nuevo evento se genera un bloque similar por lo cual lo separe usando el codec multilinea de esta manera:
input {
file {
path => "/home/test.log"
start_position => "beginning"
codec => multiline {
pattern => "^%{TIMESTAMP_ISO8601} "
negate => true
what => "previous"
}
}
}
Hasta aquí todo funciona, después trato de aplicar un filtro grok para obtener los campos y los valores (folio, idProceso, etc.) utilizo el siguiente filtro:
grok{
match => { "message" => "\W\w+:\w+\W:%{DATA:linea}(" }
}
pero solo se aplica a la primera linea del multilinea, es decir, solo regresa: folio = '201711231427280265'
No se como hacer para que también se aplique a las siguientes líneas.
Espero puedan ayudarme.
Gracias.