Merge pull request #37 from davdr/fix/boolean

Fix bool support
This commit is contained in:
Ben Kochie 2020-06-14 15:55:45 +02:00 committed by GitHub
commit 1a5679d9bf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 19 additions and 0 deletions

View File

@ -20,16 +20,19 @@ $ cat example/data.json
{
"id": "id-A",
"count": 1,
"some_boolean": true,
"state": "ACTIVE"
},
{
"id": "id-B",
"count": 2,
"some_boolean": true,
"state": "INACTIVE"
},
{
"id": "id-C",
"count": 3,
"some_boolean": false,
"state": "ACTIVE"
},
]
@ -50,20 +53,25 @@ $ cat example/config.yml
values:
active: 1 # static value
count: $.count # dynamic value
boolean: $.some_boolean
$ python -m SimpleHTTPServer 8000 &
Serving HTTP on 0.0.0.0 port 8000 ...
$ ./json_exporter http://localhost:8000/example/data.json example/config.yml &
INFO[2016-02-08T22:44:38+09:00] metric registered;name:<example_global_value>
INFO[2016-02-08T22:44:38+09:00] metric registered;name:<example_value_boolean>
INFO[2016-02-08T22:44:38+09:00] metric registered;name:<example_value_active>
INFO[2016-02-08T22:44:38+09:00] metric registered;name:<example_value_count>
127.0.0.1 - - [08/Feb/2016 22:44:38] "GET /example/data.json HTTP/1.1" 200 -
$ curl http://localhost:7979/metrics | grep ^example
example_global_value{environment="beta"} 1234
example_value_active{environment="beta",id="id-A"} 1
example_value_active{environment="beta",id="id-C"} 1
example_value_boolean{environment="beta",id="id-A"} 1
example_value_boolean{environment="beta",id="id-C"} 0
example_value_count{environment="beta",id="id-A"} 1
example_value_count{environment="beta",id="id-C"} 3
```

View File

@ -12,3 +12,4 @@
values:
active: 1 # static value
count: $.count # dynamic value
boolean: $.some_boolean

View File

@ -4,16 +4,19 @@
{
"id": "id-A",
"count": 1,
"some_boolean": true,
"state": "ACTIVE"
},
{
"id": "id-B",
"count": 2,
"some_boolean": true,
"state": "INACTIVE"
},
{
"id": "id-C",
"count": 3,
"some_boolean": false,
"state": "ACTIVE"
},
]

View File

@ -209,6 +209,7 @@ func (obsc *ObjectScraper) Scrape(data []byte, reg *harness.MetricRegistry) erro
}
var value float64
var boolValue bool
switch firstResult.Type {
case jsonpath.JsonNumber:
value, err = obsc.parseValue(firstResult.Value)
@ -217,6 +218,12 @@ func (obsc *ObjectScraper) Scrape(data []byte, reg *harness.MetricRegistry) erro
value, err = obsc.parseValue(firstResult.Value[1 : len(firstResult.Value)-1])
case jsonpath.JsonNull:
value = math.NaN()
case jsonpath.JsonBool:
if boolValue, err = strconv.ParseBool(string(firstResult.Value)); boolValue {
value = 1.0
} else {
value = 0.0
}
default:
log.Warnf("skipping not numerical result;path:<%v>,value:<%s>",
obsc.valueJsonPath, result.Value)