The date filter fails when attempting to match a unix epoch integer field and I can't figure out why.
The data ingested is from xml using the following logstash config:
input {
file {
path => [ "/home/ben/dmarc-reports/AvidXchange.com!domain.com!1586232003!1586318403.xml" ]
start_position => "beginning"
mode => "read"
sincedb_path => "/home/ben/.sincedb-dmarctest"
exit_after_read => true
file_completed_action => "log"
file_completed_log_path => "/home/ben/dmarccompleted.log"
codec => multiline {
pattern => "<feedback>"
negate => "true"
what => "previous"
}
}
}
filter {
xml {
source => "message"
target => "parsed_xml"
store_xml => false
xpath => [
"/feedback/report_metadata/org_name/text()", "reporting_org",
"/feedback/report_metadata/report_id/text()", "report_id",
"/feedback/report_metadata/date_range/begin/text()", "report_start",
"/feedback/report_metadata/date_range/end/text()", "report_end",
"/feedback/record/row/source_ip/text()", "email_server_ip",
"/feedback/record/row/policy_evaluated/dkim/text()", "policy_dkim",
"/feedback/record/row/policy_evaluated/spf/text()", "policy_spf",
"/feedback/auth_results/dkim/result/text()", "auth_dkim",
"/feedback/auth_results/spf/result/text()", "auth_spf"
]
}
mutate {
convert => {
"report_start" => "integer"
"report_end" => "integer"
}
}
date {
match => [ "report_start", "UNIX", "UNIX_MS" ]
#target => "report_start"
}
date {
match => [ "report_end", "UNIX", "UNIX_MS" ]
target => "report_end_time"
}
dns {
reverse => [ "email_server_ip" ]
}
if '<?xml version="1.0" encoding="UTF-8" ?>' in [message] { drop {} }
}
output {
elasticsearch {
index => "logstash_dmarcxml_%{+YYYY.MM.dd}"
}
}
Also does anyone know a list of of xpath functions that logstash accepts?