Вы можете явно написать все, что является уникальным для этого конкретного шаблона, и использовать предопределенные шаблоны grok для остальных.
В вашем случае шаблон grok будет иметь вид,
%{TIMESTAMP_ISO8601:Logtimestamp} %{NUMBER:Channel_id} :Answer call from %{NUMBER:Source_number} for %{NUMBER:Destination_Number} %{GREEDYDATA:etc}
Он будет соответствовать только следующему шаблону,
2018-05-07 05:51:34 24 :Answer call from 71840746 for 91783028 [C:\xivr\es\IVR-Dialin.dtx]
Пояснение
Синтаксис для шаблона Грока равен %{SYNTAX:SEMANTIC}
.
В вашем фильтре
%{TIMESTAMP_ISO8601:Logtimestamp}
соответствует 2018-05-07 05:51:34
%{NUMBER:Channel_id}
соответствует 24
:Answer call from
соответствует строке буквально %{NUMBER:Source_number}
соответствует 71840746
%{NUMBER:Destination_Number}
соответствует 91783028
%{GREEDYDATA:etc}
соответствует остальным данным, т.е. [C:\xivr\es\IVR-Dialin.dtx]
в этом порядке.
Выход:
{
"Logtimestamp": [
[
"2018-05-07 05:51:22"
]
],
"Channel_id": [
[
"24"
]
],
"Source_number": [
[
"71840746"
]
],
"Destination_Number": [
[
"91783028"
]
],
"etc": [
[
"[C:\\xivr\\es\\IVR-Dialin.dtx***]"
]
]
}
Вы можете проверить это здесь .
Надеюсь, это поможет.