индексация ошибок в elasticsearch из filebeat и logstash

Я установил стек лося для локального использования файлов журналов; теперь я пытаюсь добавить filebeat, который будет выводиться в logstash для фильтрации перед индексированием в elasticsearch. вот мой файл конфигурацииbeat.yml:

prospectors:
# Each - is a prospector. Below are the prospector specific configurations
-
  paths:
    - /var/samplelogs/wwwlogs/framework*.log
  input_type: log
  document_type: framework
logstash:
   # The Logstash hosts
   hosts: ["localhost:5044"]
logging:
   to_syslog: true

вот конфигурация logstash:

input {
  beats {
    port => 5044
  }
}
filter {
  if [type] == "framework" {
    grok {
      patterns_dir => "/etc/logstash/conf.d/patterns"
        match => {'message' => "\[%{WR_DATE:logtime}\] \[error\] \[app %{WORD:application}\] \[client %{IP:client}\] \[host %{HOSTNAME:host}\] \[uri %{URIPATH:resource}\] %{GREEDYDATA:error_message}"}
    }
    date {
      locale => "en"
        match => [ "logtime", "EEE MMM dd HH:mm:ss yyyy" ]
    }
  }
 }
 output {
  elasticsearch {
    host => "localhost"
    port => "9200"
    protocol => "http"
    # manage_template => false
    index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
    document_type => "%{[@metadata][type]}"
  }
}

эта конфигурация logstash работает нормально, когда я использую --configtest. filebeat запускается нормально, но я получаю следующие ошибки в logstash.log:

    {:timestamp=>"2016-03-09T12:26:58.976000-0700", :message=>["INFLIGHT_EVENTS_REPORT", "2016-03-09T12:26:58-07:00", {"input_to_filter"=>20, "filter_to_output"=>20, "outputs"=>[]}], :level=>:warn}
{:timestamp=>"2016-03-09T12:27:03.977000-0700", :message=>["INFLIGHT_EVENTS_REPORT", "2016-03-09T12:27:03-07:00", {"input_to_filter"=>20, "filter_to_output"=>20, "outputs"=>[]}], :level=>:warn}
{:timestamp=>"2016-03-09T12:27:08.060000-0700", :message=>"Got error to send bulk of actions: blocked by: [SERVICE_UNAVAILABLE/1/state not recovered / initialized];[SERVICE_UNAVAILABLE/2/no master];", :level=>:error}
{:timestamp=>"2016-03-09T12:27:08.060000-0700", :message=>"Failed to flush outgoing items", :outgoing_count=>1, :exception=>"Java::OrgElasticsearchClusterBlock::ClusterBlockException", :backtrace=>["org.elasticsearch.cluster.block.ClusterBlocks.globalBlockedException(org/elasticsearch/cluster/block/ClusterBlocks.java:151)", "org.elasticsearch.cluster.block.ClusterBlocks.globalBlockedRaiseException(org/elasticsearch/cluster/block/ClusterBlocks.java:141)", "org.elasticsearch.action.bulk.TransportBulkAction.executeBulk(org/elasticsearch/action/bulk/TransportBulkAction.java:215)", "org.elasticsearch.action.bulk.TransportBulkAction.access$000(org/elasticsearch/action/bulk/TransportBulkAction.java:67)", "org.elasticsearch.action.bulk.TransportBulkAction$1.onFailure(org/elasticsearch/action/bulk/TransportBulkAction.java:153)", "org.elasticsearch.action.support.TransportAction$ThreadedActionListener$2.run(org/elasticsearch/action/support/TransportAction.java:137)", "java.util.concurrent.ThreadPoolExecutor.runWorker(java/util/concurrent/ThreadPoolExecutor.java:1142)", "java.util.concurrent.ThreadPoolExecutor$Worker.run(java/util/concurrent/ThreadPoolExecutor.java:617)", "java.lang.Thread.run(java/lang/Thread.java:745)"], :level=>:warn}
{:timestamp=>"2016-03-09T12:27:08.977000-0700", :message=>["INFLIGHT_EVENTS_REPORT", "2016-03-09T12:27:08-07:00", {"input_to_filter"=>20, "filter_to_output"=>20, "outputs"=>[]}], :level=>:warn}
{:timestamp=>"2016-03-09T12:27:13.977000-0700", :message=>["INFLIGHT_EVENTS_REPORT", "2016-03-09T12:27:13-07:00", {"input_to_filter"=>20, "filter_to_output"=>20, "outputs"=>[]}], :level=>:warn}

эти ошибки повторяются снова и снова.
в журнале elasticsearch есть ошибка незаконныйargumentexception: пустой текст. Я попытался изменить протокол в конфигурации вывода logstash на «узел».
мне кажется, что с elasticsearch невозможно получить доступ, но он работает:

$ curl localhost:9200
{
  "status" : 200,
  "name" : "Thena",
  "version" : {
    "number" : "1.1.2",
    "build_hash" : "e511f7b28b77c4d99175905fac65bffbf4c80cf7",
    "build_timestamp" : "2014-05-22T12:27:39Z",
    "build_snapshot" : false,
    "lucene_version" : "4.7"
  },
  "tagline" : "You Know, for Search"
}

я впервые пробую logstash. Может кто-то указать мне верное направление?


person trad    schedule 09.03.2016    source источник
comment
Состояние SERVICE_UNAVAILABLE / 1 / не восстановлено означает, что ваш кластер не в порядке. Проверьте его, а затем поищите дополнительную информацию о том, что вы найдете: elastic.co/guide/en/elasticsearch/reference/current/.   -  person Alain Collins    schedule 09.03.2016
comment
Не уверен, связаны ли ошибка LS и Filebeat. Раздел вывода конфигурации filebeat выглядит неправильно. Вы указали вывод logstash на верхнем уровне, но он должен быть вложен в вывод: github.com/elastic/beats/blob/1.2/filebeat/etc/   -  person ruflin    schedule 10.03.2016


Ответы (1)


Я смог заставить свой стек работать. все комментарии были по существу, но в данном случае это была корректировка конфигурации, которую я до сих пор не совсем понимаю.
в конфигурации вывода журнала, в параметрах elasticsearch {}, я закомментировал порт и протокол ( установлен на 9200 и HTTP), и это сработало. Моя первая попытка исправить это было удалить опцию протокола и, таким образом, использовать протокол узла по умолчанию. когда это не сработало, я также удалил опцию протокола. по умолчанию для протокола используется «узел», поэтому кажется, что я просто не мог заставить его работать через HTTP, и я забыл удалить параметр порта. после удаления обоих это сработало.
это, вероятно, не поможет людям в будущем, но если вы собираетесь использовать протокол узла, убедитесь, что вы не забыли удалить параметр порта из конфигурации - по крайней мере, это то, что я думаю, я столкнулся здесь.

person trad    schedule 16.03.2016