История изменений
Исправление Nurmukh, (текущая версия) :
А попробуй свои регулярки проверить на сайте regex101.com.
Также в частности, важно понимать, что «все украдено до нас», например данные регулярки наверное, уже давно распарсены и находятся в Elasticsearch, Filebeat.
Я в свое время сильно упарывался по Postfix и помню как настраивал ElasticSearch как централизованное хранилище логов с множества Postfix серверов. Ну вот точно помню что регулярки уже были готовые. Rsyslog тоже вроде умеют в эти регулярки.
Вот загуглил и нашел такой пайплайн. попробуй регулярку отсюда.
PUT _ingest/pipeline/postfix-parser-pipeline
{
"description": "Parses standard Postfix maillogs",
"processors": [
{
"grok": {
"field": "message",
"patterns": [
"%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} postfix/%{WORD:postfix_component}\\[%{POSINT:postfix_pid}\\]: %{HEX:postfix_queue_id}: client=%{DATA:postfix_client_hostname}\\[%{IP:postfix_client_ip}\\]",
"%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} postfix/%{WORD:postfix_component}\\[%{POSINT:postfix_pid}\\]: %{HEX:postfix_queue_id}: from=<%{DATA:postfix_from}>, size=%{POSINT:postfix_size}, nrcpt=%{POSINT:postfix_recipient_count}",
"%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} postfix/%{WORD:postfix_component}\\[%{POSINT:postfix_pid}\\]: %{HEX:postfix_queue_id}: to=<%{DATA:postfix_to}>, relay=%{DATA:postfix_relay}, delay=%{NUMBER:postfix_delay:float}, delays=%{DATA:postfix_delays}, dsn=%{DATA:postfix_dsn}, status=%{WORD:postfix_status}"
],
"ignore_missing": true
}
},
{
"date": {
"field": "syslog_timestamp",
"formats": ["MMM d HH:mm:ss", "MMM dd HH:mm:ss"],
"target_field": "@timestamp"
}
}
]
}
Исходная версия Nurmukh, :
А попробуй свои регулярки проверить на сайте regex101.com.
Также в частности, важно понимать, что «все украдено до нас», например данные регулярки наверное, уже давно распарсены и находятся в Elasticsearch, Filebeat.
Я в свое время сильно упарывался по Postfix и помню как настраивал ElasticSearch как централизованное хранилище логов с множества Postfix серверов. Ну вот точно помню что регулярки уже были готовые. Rsyslog тоже вроде умеют в эти регулярки.
Вот загуглил и нашел такой пайплайн. попробуй регулярку отсюда.
PUT _ingest/pipeline/postfix-parser-pipeline { «description»: «Parses standard Postfix maillogs», «processors»: [ { «grok»: { «field»: «message», «patterns»: [ «%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} postfix/%{WORD:postfix_component}\[%{POSINT:postfix_pid}\]: %{HEX:postfix_queue_id}: client=%{DATA:postfix_client_hostname}\[%{IP:postfix_client_ip}\]», «%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} postfix/%{WORD:postfix_component}\[%{POSINT:postfix_pid}\]: %{HEX:postfix_queue_id}: from=<%{DATA:postfix_from}>, size=%{POSINT:postfix_size}, nrcpt=%{POSINT:postfix_recipient_count}», «%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} postfix/%{WORD:postfix_component}\[%{POSINT:postfix_pid}\]: %{HEX:postfix_queue_id}: to=<%{DATA:postfix_to}>, relay=%{DATA:postfix_relay}, delay=%{NUMBER:postfix_delay:float}, delays=%{DATA:postfix_delays}, dsn=%{DATA:postfix_dsn}, status=%{WORD:postfix_status}» ], «ignore_missing»: true } }, { «date»: { «field»: «syslog_timestamp», «formats»: [«MMM d HH:mm:ss», «MMM dd HH:mm:ss»], «target_field»: «@timestamp» } } ] }