Go to file
Ravi b04f0cbe49
Merge pull request #61 from prometheus-community/repo_sync
Synchronize common files from prometheus/prometheus
2021-01-24 04:48:02 +00:00
.circleci Release v0.2.0 2020-11-02 16:32:28 +01:00
cmd Add TLS metrics support 2020-12-10 18:04:27 +01:00
config Fix review comments 2020-10-03 08:58:41 +09:00
examples Update prometheus sample config 2020-10-05 11:41:28 +09:00
exporter Release v0.2.0 2020-11-02 16:32:28 +01:00
test Add unit tests 2020-08-20 11:48:09 +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 Set releae date in CHANGELOG. 2020-11-03 18:03:41 +01: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 Add TLS metrics support 2020-12-10 18:04:27 +01:00
VERSION Release v0.2.0 2020-11-02 16:32:28 +01:00
go.mod Add TLS metrics support 2020-12-10 18:04:27 +01:00
go.sum Add TLS metrics support 2020-12-10 18:04:27 +01: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.

Build

make build

Example Usage

$ cat example/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: $.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="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

web-config.yml

# Minimal TLS configuration example. Additionally, a certificate and a key file
# are needed.
tls_server_config:
  cert_file: server.crt
  key_file: server.key

Running

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

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

For futher information about TLS configuration, please visit: exporter-toolkit/https

Docker

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

See Also