Go to file
Thomas Jackson 51e3dc02a3 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
2017-10-06 09:59:28 +09:00
example Initial import 2016-02-08 22:55:40 +09:00
jsonexporter Add support for parsing additional types (string, null) (#5) 2017-10-06 09:59:28 +09:00
.gitignore Initial import 2016-02-08 22:55:40 +09:00
LICENSE Initial commit 2016-02-08 22:25:55 +09:00
README.md Note the original repository of jsonpath in README 2016-08-28 11:22:46 +09:00
gow Change ln '--no-dereference' options from '-h' to '-n' due to other platform implementations 2016-09-12 18:53:29 +09:00
json_exporter.go Initial import 2016-02-08 22:55:40 +09:00

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