Ошибка для типа и max_open_files в логах сервера logstash - PullRequest
0 голосов
/ 30 января 2019

Я получаю несколько раздражающих сообщений на моем сервере logstash в файле журнала logstash:

Первый выглядит как

[2019-01-29T21:27:30,230][WARN ][logstash.outputs.elasticsearch] Could not index event to Elasticsearch. {:status=>400, :action=>["index", {:_id=>nil, :_index=>"syslog-2019.01.29", :_type=>"doc", :routing=>nil}, #<LogStash::Event:0x7e88287a>], :response=>{"index"=>{"_index"=>"syslog-2019.01.29", "_type"=>"doc", "_id"=>"zsY5nWgB6AmJPdJO_omb", "status"=>400, "error"=>{"type"=>"illegal_argument_exception", "reason"=>"Rejecting mapping update to [syslog-2019.01.29] as the final mapping would have more than 1 type: [messages, doc]"}}}}

Второй для 'max_open_files'

[2019-01-29T21:24:57,887][WARN ][filewatch.tailmode.processor] Reached open files limit: 4095, set by the 'max_open_files' option or default, files yet to open: 422

Это max_open_files относится к эластичному серверу, на который он отправляет данные.

Я увеличил ограничение в /usr/lib/systemd/system/elasticsearch.service файле и /etc/security/limits.conf, но ничего не изменилось.

Мой logstash conffile:

Старый:

[root@myelk04 ~]# cat /etc/logstash/conf.d/syslog.conf
input {
  file {
    path => [ "/data/SYSTEMS/*/messages.log" ]
    start_position => beginning
    sincedb_path => "/dev/null"
    type => "syslog"
  }
}

filter {
  if [type] == "syslog" {
    grok {
      match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp } %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
      add_field => [ "received_at", "%{@timestamp}" ]
      remove_field => ["@version", "host", "message", "_type", "_index", "_score", "path"]
    }
    syslog_pri { }
    date {
      match => [ "syslog_timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
 }
}
}
output {
        if [type] == "syslog" {
        elasticsearch {
                hosts => "myelk01:9200"
                manage_template => false
                index => "syslog-%{+YYYY.MM.dd}"
                document_type => "messages"
  }
 }
}
[root@myelk04 ~]#

текущий:

может быть, я просто удалил document_type => "messages", так как он выдает это сообщение и принимает по умолчанию в качестве документасейчас.

[root@myelk04 ~]# cat /etc/logstash/conf.d/syslog.conf
input {
  file {
    path => [ "/data/SYSTEMS/*/messages.log" ]
    start_position => beginning
    sincedb_path => "/dev/null"
    type => "syslog"
  }
}

filter {
  if [type] == "syslog" {
    grok {
      match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp } %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
      add_field => [ "received_at", "%{@timestamp}" ]
      remove_field => ["@version", "host", "message", "_type", "_index", "_score", "path"]
    }
    syslog_pri { }
    date {
      match => [ "syslog_timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
 }
}
}
output {
        if [type] == "syslog" {
        elasticsearch {
                hosts => "myelk01:9200"
                manage_template => false
                index => "syslog-%{+YYYY.MM.dd}"
  }
 }
}
[root@myelk04 ~]#

1 Ответ

0 голосов
/ 30 января 2019

Первая ошибка говорит о том, что logstash пытается обновить сопоставление для определенного индекса.Это обновление добавит новое сопоставление для типа «doc», но уже существует сопоставление для «сообщений».Это приведет к двум сопоставлениям в одном и том же индексе, что больше не поддерживается.Пожалуйста, проверьте отображение этого индекса и тип документов, которые вы пытаетесь проиндексировать в своих индексах syslog- *.Может быть, вы уже использовали тот же самый индекс для некоторых документов с типом «сообщение»?

Вторая ошибка говорит о том, что количество открытых файлов достигнуто.Чтобы постоянно его увеличивать, вам нужно будет следовать этим инструкциям (которые вы уже частично применили).Выполните эти изменения не только на вашем сервереasticsearch, но и на хосте logstash.

Чтобы применить эти настройки во время работы сервера, необходимо выполнить эту команду и перезапустить службу:

sudo ulimit -n 65535
...