Почему фильтр logstash syslog_pri не видит приоритет в сообщениях syslog
Я использую LS 2.0.0, и я заметил проблему, когда фильтр syslog_pri не определяет приоритет в начале моих системных журналов. Мой фильтр конфигурации выглядит следующим образом:
filter {
if [type] == "relp" {
syslog_pri { }
grok {
match => { "message" => "%{SYSLOG5424PRI}(?:%{POSINT} |-)+(?:%{TIMESTAMP_ISO8601:syslog5424_ts}|-) +(?:%{HOSTNAME:syslog5424_host}|-) +(-|%{SYSLOG5424PRINTASCII:syslog5424_app}) +%{GREEDYDATA:syslog5424_msg}" }
add_field => [ "received_at", "%{@timestamp}" ]
add_field => [ "received_from", "%{syslog5424_host}" ]
tag_on_failure => "gpf_relp"
}
date {
match => [ "syslog5424_ts", "ISO8601" ]
}
}
}
Это должно быть в состоянии извлечь PRI из следующих журналов, но это не удается и возвращается к приоритету по умолчанию (13) для всех сообщений:
{
"_index": "logstash-2015.11.10",
"_type": "relp",
"_id": "AVDxXHq4lzuNTbjDHPbE",
"_score": null,
"_source": {
"message": "<86>1 2015-11-10T12:26:20.429088+00:00 integration-gw3 sshd 2587 - - pam_unix(sshd:session): session closed for user sftpuser\n",
"@version": "1",
"@timestamp": "2015-11-10T12:26:20.429Z",
"type": "relp",
"host": "10.10.11.23:39532",
"syslog_severity_code": 5,
"syslog_facility_code": 1,
"syslog_facility": "user-level",
"syslog_severity": "notice",
"syslog5424_pri": "86",
"syslog5424_ts": "2015-11-10T12:26:20.429088+00:00",
"syslog5424_host": "integration-gw3",
"syslog5424_app": "sshd",
"syslog5424_msg": "2587 - - pam_unix(sshd:session): session closed for user sftpuser\n",
"received_at": "2015-11-10T12:26:20.430Z",
"received_from": "integration-gw3"
},
"fields": {
"@timestamp": [
1447158380429
]
},
"sort": [
1447158380429
]
}
Как вы можете видеть, PRI установлен на 86, и мой фильтр grok подхватывает это, но syslog_pri не меняет эти значения по умолчанию:
"syslog_facility": "user-level",
"syslog_severity": "notice",
Кто-нибудь может подсказать, что я делаю не так?
1 ответ
Глядя на документы для syslog_pri
фильтр, кажется, он ищет приоритет в поле с именем syslog_pri
, в отличие от необработанного сообщения.
Учитывая, что вы запускаете этот фильтр перед тем, как вводить строку, он не имеет ничего в этом поле и поэтому возвращает приоритет 13 (user.notice), как указано в документации выше.
Чтобы он работал так, как вы хотите, вам нужно переместить syslog_pri
отфильтруйте после grok и измените это на это:
syslog_pri {
syslog_pri_field_name => "syslog5424_pri"
}