Go to file
rustyclock 100f573748
Release 0.3.0
Signed-off-by: rustyclock <rustyclock@protonmail.com>
2021-02-12 18:00:45 +09:00
.circleci Release v0.2.0 2020-11-02 16:32:28 +01:00
cmd Migrate JSONPath library 2021-01-24 13:49:10 +09:00
config Fix review comments 2020-10-03 08:58:41 +09:00
examples Migrate JSONPath library 2021-01-24 13:49:10 +09:00
exporter Migrate JSONPath library 2021-01-24 13:49:10 +09:00
test Migrate JSONPath library 2021-01-24 13:49:10 +09:00
.gitignore Initial import 2016-02-08 22:55:40 +09:00
.promu.yml Release v0.2.0 2020-11-02 16:32:28 +01:00
CHANGELOG.md Release 0.3.0 2021-02-12 18:00:45 +09:00
CODE_OF_CONDUCT.md Update common Prometheus files 2020-06-22 00:09:16 +00:00
Dockerfile Fix dockerfile 2020-06-12 00:01:42 +02:00
LICENSE Update common Prometheus files 2020-06-22 00:09:16 +00:00
MAINTAINERS.md Add maintainers file (#60) 2020-11-04 13:01:09 +01:00
Makefile Add Docker 2020-04-17 10:06:54 +02:00
Makefile.common Update common Prometheus files 2020-11-04 00:10:16 +00:00
README.md Migrate JSONPath library 2021-01-24 13:49:10 +09:00
SECURITY.md Update common Prometheus files 2021-01-25 00:04:54 +00:00
VERSION Release 0.3.0 2021-02-12 18:00:45 +09:00
go.mod Add k8s.io/client-go exlude list 2021-02-10 15:30:56 +01:00
go.sum Migrate JSONPath library 2021-01-24 13:49:10 +09:00
main.go Switch to kingpin 2020-08-06 07:32:11 +09:00

README.md

json_exporter

CircleCI

A prometheus exporter which scrapes remote JSON by JSONPath. For checking the JSONPath configuration supported by this exporter please head over here.
Checkout the examples directory for sample exporter configuration, prometheus configuration and expected data format.

⚠️ The configuration syntax has changed in version 0.3.x. If you are migrating from 0.2.x, then please use the above mentioned JSONPath guide for correct configuration syntax.

Example Usage

$ cat examples/data.json
{
    "counter": 1234,
    "values": [
        {
            "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"
        }
    ],
    "location": "mars"
}

$ cat examples/config.yml
---
metrics:
- name: example_global_value
  path: "{ .counter }"
  help: Example of a top-level global value scrape in the json
  labels:
    environment: beta # static label
    location: "planet-{.location}"          # dynamic label

- name: example_value
  type: object
  help: Example of sub-level value scrapes from a json
  path: '{.values[?(@.state == "ACTIVE")]}'
  labels:
    environment: beta # static label
    id: '{.id}'          # dynamic label
  values:
    active: 1      # static value
    count: '{.count}' # dynamic value
    boolean: '{.some_boolean}'

headers:
  X-Dummy: my-test-header

$ python -m SimpleHTTPServer 8000 &
Serving HTTP on 0.0.0.0 port 8000 ...

$ ./json_exporter --config.file examples/config.yml &

$ curl "http://localhost:7979/probe?target=http://localhost:8000/examples/data.json" | grep ^example
example_global_value{environment="beta",location="planet-mars"} 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

# To test through prometheus:
$ docker run --rm -it -p 9090:9090 -v $PWD/examples/prometheus.yml:/etc/prometheus/prometheus.yml --network host prom/prometheus

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.

Exposing metrics through HTTPS

TLS configuration supported by this exporter can be found at exporter-toolkit/web

Build

make build

Docker

docker run \
  -v $PWD/examples/config.yml:/config.yml \
  quay.io/prometheuscommunity/json-exporter \
  --config.file=/config.yml