mirror of
https://github.com/ClusterCockpit/cc-metric-collector.git
synced 2024-12-26 07:29:04 +01:00
Update sink README and SampleSink
This commit is contained in:
parent
18a226183c
commit
24e12ccc57
@ -6,6 +6,7 @@ This folder contains the SinkManager and sink implementations for the cc-metric-
|
|||||||
- [`stdout`](./stdoutSink.md): Print all metrics to `stdout`, `stderr` or a file
|
- [`stdout`](./stdoutSink.md): Print all metrics to `stdout`, `stderr` or a file
|
||||||
- [`http`](./httpSink.md): Send metrics to an HTTP server as POST requests
|
- [`http`](./httpSink.md): Send metrics to an HTTP server as POST requests
|
||||||
- [`influxdb`](./influxSink.md): Send metrics to an [InfluxDB](https://www.influxdata.com/products/influxdb/) database
|
- [`influxdb`](./influxSink.md): Send metrics to an [InfluxDB](https://www.influxdata.com/products/influxdb/) database
|
||||||
|
- [`influxasync`](./influxAsyncSink.md): Send metrics to an [InfluxDB](https://www.influxdata.com/products/influxdb/) database with non-blocking write API
|
||||||
- [`nats`](./natsSink.md): Publish metrics to the [NATS](https://nats.io/) network overlay system
|
- [`nats`](./natsSink.md): Publish metrics to the [NATS](https://nats.io/) network overlay system
|
||||||
- [`ganglia`](./gangliaSink.md): Publish metrics in the [Ganglia Monitoring System](http://ganglia.info/) using the `gmetric` CLI tool
|
- [`ganglia`](./gangliaSink.md): Publish metrics in the [Ganglia Monitoring System](http://ganglia.info/) using the `gmetric` CLI tool
|
||||||
- [`libganglia`](./libgangliaSink.md): Publish metrics in the [Ganglia Monitoring System](http://ganglia.info/) directly using `libganglia.so`
|
- [`libganglia`](./libgangliaSink.md): Publish metrics in the [Ganglia Monitoring System](http://ganglia.info/) directly using `libganglia.so`
|
||||||
@ -34,11 +35,12 @@ The configuration file for the sinks is a list of configurations. The `type` fie
|
|||||||
|
|
||||||
|
|
||||||
# Contributing own sinks
|
# Contributing own sinks
|
||||||
A sink contains four functions and is derived from the type `sink`:
|
A sink contains five functions and is derived from the type `sink`:
|
||||||
* `Init(config json.RawMessage) error`
|
* `Init(name string, config json.RawMessage) error`
|
||||||
* `Write(point CCMetric) error`
|
* `Write(point CCMetric) error`
|
||||||
* `Flush() error`
|
* `Flush() error`
|
||||||
* `Close()`
|
* `Close()`
|
||||||
|
* `New<Typename>(name string, config json.RawMessage) (Sink, error)` (calls the `Init()` function)
|
||||||
|
|
||||||
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()`.
|
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()`.
|
||||||
|
|
||||||
@ -65,8 +67,8 @@ type SampleSink struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Initialize the sink by giving it a name and reading in the config JSON
|
// Initialize the sink by giving it a name and reading in the config JSON
|
||||||
func (s *SampleSink) Init(config json.RawMessage) error {
|
func (s *SampleSink) Init(name string, config json.RawMessage) error {
|
||||||
s.name = "SampleSink" // Always specify a name here
|
s.name = fmt.Sprintf("SampleSink(%s)", name) // Always specify a name here
|
||||||
// Read in the config JSON
|
// Read in the config JSON
|
||||||
if len(config) > 0 {
|
if len(config) > 0 {
|
||||||
err := json.Unmarshal(config, &s.config)
|
err := json.Unmarshal(config, &s.config)
|
||||||
@ -91,4 +93,13 @@ func (s *SampleSink) Flush() error {
|
|||||||
|
|
||||||
// Close sink: close network connection, close files, close libraries, ...
|
// Close sink: close network connection, close files, close libraries, ...
|
||||||
func (s *SampleSink) Close() {}
|
func (s *SampleSink) Close() {}
|
||||||
|
|
||||||
|
|
||||||
|
// New function to create a new instance of the sink
|
||||||
|
func NewSampleSink(name string, config json.RawMessage) (Sink, error) {
|
||||||
|
s := new(SampleSink)
|
||||||
|
err := s.Init(name, config)
|
||||||
|
return s, err
|
||||||
|
}
|
||||||
|
|
||||||
```
|
```
|
Loading…
Reference in New Issue
Block a user