gpt4 book ai didi

logstash http_poller 第一个 URL 请求的响应应该输入到第二个 URL 的请求参数

转载 作者:行者123 更新时间:2023-12-04 18:33:00 24 4
gpt4 key购买 nike

我有两个 URL(出于安全考虑,我将使用 dummy 进行解释)

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

当您点击 'a' 点中提到的 url 时,它会生成一个 token ,让它成为 16 个字符的字符串

然后该 token 应用于对 token 参数中的“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 应该在收到新 token 后执行。

请建议。

最佳答案

是的,可以混合使用 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 的 Shell 脚本:
#!/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

上面的脚本可以使用 crontab(或类似的)在 cron 上设置,有 plenty of examples关于如何实现这一目标。

那么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"
}
}

关于logstash http_poller 第一个 URL 请求的响应应该输入到第二个 URL 的请求参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37436376/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com