Syslog parse logstash

как можно распарсить различные входные сообщения на поле? Сейчас у меня следующий паттерн:

grok {
  match => {
            "message" => "<%{NONNEGINT:syslog_pri}>%{NONNEGINT:version}%{SPACE}(?:-|%{TIMESTAMP_ISO8601:syslog_timestamp})%{SPACE}(?:-|%{IPORHOST:hostname})%{SPACE}(?:%{SYSLOG5424PRINTASCII:program}|-)%{SPACE}(?:-|%{SYSLOG5424PRINTASCII:process_id})%{SPACE}(?:-|%{SYSLOG5424PRINTASCII:message_id})%{SPACE}(?:-|(?<structured_data>(\[.*?[^\\]\])+))(?:%{SPACE}%{GREEDYDATA:syslog_message}|)"
   }
  add_field => [ "received_at", "%{@timestamp}" ]
  add_field => [ "received_from", "%{host}" ]
}

В поле syslog_message могут приходить несколько различных вариантов сообщений, например: connections: 2, blocked: 0, cpu: 1%, process cpu: 0%, threads: 886, process threads: 75, handles: 26110, process handles: 857, disk queue: 0 или ActiveSessionsCount: 0, TotalSessionsCount: 0, ErrorsCount: 0, RequestsProcessedCount: 0, IsOnline: Yes, ErrorCount: 0, MessageCount: 24, PendingMessageCount: 0, StopOut - * StopOutsCount: 12, ErrorCount: 0, LastStopOutTime: 16057928769979996, LastStopOutLogin: 5037528 написать шаблон для этих значений не трудно, а как мне указать сразу несколько? или как то надо парсить syslog_message и возвращать его в сообщение?


Ответы (0 шт):