Сообщение Logstash http_poller, указывающее, что имя не может быть найдено, ошибка

Я пытаюсь использовать http_poller для получения данных из ElasticSearch и записи их в другой ES. При этом запрос ES необходимо выполнять как запрос POST. В приведенных примерах я не смог найти параметры, которые нужно использовать для публикации тела, и это относилось к мантикору-клиенту от ruby. Исходя из этого, я использовал параметр params для публикации тела.

Компонент http_poller выглядит так

input {


 http_poller {
    urls => {
      some_other_service => {
        method => "POST"
        url => "http://localhost:9200/index-2016-03-26/_search"
        params => '"query": { "filtered": { "filter": { "bool": { "must": [ { "term":  { "SERVERNAME": "SERVER1" }}, {"range": { "eventtime": { "gte": "26/Mar/2016:13:00:00" }}} ]}}} }"'
      }
    }
    # Maximum amount of time to wait for a request to complete
    request_timeout => 300
    # How far apart requests should be
    interval => 300
    # Decode the results as JSON
    codec => "json"
    # Store metadata about the request in this key
    metadata_target => "http_poller_metadata"
  }
}
output {
  stdout {
    codec => json
  }
}

Когда я выполняю это, Logstash выдает ошибку, ошибка: имя не может быть нулевым {: level =>: error}

Любая помощь приветствуется.

У меня есть предположение, что параметры должны быть действительно парами ключ-значение, но тогда вопрос заключается в том, как опубликовать запрос с помощью logstash.

Я сослался на эту ссылку, чтобы получить доступные параметры для HTTP-клиента https://github.com/cheald/manticore/blob/master/lib/manticore/client.rb


person Vaya    schedule 28.03.2016    source источник


Ответы (1)


Поскольку я получил ответ, когда пробовал разные варианты, подумал, что тоже поделюсь решением.

Замените params на body в приведенной выше полезной нагрузке.

Правильная полезная нагрузка для публикации с использованием HTTP Poller:

input {


 http_poller {
    urls => {
      some_other_service => {
        method => "POST"
        url => "http://localhost:9200/index-2016-03-26/_search"
        body=> '"query": { "filtered": { "filter": { "bool": { "must": [ { "term":  { "SERVERNAME": "SERVER1" }}, {"range": { "eventtime": { "gte": "26/Mar/2016:13:00:00" }}} ]}}} }"'
      }
    }
    # Maximum amount of time to wait for a request to complete
    request_timeout => 300
    # How far apart requests should be
    interval => 300
    # Decode the results as JSON
    codec => "json"
    # Store metadata about the request in this key
    metadata_target => "http_poller_metadata"
  }
}
output {
  stdout {
    codec => json
  }
}
person Vaya    schedule 28.03.2016