560305f601
- uses newer version of go-ethereum required for go1.11 |
||
---|---|---|
.. | ||
collector_test.go | ||
collector.go | ||
config_test.go | ||
config.go | ||
main.go | ||
README.md | ||
sampleconfig_above_4.20.yml | ||
sampleconfig_below_4.20.yml |
ocprometheus
This is a client for the OpenConfig gRPC interface that pushes telemetry to Prometheus. Numerical and boolean (converted to 1 for true and 0 for false) are supported. Non-numerical data isn't supported by Prometheus and is silently dropped. Arrays (even with numeric values) are not yet supported.
This tool requires a config file to specify how to map the path of the
notificatons coming out of the OpenConfig gRPC interface onto Prometheus
metric names, and how to extract labels from the path. For example, the
following rule, excerpt from sampleconfig.yml
:
metrics:
- name: tempSensor
path: /Sysdb/environment/temperature/status/tempSensor/(?P<sensor>.+)/(?P<type>(?:maxT|t)emperature)/value
help: Temperature and Maximum Temperature
...
Applied to an update for the path
/Sysdb/environment/temperature/status/tempSensor/TempSensor1/temperature/value
will lead to the metric name tempSensor
and labels sensor=TempSensor1
and type=temperature
.
Basically, named groups are used to extract (optional) metrics. Unnamed groups will be given labels names like "unnamedLabelX" (where X is the group's position). The timestamps from the notifications are not preserved since Prometheus uses a pull model and doesn't have (yet) support for exporter specified timestamps. Prometheus 2.0 will probably support timestamps.
Usage
See the -help
output, but here's an example to push all the metrics defined
in the sample config file:
ocprometheus -addr <switch-hostname>:6042 -config sampleconfig.json