Logstash: Useful grok patterns for asterisk

Где живут grok-patterns (Ubuntu):

/usr/share/logstash/vendor/bundle/jruby/2.3.0/gems/logstash-patterns-core-4.1.2/patterns/grok-patterns

Версия в пути может изменяться, но основная идея ясна

 

Суть: по умолчанию в filters для asterisk.json для описания имени транка и канала используется grok BASE16FLOAT, который, если у вас, как у меня, в имени транка есть BASE64FLOAT-последовательность (например как у меня -сс-) — откусит имя транка по ней.

grok {
match => ["channel", "%{DATA:src_channel_type}/%{DATA:src_channel_identifier}-%{BASE16FLOAT:src_channel_id}"]
tag_on_failure => []
}

Распарсит строку SIP/vbb-trunk-cc-balancer-00039642 в:

src_channel_type : SIP

src_channel_identifier: vbb-trunk

src_channel_id: grokparsefailure (ибо BASE64, потом шлак, потом опять BASE64)

 

Поэтому добавляю 2 паттерна:

ASTERISKTRUNK (((?:[-])([0-9A-Fa-f]{4,15})))
ASTERISKCHAN ([0-9A-Fa-f]{5,15})

и фильтр теперь выглядит так:

 

grok {
match => ["channel", "%{DATA:src_channel_type}/%{DATA:src_channel_identifier}-%{ASTERISKCHAN:src_channel_id}"]
tag_on_failure => []
}

 

Enjoy

Добавить комментарий

Войти с помощью: