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"
|
|
|
|
},
|
|
|
|
]
|
|
|
|
}
|
|
|
|
|
|
|
|
$ cat example/config.yml
|
|
|
|
- name: example_global_value
|
|
|
|
path: $.counter
|
|
|
|
labels:
|
|
|
|
environment: beta # static label
|
|
|
|
|
|
|
|
- name: example_value
|
|
|
|
type: object
|
|
|
|
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
|
|
|
|
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
|
|
|
|
2016-02-08 13:48:30 +00:00
|
|
|
$ ./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>
|
2020-06-13 20:56:54 +00:00
|
|
|
INFO[2016-02-08T22:44:38+09:00] metric registered;name:<example_value_boolean>
|
2016-02-08 13:48:30 +00:00
|
|
|
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 -
|
2016-02-08 13:59:48 +00:00
|
|
|
|
2020-06-13 20:56:54 +00:00
|
|
|
|
2016-02-08 13:48:30 +00:00
|
|
|
$ 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
|
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-04-17 08:06:54 +00:00
|
|
|
# Docker
|
|
|
|
|
|
|
|
```console
|
|
|
|
docker run \
|
|
|
|
-v config.yml:/config.yml
|
|
|
|
json_exporter \
|
|
|
|
http://example.com/target.json \
|
|
|
|
/config.yml
|
|
|
|
```
|
|
|
|
|
|
|
|
# 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).
|