• Stars
    star
    631
  • Rank 70,761 (Top 2 %)
  • Language
    Go
  • License
    Apache License 2.0
  • Created over 8 years ago
  • Updated 20 days ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A prometheus exporter which scrapes remote JSON by JSONPath

json_exporter

CircleCI

A prometheus exporter which scrapes remote JSON by JSONPath.

Example Usage

## SETUP

$ make build
$ ./json_exporter --config.file examples/config.yml &
$ python3 -m http.server 8000 &
Serving HTTP on :: port 8000 (http://[::]:8000/) ...


## TEST with 'default' module

$ curl "http://localhost:7979/probe?module=default&target=http://localhost:8000/examples/data.json"
# HELP example_global_value Example of a top-level global value scrape in the json
# TYPE example_global_value untyped
example_global_value{environment="beta",location="planet-mars"} 1234
# HELP example_timestamped_value_count Example of a timestamped value scrape in the json
# TYPE example_timestamped_value_count untyped
example_timestamped_value_count{environment="beta"} 2
# HELP example_value_active Example of sub-level value scrapes from a json
# TYPE example_value_active untyped
example_value_active{environment="beta",id="id-A"} 1
example_value_active{environment="beta",id="id-C"} 1
# HELP example_value_boolean Example of sub-level value scrapes from a json
# TYPE example_value_boolean untyped
example_value_boolean{environment="beta",id="id-A"} 1
example_value_boolean{environment="beta",id="id-C"} 0
# HELP example_value_count Example of sub-level value scrapes from a json
# TYPE example_value_count untyped
example_value_count{environment="beta",id="id-A"} 1
example_value_count{environment="beta",id="id-C"} 3


## TEST with a different module for different json file

$ curl "http://localhost:7979/probe?module=animals&target=http://localhost:8000/examples/animal-data.json"
# HELP animal_population Example of top-level lists in a separate module
# TYPE animal_population untyped
animal_population{name="deer",predator="false"} 456
animal_population{name="lion",predator="true"} 123
animal_population{name="pigeon",predator="false"} 789


## TEST through prometheus:

$ docker run --rm -it -p 9090:9090 -v $PWD/examples/prometheus.yml:/etc/prometheus/prometheus.yml 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.

Using custom timestamps

This exporter allows you to use a field of the metric as the (unix/epoch) timestamp for the data as an int64. However, this may lead to unexpected behaviour, as the prometheus implements a Staleness mechanism.

⚠️ Including timestamps in metrics disables the staleness handling and can make data visible for longer than expected.

Exposing metrics through HTTPS

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

Sending body content for HTTP POST

If modules.<module_name>.body paramater is set in config, it will be sent by the exporter as the body content in the scrape request. The HTTP method will also be set as 'POST' in this case.

body:
  content: |
    My static information: {"time_diff": "1m25s", "anotherVar": "some value"}

The body content can also be a Go Template. All the functions from the Sprig library can be used in the template. All the query parameters sent by prometheus in the scrape query to the exporter, are available as values while rendering the template.

Example using template functions:

body:
  content: |
    {"time_diff": "{{ duration `95` }}","anotherVar": "{{ randInt 12 30 }}"}
  templatize: true

Example using template functions with values from the query parameters:

body:
  content: |
    {"time_diff": "{{ duration `95` }}","anotherVar": "{{ .myVal | first }}"}
  templatize: true

Then curl "http://exporter:7979/probe?target=http://scrape_target:8080/test/data.json&myVal=something", would result in sending the following body as the HTTP POST payload to http://scrape_target:8080/test/data.json:

{"time_diff": "1m35s","anotherVar": "something"}.

Docker

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

More Repositories

1

helm-charts

Prometheus community Helm charts
Mustache
4,981
star
2

windows_exporter

Prometheus exporter for Windows machines
Go
2,858
star
3

postgres_exporter

A PostgreSQL metric exporter for Prometheus
Go
2,720
star
4

elasticsearch_exporter

Elasticsearch stats exporter for Prometheus
Go
1,910
star
5

PushProx

Proxy to allow Prometheus to scrape through NAT etc.
Go
715
star
6

node-exporter-textfile-collector-scripts

Scripts for node-exporter's textfile collector
Python
490
star
7

ipmi_exporter

Remote IPMI exporter for Prometheus
Go
459
star
8

avalanche

Prometheus/OpenMetrics endpoint series generator for load testing.
Go
393
star
9

ansible

Ansible Collection for Prometheus
Python
357
star
10

jiralert

JIRA integration for Prometheus Alertmanager
Go
333
star
11

pro-bing

A library for creating continuous probers
Go
317
star
12

bind_exporter

Prometheus exporter for BIND
Go
299
star
13

smartctl_exporter

Export smartctl statistics to prometheus
Go
289
star
14

systemd_exporter

Exporter for systemd unit metrics
Go
283
star
15

prom-label-proxy

A proxy that enforces a given label in a given PromQL query.
Go
262
star
16

stackdriver_exporter

Google Stackdriver Prometheus exporter
Go
254
star
17

promql-langserver

PromQL language server
Go
176
star
18

prometheus-playground

Turnkey sandbox projects demonstrating a wide variety of Prometheus use cases
Go
164
star
19

pgbouncer_exporter

Prometheus exporter for PgBouncer
Go
138
star
20

ecs_exporter

Prometheus exporter for Amazon Elastic Container Service (ECS)
Go
78
star
21

vscode-promql

This is supposed to become a PromQL extension for vs code.
TypeScript
52
star
22

monaco-promql

PromQL support for the Monaco code editor
TypeScript
31
star
23

community

Prometheus & The Ecosystem Community Meeting Information
20
star
24

prometheus-community

13
star
25

snmp

Tools and configurations for translating SNMP into Prometheus
11
star
26

kitefactory

Makefile
3
star
27

sublimelsp-promql

PromQL support for Sublime LSP plugin, using promql-langserver
Python
2
star