Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/davidB/metrics-influxdb

A reporter for metrics which announces measurements to an InfluxDB server.
https://github.com/davidB/metrics-influxdb

Last synced: 2 months ago
JSON representation

A reporter for metrics which announces measurements to an InfluxDB server.

Awesome Lists containing this project

README

        



CC0



To the extent possible under law,

Novaquark

has waived all copyright and related or neighboring rights to
this work.

[![Build Status](https://travis-ci.org/davidB/metrics-influxdb.svg?branch=master)](https://travis-ci.org/davidB/metrics-influxdb)
[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/davidB/metrics-influxdb/trend.png)](https://bitdeli.com/free "Bitdeli Badge")
[![Download](https://api.bintray.com/packages/davidb/maven/metrics-influxdb/images/download.svg) ](https://bintray.com/davidb/maven/metrics-influxdb/_latestVersion)

# The library provide :

* a lighter client than influxdb-java to push only series to an [InfluxDB](http://influxdb.org) server.
* A reporter for [metrics](http://metrics.codahale.com/) which announces measurements.

The library provide a lighter client than influxdb-java to push only metrics.

## Dependencies :

* slf4j-api for logging.
* metrics-core, to provide, if you use InfluxdbReporter.

## Install:

### Released
```
dependencies {
compile 'com.github.davidb:metrics-influxdb:0.9.3'
}
```

### Dev
```
repositories {
maven { url "https://jitpack.io" }
}
dependencies {
compile 'com.github.davidb:metrics-influxdb:-SNAPSHOT'
}
```
## Usage :

Using the Builder API and its defaults, it is easy to use InfluxdbReporter:

ScheduledReporter reporter = InfluxdbReporter.forRegistry(registry).build();
reporter.start(10, TimeUnit.SECONDS);

With the previous simple configuration, all defaults will be used, mainly:

- protocol: `HTTP`
- server: `127.0.0.1`
- port: `8086`
- authentication: `none`
- database name: `metrics`
- rates: converted to `TimeUnit.SECONDS`
- duration: converted to `TimeUnit.MILLISECONDS`
- idle metrics: `do not report`
- influxdb protocol: `v09` [line protocol](https://influxdb.com/docs/v0.9/write_protocols/line.html)
- ...

But you are free of course to define all settings by yourself :
```
final ScheduledReporter reporter = InfluxdbReporter.forRegistry(registry)
.protocol(new HttpInfluxdbProtocol("http", "influxdb-server", 8086, "admin", "53CR3TP455W0RD", "metrics"))
.convertRatesTo(TimeUnit.SECONDS)
.convertDurationsTo(TimeUnit.MILLISECONDS)
.filter(MetricFilter.ALL)
.skipIdleMetrics(false)
.tag("cluster", "CL01")
.tag("client", "OurImportantClient")
.tag("server", serverIP)
.transformer(new CategoriesMetricMeasurementTransformer("module", "artifact"))
.build();
reporter.start(10, TimeUnit.SECONDS);
```

And if you are still using v08 influxdb

```
final InfluxdbReporter reporter = InfluxdbReporter
.forRegistry(registry)
.protocol(new HttpInfluxdbProtocol("influxdb-server", 8086, "admin", "53CR3TP455W0RD", "metrics"))
.v08()
.build();
...
```