f683f2e6da
* Check whether LIKWID library is present * Generalize nan_to_zero option to invalid_to_zero including +Inf,+Inf and NaN * Remove double error printing and return if measurements do not work |
||
---|---|---|
.github | ||
collectors | ||
internal | ||
receivers | ||
scripts | ||
sinks | ||
.gitignore | ||
.gitmodules | ||
collectors.json | ||
config.json | ||
go.mod | ||
go.sum | ||
LICENSE | ||
Makefile | ||
metric-collector.go | ||
README.md | ||
receivers.json | ||
router.json | ||
sinks.json |
cc-metric-collector
A node agent for measuring, processing and forwarding node level metrics. It is part of the ClusterCockpit ecosystem.
The metric collector sends (and receives) metric in the InfluxDB line protocol as it provides flexibility while providing a separation between tags (like index columns in relational databases) and fields (like data columns).
There is a single timer loop that triggers all collectors serially, collects the collectors' data and sends the metrics to the sink. This is done as all data is submitted with a single time stamp. The sinks currently use mostly blocking APIs.
The receiver runs as a go routine side-by-side with the timer loop and asynchronously forwards received metrics to the sink.
Configuration
Configuration is implemented using a single json document that is distributed over network and may be persisted as file. Supported metrics are documented here.
There is a main configuration file with basic settings that point to the other configuration files for the different components.
{
"sinks": "sinks.json",
"collectors" : "collectors.json",
"receivers" : "receivers.json",
"router" : "router.json",
"interval": 10,
"duration": 1
}
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. This is important for some collectors, like the likwid
collector.
See the component READMEs for their configuration:
Installation
$ git clone git@github.com:ClusterCockpit/cc-metric-collector.git
$ make (downloads LIKWID, builds it as static library with 'direct' accessmode and copies all required files for the collector)
$ go get (requires at least golang 1.16)
$ make tags
Available tags:
ganglia
[...]
$ make # calls go build (-tags ganglia,...) -o cc-metric-collector
ganglia
build tag
If you want support for the Ganglia Monitoring System, you have to add -tags ganglia
to the build command line. This enables two metric sinks. One is using the command line application gmetric
(see ganglia
sink), the other one interacts directly with libganglia
the main Ganglia library that is commonly installed on each compute node (see libganglia
sink). The later one requires configuration before building, so use make
instead of go build
directly.
Running
$ ./cc-metric-collector --help
Usage of metric-collector:
-config string
Path to configuration file (default "./config.json")
-log string
Path for logfile (default "stderr")
-once
Run all collectors only once
Contributing
The ClusterCockpit ecosystem is designed to be used by different HPC computing centers. Since configurations and setups differ between the centers, the centers likely have to put some work into the cc-metric-collector to gather all desired metrics.
You are free to open an issue to request a collector but we would also be happy about PRs.