mirror of
				https://github.com/ClusterCockpit/cc-metric-collector.git
				synced 2025-10-31 00:55:06 +01:00 
			
		
		
		
	Update sink README.md
This commit is contained in:
		| @@ -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 | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user