.. | ||
gangliaSink.go | ||
httpSink.go | ||
influxSink.go | ||
metricSink.go | ||
natsSink.go | ||
README.md | ||
sinkManager.go | ||
sqliteSink.go | ||
stdoutSink.go |
CCMetric sinks
This folder contains the SinkManager and sink implementations for the cc-metric-collector.
Configuration
The configuration file for the sinks is a list of configurations. The type
field in each specifies which sink to initialize.
[
{
"type" : "stdout",
"meta_as_tags" : false
},
{
"type" : "http",
"host" : "localhost",
"port" : "4123",
"database" : "ccmetric",
"password" : "<jwt token>"
}
]
This example initializes two sinks, the stdout
sink printing all metrics to the STDOUT and the http
sink with the given host
, port
, database
and password
.
If meta_as_tags
is set, all meta information attached to CCMetric are printed out as tags.
Type stdout
{
"type" : "stdout",
"meta_as_tags" : <true|false>
}
The stdout
sink dumps all metrics to the STDOUT.
Type http
{
"type" : "http",
"host" : "<hostname>",
"port" : "<portnumber>",
"database" : "<database name>",
"password" : "<jwt token>",
"meta_as_tags" : <true|false>
}
The sink uses POST requests to send metrics to http://<host>:<port>/<database>
using the JWT token as a JWT in the 'Authorization' header.
Type nats
{
"type" : "nats",
"host" : "<hostname>",
"port" : "<portnumber>",
"user" : "<username>",
"password" : "<password>",
"database" : "<database name>"
"meta_as_tags" : <true|false>
}
This sink publishes the CCMetric in a NATS environment using host
, port
, user
and password
for connecting. The metrics are published using the topic database
.
Type influxdb
{
"type" : "influxdb",
"host" : "<hostname>",
"port" : "<portnumber>",
"user" : "<username>",
"password" : "<password or API key>",
"database" : "<database name>"
"organization": "<InfluxDB v2 organization>",
"ssl" : <true|false>,
"meta_as_tags" : <true|false>
}
This sink submits the CCMetrics to an InfluxDB time-series database. It uses host
, port
and ssl
for connecting. For authentification, it uses either user:password
if user
is set and only password
as API key. The organization
and database
are used for writing to the correct database.
Contributing own sinks
A sink contains three functions and is derived from the type Sink
:
Init(config SinkConfig) error
Write(point CCMetric) error
Flush() error
Close()
The data structures should be set up in Init()
like opening a file or server connection. The Write()
function writes/sends the data. For non-blocking sinks, the Flush()
method tells the sink to drain its internal buffers. The Close()
function should tear down anything created in Init()
.
Finally, the sink needs to be registered in the sinkManager.go
. There is a list of sinks called AvailableSinks
which is a map (sink_type_string
-> pointer to sink interface
). Add a new entry with a descriptive name and the new sink.