logstash http_poller ответ первого запроса URL должен быть введен в параметр запроса второго URL

У меня есть два URL (из-за проблем с безопасностью я объясню, используя пустышку)

 a> https://xyz.company.com/ui/api/token
 b> https://xyz.company.com/request/transaction?date=2016-01-21&token=<tokeninfo>

Когда вы нажмете на URL, указанный в пункте «a», он сгенерирует токен, пусть это будет строка из 16 символов

Затем этот токен должен использоваться при втором запросе точки 'b' в параметре токена

обновленный
 The second url response is important to me i.e is a JSON response, I need       
 to filter the json data and extract required data and output it to standard 
 output and elastic search.    

Есть ли способ сделать это в logstash с помощью плагина "http_poller" или любых других плагинов.

Примечание: эти URL запроса должны выполняться один за другим, то есть точка 'a' url должна выполняться первой, а точка 'b' url должна выполняться следующей после получения нового токена.

Пожалуйста, предложите.

 Amit Vikram25 мая 2016 г., 14:35
Мне нужно называть эти URL в промежутках. пусть это будет каждые 60 минут
 Val25 мая 2016 г., 14:34
Вам нужно, чтобы эта последовательность вызовов выполнялась только один раз или несколько раз?

Ответы на вопрос(1)

Решение Вопроса

Да, это возможно с сочетаниемhttp_poller вход иhttp выход.

Вот конфиг, который я придумал:

input {
   # 1. trigger new token requests every hour
   http_poller {
     urls => {
       token => "https://xyz.company.com/ui/api/token"
     }
     interval => 3600
     add_field => {"token" => "%{message}"}
   }
}
filter {
}
output {
   # 2. call the API
   http {
     http_method => "get"
     url => "https://xyz.company.com/request/transaction?date=2016-01-21&token=%{token}"
   }
}

ОБНОВИТЬ

Если вы хотите получить содержимое вызова API и сохранить его в ES, вам нужно гибридное решение. Вам нужно настроить cron, который будет вызывать скрипт, который выполняет два HTTP-вызова и сохраняет результаты в файле, а затем вы можете позволить logstash завершить этот файл и переслать результаты в ES.

Сценарий оболочки для установки на cron:

#!/bin/sh

# 1. Get the token
TOKEN=$(curl -s -XGET https://xyz.company.com/ui/api/token)

# 2. Call the API with the token and append JSON to file
curl -s -XGET "https://xyz.company.com/request/transaction?date=2016-01-21&token=$TOKEN" >> api_calls.log

Приведенный выше скрипт может быть установлен на cron с помощью crontab (или аналогичного), естьмножество примеров там о том, как этого добиться.

Тогда конфигурация logstash может быть очень простой. Это просто нужно хвостapi_calls.log подать и отправить документ в ES

input {
    file {
        path => "api_calls.log"
        start_position => "beginning"
    }
}
filter {
    json {
        source => "message"
    }
}
output {
    elasticsearch {
        hosts => ["localhost:9200"]
        index => "my_index"
        document_type" => "my_type"
    }
    stdout {
        codec => "rubydebug"
    }
}
 Amit Vikram27 мая 2016 г., 06:19
если logstash имеет ограничение и один logstash не может решить цель. Да, я могу попробовать сценарий оболочки или Python.
 Val27 мая 2016 г., 08:13
Я обновил свой ответ.
 Amit Vikram27 мая 2016 г., 06:49
Не могли бы вы представить подход к решению
 Amit Vikram25 мая 2016 г., 16:23
Означает ли это, что мне нужно записать его в файл, прочитать и вставить его вasticsearch. Разве у нас нет другого подхода в одном звонке? Любой пример поможет мне. Благодарю.
 Val27 мая 2016 г., 05:59
У меня есть решение, но оно включает в себя размещение сценария оболочки на cron в дополнение к некоторой конфигурации logstash. Вы открыты для этого?
 Val26 мая 2016 г., 08:22
Благодарю. Проверка сейчас ...
 Amit Vikram26 мая 2016 г., 13:57
Вал, есть ли у тебя прорыв ... любое предложение поможет!
 Val25 мая 2016 г., 16:16
Это будет зарегистрировано как событие, из которого вы можете извлечь содержимое.
 Amit Vikram26 мая 2016 г., 08:22
Пожалуйста, посмотрите на мой обновленный запрос. Спасибо
 Amit Vikram25 мая 2016 г., 16:13
Спасибо за решение Val, но как я буду ловить вывод второго URL-вызова.
 Val25 мая 2016 г., 16:24
Вы действительно не объяснили, что вы хотите сделать с ответом API. Пожалуйста, обновите ваш вопрос любой дополнительной полезной информацией, и я исправлю свой ответ.

Ваш ответ на вопрос