Closed razvanpaul-mielcioiu closed 3 years ago
Hi @razvanpaul-mielcioiu , I tried to reproduce the issue in #40, but I think it works as expected.
The example from the mentioned PR sets the first two arguments in the configuration file and takes the third one from the params
parameter. Then I get the following output:
script_with_arguments{arg1="test1", arg2="test2", arg3="test3"} 1
So for your case value1
should be added as argument after value4
. Maybe it is a problem with the order of the arguments?
After more troubleshootings I've found that this works (note the quotes in url):
curl "http://localhost:9469/probe?script=my_script¶ms=param1,param2¶m1=value1¶m2=value2"
This one though doesn't work:
curl "http://localhost:9469/probe?script=my_script¶ms=param1¶ms=param2¶m1=value1¶m2=value2"
I need to check further, but I think the latest is used by prometheus when requesting data from script_exporter.
@ricoberger Yes, I can confirm, even after upgrading ot latest prometheus version, this is how prometheus requests data from script_exporter (taken from a tcpdump):
GET /probe?param1=value1¶m2=value2¶ms=param1¶ms=param2&script=my_script HTTP/1.1
And after some debug, it seems script_exporter is not able to parse a query string like this:
params=param1¶ms=param2
- this is handled as a list in Golang, but the code expects a string so it can split it by comma, therefore it handles only the first param.
@razvanpaul-mielcioiu know I got it.
I updated the example in the PR. Passing multiple parameters should work with the following configuration (note the quotes around the params):
scrape_configs:
- job_name: 'script_args'
metrics_path: /probe
params:
script: [args]
params: ["param1,param2"]
param1: [value1]
param2: [value2]
static_configs:
- targets: ["localhost:9469"]
Victory! Everything works now. Thanks Rico for your excellent support!
Hi, I have a script_exporter configured with the following file:
The script
my_script.py
is designed to output the received args to a file. When I use this command:curl http://127.0.0.1:9469/probe?script=my_script¶ms=param1¶m1=value1
I would have expected to seevalue1
in the file output, however that is not the case, I see only the paramsvalue3
andvalue4
. I cannot figure out what is wrong.