logstash falha ao analisar a entrada do syslog

2

Eu configurei o logstash (v1.5.0), com uma entrada syslog simples, como segue:

input {
  syslog {
    type => syslog
    port => 5514
  }
}

filter {
  kv {}
}

output {
  elasticsearch {
    cluster => "logs"
    host => "0.0.0.0"
    protocol => "transport"
  }
}

No entanto, parece estar falhando em alguns dos logs do cron. A linha a seguir não consegue analisar com _grokparsefailure_sysloginput :

<77>Jul 22 22:01:01 ip-172-31-2-48 run-parts(/etc/cron.hourly)[2599 finished 0yum-hourly.cron

A saída final do JSON é:

{
  "_index": "logstash-2015.07.22",
  "_type": "syslog",
  "_id": "AU63yLrC118PBgBqQxRA",
  "_score": null,
  "_source": {
    "message": "<77>Jul 22 22:01:01 ip-172-31-2-48 run-parts(/etc/cron.hourly)[2599 finished 0yum-hourly.cron\n",
    "@version": "1",
    "@timestamp": "2015-07-22T22:01:01.569Z",
    "type": "syslog",
    "host": "172.31.2.48",
    "tags": [
      "_grokparsefailure_sysloginput"
    ],
    "priority": 0,
    "severity": 0,
    "facility": 0,
    "facility_label": "kernel",
    "severity_label": "Emergency"
  },
  "fields": {
    "@timestamp": [
      1437602461569
    ]
  },
  "sort": [
    1437602461569
  ]
}

Algum apontador?

    
por Olly 23.07.2015 / 00:04

1 resposta

4

A entrada syslog usa grok internamente, sua mensagem provavelmente não está seguindo o padrão syslog 100%.

A solução neste link funcionou para mim: link

As principais informações do link são:

Replace the existing syslog block in the Logstash configuration with:

input {
  tcp {
    port => 514
    type => syslog
  }
  udp {
    port => 514
    type => syslog
  }
}

Next, replace the parsing element of our syslog input plugin using a grok filter plugin.

filter {
  if [type] == "syslog" {
    grok {
      match => { "message" => "<%{POSINT:syslog_pri}>%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
    }
  }
}

Você pode editar a sintaxe de correspondência de filtro ("grok") agora, para corresponder ao formato desejado. Também é possível oferecer suporte a várias sintaxes diferentes com o uso criativo de if , else if e else .

    
por 24.07.2015 / 13:24

Tags