Пока мы находимся в Logstash 5.x, понятия grok остаются прежними.
К сожалению, у Postfix есть некоторые действительно раздражающие шаблоны при регистрации, так как в горстке людей написано около patterns, на которые приходится большая часть данных, которые вы увидите в журналах Postfix. Я буду использовать только некоторые из них.
Ключ состоит в том, чтобы идентифицировать компоненты сообщения, если они соответствуют стандарту или в значительной степени популярны, вероятно, для него уже написан громовой фильтр (например, syslog). Компоненты сообщения, которое вы не знаете, вы можете написать фильтр с grok.
Давайте разобьем сообщение на части:
<22>Sep 17 19:12:14 postfix/smtp[18852]:
: Это почти RFC5424 системный журнал, но отсутствует вер (версия) поле.
- SYSLOG5424PRI: Приоритетное значение
- SYSLOGTIMESTAMP: Самоходный пояснительная
- SYSLOGPROG: Название приложения
28D40A036B: to=<[email protected]>, relay=192.244.100.25[192.244.100.25]:25, delay=0.13, delays=0.01/0.01/0.09/0.02, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as 9030A15D0)
: Это информация о домене специфические для Postfix.
- POSTFIX_KEYVALUE_DATA: Используется в качестве компонента другого фильтра, чтобы соответствовать ключ = значение данных (например, реле = ..., задержка = ...).
- POSTFIX_QUEUEID: Самоходный пояснительная
- POSTFIX_KEYVALUE: Объединяет POSTFIX_QUEUEID и POSTFIX_KEYVALUE_DATA.
- POSTFIX_SMTP_DELIVERY: Использует POSTFIX_KEYVALUE для идентификации вышеуказанной информации до состояния =, после чего это ответ SMTP.
Фильтр:
filter {
if [type] == "postfix" {
grok {
patterns_dir => "/etc/logstash/patterns"
match => { "message" => "%{SYSLOG5424PRI}%{SYSLOGTIMESTAMP} %{SYSLOGPROG}: %{POSTFIX_SMTP_DELIVERY}" }
}
}
}
Где бы вы сохранить шаблоны Postfix в patterns_dir.
Выход:
{
"postfix_queueid" => "28D40A036B",
"@timestamp" => 2017-02-23T08:15:32.546Z,
"postfix_smtp_response" => "250 2.0.0 Ok: queued as 9030A15D0",
"port" => 50228,
"postfix_keyvalue_data" => "to=<[email protected]>, relay=192.244.100.25[192.244.100.25]:25, delay=0.13, delays=0.01/0.01/0.09/0.02, dsn=2.0.0, status=sent",
"syslog5424_pri" => "22",
"@version" => "1",
"host" => "10.0.2.2",
"pid" => "18852",
"program" => "postfix/smtp",
"message" => "<22>Sep 17 19:12:14 postfix/smtp[18852]: 28D40A036B: to=<[email protected]>, relay=192.244.100.25[192.244.100.25]:25, delay=0.13, delays=0.01/0.01/0.09/0.02, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as 9030A15D0)"
}
Все вышеперечисленные ГРОК фильтров либо common или написаны кем-то еще, чтобы служить цели. К счастью, многие используют Postfix, но у немногих есть фильтры для него, так как это довольно сложно.
Как только это будет установлено, вы можете получить довольно crafty с вашей конфигурацией Logstash.