Hola a Todos
Soy muy novata con ELK y tengo un problema para el que necesitaría vuestra ayuda.
Tengo una serie de archivos xml con esta configuración
<row> <Date>16/05/2016</Date> <Hour>00:00:03</Hour> <Unit>OTT-TV-Ulises3</Unit> <TestVerdict>PASS</TestVerdict> <Description>Test OK</Description> <ChannelName>Canal Plus Series</ChannelName> <ZappingTime>4515</ZappingTime> </row> <row> <Date>16/05/2016</Date> <Hour>00:00:03</Hour> <Unit>OTT-TV-Camarillo2</Unit> <TestVerdict>PASS</TestVerdict> <Description>Test OK</Description> <ChannelName>National Geographic</ChannelName> <ZappingTime>4485</ZappingTime> </row> <row> <Date>16/05/2016</Date> <Hour>00:00:03</Hour> <Unit>OTT-FO-AREQUIPA2</Unit> <TestVerdict>PASS</TestVerdict> <Description>Test OK</Description> <ChannelName>DisneyJr</ChannelName> <ZappingTime>4469</ZappingTime> </row> <row> <Date>16/05/2016</Date> <Hour>00:00:04</Hour> <Unit>OTT-FO-PILAR</Unit> <TestVerdict>PASS</TestVerdict> <Description>Test OK</Description> <ChannelName>Calle 13</ChannelName> <ZappingTime>10797</ZappingTime> </row> </rows>
Para la configuración de logstash he usado el codec multilinea para agrupar documentos y el filtro xml donde creo los campos que quiero con los xpath correspondientes tal que así:
input {
file {
path => "C:/ES/*.xml"
start_position => "beginning"
type => "stock3"
codec =>multiline {
pattern => "/row"
negate => "true"
what => previous
}
}
}
filter {
xml {
source => message
store_xml => "false"
remove_namespaces => "true"
xpath => [
"/rows/row/Date/text()", "Date",
"/rows/row/Hour/text()", "Hour",
"/rows/row/Unit/text()", "Unit",
"/rows/row/TestVerdict/text()", "TestVerdict",
"/rows/row/Description/text()", "Description",
"/rows/row/ChannelName/text()", "ChannelName",
"/rows/row/ZappingTime/text()", "ZappingTime"
]
}
date {
match => [ "Hour","HH:mm:ss"]
target => "@timestamp"
}
date {
match => [ "Date","dd/MM/yyyy"]
}
}
output{
elasticsearch{
index => ["logstash-prueba3-%{+yyyy.MM.dd}"]
hosts => ["localhost:9200"]
}
stdout { codec => rubydebug }
}
El resultado es una sola linea tal que así:
Pipeline main started
{
"@timestamp" => "2016-05-24T10:09:43.996Z",
"message" => "?<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n\r\n \r\n 16/05/2016\r\n 00:00:03\r\n OTT-FO-Barcelona\r\n PASS\r\n Test OK\r\n Cosmo\r\n 5390\r",
"@version" => "1",
"tags" => [
[0] "multiline"
],
"path" => "C:/ES/xml/OTT live/TVOTT/Prueba corta/TVOTT_prueba1.xml",
"host" => "vcamarillo-PC",
"type" => "stock3"
}
He realizado múltiples configuraciones con los xpath pero no consigo nada distinto.
Me podríais ayudar?
Muchas Gracias
Un saludo
Merche