cc-metric-collector/README.md

62 lines
2.0 KiB
Markdown
Raw Normal View History

2021-02-16 16:24:11 +01:00
# cc-metric-collector
2021-02-17 14:32:23 +01:00
A node agent for measuring, processing and forwarding node level metrics.
Open questions:
* Are hostname unique with a computing center or is it required to store the cluster name in addition to the hostname?
* What about memory domain granularity?
# Configuration
2021-02-17 14:51:21 +01:00
Configuration is implemented using a single json document that is distributed over network and may be persisted as file.
2021-02-17 14:38:44 +01:00
Supported metrics are documented [here](https://github.com/ClusterCockpit/cc-specifications/blob/master/metrics/lineprotocol.md).
2021-02-17 14:32:23 +01:00
``` json
{
"sink": {
"user": "admin",
"password": "12345",
"host": "localhost",
"port": "8080",
"database": "testdb",
"type": "stdout"
},
"interval" : 3,
"duration" : 1,
"collectors": [
"memstat",
"likwid",
"loadavg",
"netstat",
"ibstat",
"lustrestat"
]
2021-02-17 14:32:23 +01:00
}
```
2021-03-29 15:36:32 +02:00
All available collectors are listed in the above JSON. There are currently three sinks supported `influxdb`, `nats` and `stdout`. The `interval` defines how often the metrics should be read and send to the sink. The `duration` tells collectors how long one measurement has to take. An example for this is the `likwid` collector which starts the hardware performance counter, waits for `duration` seconds and stops the counters again. For most systems, the `likwid` collector has to do two measurements, thus `interval` must be larger than two times `duration`.
# Installation
```
$ git clone git@github.com:ClusterCockpit/cc-metric-collector.git
$ cd cc-metric-collector/collectors
$ edit Makefile (for LIKWID collector)
$ make (downloads LIKWID, builds it as static library and copies all required files for the collector)
$ cd ..
$ go get (requires at least golang 1.13)
$ go build metric-collector
```
# Running
```
$ ./metric-collector --help
Usage of metric-collector:
-config string
Path to configuration file (default "./config.json")
-log string
Path for logfile (default "stderr")
```