elasticsearch/pipelines/cdr.json

118 lines
3.9 KiB
JSON

{
"processors" : [
{
"set": {
"field": "cdr.hour",
"value": "0"
}
},
{
"set": {
"field": "cdr.minute",
"value": "0"
}
},
{
"set": {
"field": "cdr.second",
"value": "0"
}
},
{
"grok" : {
"field" : "message",
"patterns" : [
"%{LOGDATE:cdr.call_start},%{TIME_CUSTOM:cdr.call_duration_time},%{INT:cdr.ring_duration},%{DATA:cdr.caller_number},%{WORD:cdr.direction},%{DATA:cdr.called_number},%{DATA:cdr.dialed_number},%{DATA:cdr.account},%{INT:cdr.is_internal},%{INT:cdr.call_id},%{DATA:cdr.continuation},%{DATA:cdr.party1device},%{DATA:cdr.party1name},%{DATA:cdr.party2device},%{DATA:cdr.party2name},%{DATA:cdr.holdtime},%{DATA:cdr.park_time},%{DATA:cdr.field_1},%{DATA:cdr.field_2},%{DATA:cdr.field_3},%{DATA:cdr.field_4},%{DATA:cdr.field_5},%{DATA:cdr.field_6},%{DATA:cdr.field_7},%{DATA:cdr.field_8},%{DATA:cdr.field_9},%{DATA:cdr.field_10},%{DATA:cdr.field_11},%{DATA:cdr.field_12},%{DATA:cdr.field_13},%{HOST:cdr.hostname},%{DATA:cdr.field_14},%{HOST:cdr.field_15},%{DATA:cdr.field_16},%{LOGDATE}"
],
"pattern_definitions" : {
"TIME_CUSTOM" : "%{HOUR_CUSTOM:cdr.hour}:%{MINUTE:cdr.minute}(?::%{SECOND_CUSTOM:cdr.second})",
"HOUR_CUSTOM" : "(?!<[0-9])%{HOUR}",
"SECOND_CUSTOM" : "(?:(?:[0-5]?[0-9]|60))",
"HOST": "%{HOSTNAME}|%{IP}",
"LOGDATE" : "%{YEAR}/%{MONTHNUM}/%{MONTHDAY} %{TIME}"
},
"ignore_failure" : true
}
},
{
"grok" : {
"field" : "message",
"patterns" : [
"(<%{DATA}>|)%{LOGDATE:cdr.log_date} %{HOST:cdr.hostname} cdr-master: \"%{ACCOUNT:cdr.account}\",\"%{POSINT:cdr.caller_number}\",\"%{WORD:cdr.called_number}\",%{DATA:cdr.direction},\"%{CALL_DATE:cdr.call_start}\",\"(%{DATA}|)\",\"%{CALL_DATE:cdr.call_end}\",\"%{INT:cdr.call_duration}\",\"%{DATA}\",\"%{DATA:cdr.call_status}\""
],
"pattern_definitions" : {
"TIME_CUSTOM": "(?!<[0-9])%{HOUR}:%{MINUTE}(?::%{SECOND_CUSTOM})",
"SECOND_CUSTOM": "(?:(?:[0-5]?[0-9]|60))",
"LOGDATE": "%{MONTH}(\\s+)%{MONTHDAY}(\\s+)%{TIME}",
"HOST": "%{HOSTNAME}|%{IP}",
"CALL_DATE": "%{YEAR}-%{MONTHNUM}-%{MONTHDAY}(\\s+)%{TIME}",
"ACCOUNT": "\"(%{DATA}|)\" <%{WORD}>"
},
"ignore_failure" : true
}
},
{
"grok" : {
"field" : "message",
"patterns" : [
"(<%{DATA}>|)%{LOGDATE:cdr.log_date} %{HOST:cdr.hostname} cdr-master: \"%{INT:cdr.call_duration}\",\"%{WORD:cdr.billsec}\",\"%{DATA:cdr.caller_number}\",\"%{DATA:cdr.channel}\",\"%{WORD:cdr.called_number}\",\"%{WORD:cdr.dialed_number}\",\"%{DATA}\",\"%{DATA:cdr.dst_channel}\",\"%{DATA:cdr.call_id}\""
],
"pattern_definitions" : {
"TIME_CUSTOM": "(?!<[0-9])%{HOUR}:%{MINUTE}(?::%{SECOND_CUSTOM})",
"SECOND_CUSTOM": "(?:(?:[0-5]?[0-9]|60))",
"LOGDATE": "%{MONTH}(\\s+)%{MONTHDAY}(\\s+)%{TIME}",
"HOST": "%{HOSTNAME}|%{IP}",
"ACCOUNT": "((\"(%{DATA}|)\" <%{WORD}>)|(%{WORD}))"
},
"ignore_failure" : true
}
},
{
"convert" : {
"field" : "cdr.hour",
"type": "integer"
}
},
{
"convert" : {
"field" : "cdr.minute",
"type": "integer"
}
},
{
"convert" : {
"field" : "cdr.second",
"type": "integer"
}
},
{
"script": {
"source": "ctx.cdr.call_duration = ctx.cdr.hour * 3600 + ctx.cdr.minute * 60 + ctx.cdr.second"
}
},
{
"remove" : {
"field" : "cdr.hour"
}
},
{
"remove" : {
"field" : "cdr.minute"
}
},
{
"remove" : {
"field" : "cdr.second"
}
}
],
"on_failure" : [
{
"set" : {
"field" : "error",
"value" : "{{_ingest.on_failure_message}}"
}
}
]
}