2020-04-17 06:39:48 +00:00
json_exporter
2016-02-08 13:48:30 +00:00
========================
2020-04-17 08:06:54 +00:00
[![CircleCI ](https://circleci.com/gh/prometheus-community/json_exporter.svg?style=svg )](https://circleci.com/gh/prometheus-community/json_exporter)
2016-02-08 13:48:30 +00:00
A [prometheus ](https://prometheus.io/ ) exporter which scrapes remote JSON by JSONPath.
2020-04-17 08:06:54 +00:00
# Build
2016-02-08 13:48:30 +00:00
```sh
2020-04-17 08:06:54 +00:00
make build
2016-02-08 13:48:30 +00:00
```
2020-04-17 08:06:54 +00:00
# Example Usage
2016-02-08 13:48:30 +00:00
```sh
2016-02-08 13:59:48 +00:00
$ cat example/data.json
{
"counter": 1234,
"values": [
{
"id": "id-A",
"count": 1,
2020-06-13 20:56:54 +00:00
"some_boolean": true,
2016-02-08 13:59:48 +00:00
"state": "ACTIVE"
},
{
"id": "id-B",
"count": 2,
2020-06-13 20:56:54 +00:00
"some_boolean": true,
2016-02-08 13:59:48 +00:00
"state": "INACTIVE"
},
{
"id": "id-C",
"count": 3,
2020-06-13 20:56:54 +00:00
"some_boolean": false,
2016-02-08 13:59:48 +00:00
"state": "ACTIVE"
2020-08-05 22:28:29 +00:00
}
],
"location": "mars"
2016-02-08 13:59:48 +00:00
}
2020-08-05 22:28:29 +00:00
$ cat examples/config.yml
---
metrics:
2016-02-08 13:59:48 +00:00
- name: example_global_value
path: $.counter
2020-08-05 22:28:29 +00:00
help: Example of a top-level global value scrape in the json
2016-02-08 13:59:48 +00:00
labels:
environment: beta # static label
2020-08-05 22:28:29 +00:00
location: $.location # dynamic label
2016-02-08 13:59:48 +00:00
- name: example_value
type: object
2020-08-05 22:28:29 +00:00
help: Example of sub-level value scrapes from a json
2016-02-08 13:59:48 +00:00
path: $.values[*]?(@.state == "ACTIVE")
labels:
environment: beta # static label
id: $.id # dynamic label
values:
active: 1 # static value
count: $.count # dynamic value
2020-06-13 20:56:54 +00:00
boolean: $.some_boolean
2016-02-08 13:59:48 +00:00
2020-08-05 22:28:29 +00:00
headers:
X-Dummy: my-test-header
2016-02-08 13:48:30 +00:00
$ python -m SimpleHTTPServer 8000 &
Serving HTTP on 0.0.0.0 port 8000 ...
2016-02-08 13:59:48 +00:00
2020-08-05 22:28:29 +00:00
$ ./json_exporter --config.file examples/config.yml &
2016-02-08 13:59:48 +00:00
2020-08-04 05:50:52 +00:00
$ curl "http://localhost:7979/probe?target=http://localhost:8000/examples/data.json" | grep ^example
example_global_value{environment="beta",location="mars"} 1234
2016-02-08 13:48:30 +00:00
example_value_active{environment="beta",id="id-A"} 1
example_value_active{environment="beta",id="id-C"} 1
2020-06-13 20:56:54 +00:00
example_value_boolean{environment="beta",id="id-A"} 1
example_value_boolean{environment="beta",id="id-C"} 0
2016-02-08 13:48:30 +00:00
example_value_count{environment="beta",id="id-A"} 1
example_value_count{environment="beta",id="id-C"} 3
2020-08-04 06:37:28 +00:00
# To test through prometheus:
$ docker run --rm -it -p 9090:9090 -v $PWD/examples/prometheus.yml:/etc/prometheus/prometheus.yml --network host prom/prometheus
2016-02-08 13:48:30 +00:00
```
2020-08-04 06:37:28 +00:00
Then head over to http://localhost:9090/graph?g0.range_input=1h& g0.expr=example_value_active& g0.tab=1 or http://localhost:9090/targets to check the scraped metrics or the targets.
2016-02-08 13:48:30 +00:00
2020-04-17 08:06:54 +00:00
# Docker
```console
docker run \
2020-08-05 22:28:29 +00:00
-v $PWD/examples/config.yml:/config.yml
2020-07-31 13:51:21 +00:00
quay.io/prometheuscommunity/json-exporter \
2020-08-05 22:28:29 +00:00
--config.file /config.yml
2020-04-17 08:06:54 +00:00
```
# See Also
2016-08-28 02:22:46 +00:00
- [kawamuray/jsonpath ](https://github.com/kawamuray/jsonpath#path-syntax ) : For syntax reference of JSONPath.
Originally forked from nicksardo/jsonpath(now is https://github.com/NodePrime/jsonpath).