mirror of
https://github.com/ClusterCockpit/cc-metric-collector.git
synced 2024-11-10 04:27:25 +01:00
Update sink README.md
This commit is contained in:
parent
fcf8dfb680
commit
24bf9590ee
@ -16,8 +16,50 @@ Nothing to do, all sinks are pure Go code
|
|||||||
A sink contains three functions and is derived from the type `Sink` (in `metricSink.go`):
|
A sink contains three functions and is derived from the type `Sink` (in `metricSink.go`):
|
||||||
* `Init(config SinkConfig) error`
|
* `Init(config SinkConfig) error`
|
||||||
* `Write(measurement string, tags map[string]string, fields map[string]interface{}, t time.Time) error`
|
* `Write(measurement string, tags map[string]string, fields map[string]interface{}, t time.Time) error`
|
||||||
|
* `Flush() error`
|
||||||
* `Close()`
|
* `Close()`
|
||||||
|
|
||||||
The data structures should be set up in `Init()` like opening a file or server connection. The `Write()` function takes a measurement, tags, fields and a timestamp and writes/sends the data. The `Close()` function should tear down anything created in `Init()`.
|
The data structures should be set up in `Init()` like opening a file or server connection. The `Write()` function takes a measurement, tags, fields and a timestamp and 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 `metric-collector.go`. There is a list of sinks called `Sinks` which is a map (string -> pointer to sink). Add a new entry with a descriptive name and the new sink.
|
Finally, the sink needs to be registered in the `metric-collector.go`. There is a list of sinks called `Sinks` which is a map (sink_type_string -> pointer to sink). Add a new entry with a descriptive name and the new sink. Afterwards, it can be configured in the main configuration file at `type`:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"sink": {
|
||||||
|
"user": "testuser",
|
||||||
|
"password": "testpass",
|
||||||
|
"host": "127.0.0.1",
|
||||||
|
"port": "9090",
|
||||||
|
"database": "testdb",
|
||||||
|
"organization": "testorg",
|
||||||
|
"ssl": false
|
||||||
|
"type": "stdout"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
# Sink configuration
|
||||||
|
|
||||||
|
## `stdoutSink`
|
||||||
|
When configuring `type = stdout`, all metrics are printed to stdout. No further configuration is required or touched, so you can leave your other-sink-config in there and just change the `type` for debugging purposes
|
||||||
|
|
||||||
|
## `influxSink`
|
||||||
|
The InfluxDB sink uses blocking write operations to write to an InfluxDB database using the v2 API. It uses the following configuration options:
|
||||||
|
* `host`: Hostname of the database instance
|
||||||
|
* `port`: Portnumber (as string) of the database
|
||||||
|
* `database`: Name of the database, called 'bucket' in InfluxDB v2
|
||||||
|
* `organization`: The InfluxDB v2 API uses organizations to separate database instances running on the same host
|
||||||
|
* `ssl`: Boolean to activate SSL/TLS
|
||||||
|
* `user`: Although the v2 API uses API keys instead of username and password, this field can be used if the sink should authentificate with `username:password`. If you want to use an API key, leave this field empty.
|
||||||
|
* `password`: API key for the InfluxDB v2 API or password if `user` is set
|
||||||
|
|
||||||
|
## `natsSink`
|
||||||
|
* `host`: Hostname of the NATS server
|
||||||
|
* `port`: Portnumber (as string) of the NATS server
|
||||||
|
* `user`: Username for authentification in the NATS transport system
|
||||||
|
* `password`: Password for authentification in the NATS transport system
|
||||||
|
|
||||||
|
## `httpSink`
|
||||||
|
* `host`: Hostname of the HTTP server
|
||||||
|
* `port`: Portnumber (as string) of the HTTP server
|
||||||
|
* `database`: Endpoint to write to. HTTP POST requests are performed on `http://<host>:<port>/<database>`
|
||||||
|
* `password`: JSON Web token used for authentification
|
||||||
|
Loading…
Reference in New Issue
Block a user