Por que o filtro logstash syslog_pri não pode ver a prioridade nas mensagens do syslog?

1

Estou executando o LS 2.0.0 e notei um problema em que o filtro syslog_pri não detecta a prioridade no início dos meus syslogs. Minha configuração de filtro é a seguinte:

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" ]
    }
  }
}

Isso deve ser capaz de puxar o PRI dos logs a seguir, mas ele falha e é revertido para a prioridade padrão (13) de todas as mensagens:

{
  "_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
  ]
}

Como você pode ver, o PRI está configurado para 86, e meu filtro de grok pega isso, mas o syslog_pri não altera esses valores do padrão:

    "syslog_facility": "user-level",
    "syslog_severity": "notice",

Alguém pode sugerir o que estou fazendo errado?

    
por Rumbles 10.11.2015 / 13:33

1 resposta

2

Ao olhar para os documentos para o filtro syslog_pri , parece que está procurando a prioridade em um campo chamado syslog_pri , em oposição à mensagem bruta.

Dado que você está usando esse filtro antes de inserir a linha, ele não tem nada nesse campo e, como tal, está retornando a prioridade 13 (user.notice), conforme descrito nos documentos acima.

Para funcionar do jeito que você quer, você precisará mover o syslog_pri filter após o grok e alterá-lo para isso:

syslog_pri { 
  syslog_pri_field_name => "syslog5424_pri"
}
    
por 10.11.2015 / 14:47