Почему фильтр 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"
}
Другие вопросы по тегам