Skip to content
A prometheus exporter which scrapes remote JSON by JSONPath
Go Shell
Branch: master
Clone or download
jacksontj and kawamuray Add support for parsing additional types (string, null) (#5)
* Add support for parsing additional types (string, null)

With this patch we now support pulling number out of strings (its fairly
common for metrics to use quoted numbers as values) as well as "null" --
which we represent as a NaN.

* Bump minor version
Latest commit 51e3dc0 Oct 5, 2017

README.md

prometheus-json-exporter

A prometheus exporter which scrapes remote JSON by JSONPath.

Build

./gow get .
./gow build -o json_exporter .

Example Usage

$ cat example/data.json
{
    "counter": 1234,
    "values": [
        {
            "id": "id-A",
            "count": 1,
            "state": "ACTIVE"
        },
        {
            "id": "id-B",
            "count": 2,
            "state": "INACTIVE"
        },
        {
            "id": "id-C",
            "count": 3,
            "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

$ 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_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_count{environment="beta",id="id-A"} 1
example_value_count{environment="beta",id="id-C"} 3

See Also

You can’t perform that action at this time.