I have a standard logstash config, where I store several fields form a log.
With one field I need to "ask something" to an external API with an specific url pattern, which is:
staticString+variableField+staticString
So, variableField comes from a field previously parsed, called, for example, previousField.
I have this config (one of my several test which, obviously doesn't work):
filter {
http {
url => "staticString%{previousField}staticString"
verb => POST
}
So the question is, is possible to build an URL with this structure: staticString+previousField+staticString?
Badger
August 3, 2021, 8:56pm
2
The code does sprintf the url, so a field reference should get substituted. If you enable log.level debug you will see what URL it is actually using.
Yes, sorry, what I'm getting using this: staticString%{previousField}staticString
is:
Failed to execute action {:action=>LogStash::PipelineAction::Create/pipeline_id:main, :exception=>"LogStash::ConfigurationError", :message=>"Expected one of [ \\t\\r\\n], \"#\", \"=>\" at line 27, column 17 (byte 726) after filter {\n http {\n url => \"**https://domain/apiEndPoint/?param=string¶m=%{previousField}¶m=string**\"\n #query => { \"q\" => \"%{[source]}\n verb => POST\n }\n\n\noutput {\n elasticsearch "
I'm seeing the literal of %{previousField}
not its content
Badger
August 3, 2021, 9:51pm
4
You didn't close the double quotes around %{[source]}
strange that part was comented with #
Well I've just deleted and now I can see the final url, and don't know why its like this:
`
"https://domain/apiEndPoint/?param=string¶m=%{previousField}¶m=string"
I mean, it takes literal value of %{previousField} instead of field's value, what am I doing wrong?
This field comes from an input using Twitter input plugin
`
My fault, wrong field, I've selected the correct one and now its working fine, thanks @Badger for your time and patience
But I'm seeing this:
> error during HTTP request {:url=>"https://domain/apiEndPoint/?param=string¶m=%{previousField}¶m=string", :body=>nil, :client_error=>"Illegal character in query at index 113: https://domain/apiEndPoint/?param=string¶m=%{previousField}¶m=string"}
But if I copy/paste that url it Works on browser
system
(system)
Closed
August 31, 2021, 10:32pm
8
This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.