cc-metric-collector/docs/building.md
Thomas Gruber 162cce0fda
Merge develop branch into main (#96)
* InfiniBandCollector: Scale raw readings from octets to bytes

* Fix clock frequency coming from LikwidCollector and update docs

* Build DEB package for Ubuntu 20.04 for releases

* Fix memstat collector with numa_stats option

* Remove useless prints from MemstatCollector

* Replace ioutils with os and io (#87)

* Use lower case for error strings in RocmSmiCollector

* move maybe-usable-by-other-cc-components to pkg. Fix all files to use the new paths (#88)

* Add collector for monitoring the execution of cc-metric-collector itself (#81)

* Add collector to monitor execution of cc-metric-collector itself

* Register SelfCollector

* Fix import paths for moved packages

* Check if at least one CPU with frequency information was detected

* Correct type: /proc/stats -> /proc/stat

* Update README.md

* Run ipmitool asynchron.  Improved error handling.

* Corrected some typos

* Add running average power limit (RAPL) metric collector

* Add running average power limit (RAPL) metric collector

* Do not mess up with the orignal configuration

* * Corrected json config in numastatsMetric.md
* Added some debug output to numastatsMetric.go

* Fixed computing number of physical packages for non continous physical package IDs (e.g. on Ampere Altra Q80-30)

* Fix kernel panic for receiver config with missing receiver type

* Add receiver to gather remote IPMI sensor metrics

* Added config option to add ipmi-sensors command line options

* Add documentaion for IPMI receiver

* Update to latest version of included go modules

* Add go.mod to App dependency

* Try to use common metric tags across hardware vendors

* Add IPMI metric: current

* remove prefix enumeration like 01-...

* Add IPMI receiver example configuration to receivers.json

* Minimal formating changes

* Add hostlist package

* Added tests for hostlist Expand()

* Use package hostlist to expand a host list

* Use package hostlist to expand a host list

* Some servers return "ConsumedPowerWatt":65535 instead of "ConsumedPowerWatt":null

* Updated to latest package versions

* Do not allow unknown fields in JSON configuration file

* Add workflow to customize packages to docs

* NFS I/O Stats Collector (#91)

* Initial version

* Delete values for vanished mount points and  comments

* Fix for Likwid collector (#95)

* Run LIKWID in separate thread and check metric type

* Change LIKWID collector documentation to use 'type' instead of 'scope'

* Re-initialize LIKWID after one read is missing due to lock toggle

* Register cc-metric-collector at Zenodo (#93)

* Add initial version of Zenodo project file

* Orcid ID added

* Update .zenodo.json

Co-authored-by: Holger Obermaier <holger.obermaier@kit.edu>

* Update ipmiMetric.go

Co-authored-by: Holger Obermaier <40787752+ho-ob@users.noreply.github.com>
Co-authored-by: Holger Obermaier <Holger.Obermaier@kit.edu>
2022-12-14 17:02:39 +01:00

3.0 KiB

Building the cc-metric-collector

In most cases, a simple make in the main folder is enough to get a cc-metric-collector binary. It is basically a go build but some collectors require additional tasks. There is currently no Golang interface to LIKWID, so it uses cgo to create bindings but cgo requires the LIKWID header files. Therefore, it checks whether LIKWID is installed and if not it downloads LIKWID and copies the headers.

System integration

The main configuration settings for system integration are pre-defined in scripts/cc-metric-collector.config. The file contains the UNIX user and group used for execution, the PID file location and other settings. Adjust it accordingly and copy it to /etc/default/cc-metric-collector

$ install --mode 644 \
          --owner $CC_USER \
          --group $CC_GROUP \
          scripts/cc-metric-collector.config /etc/default/cc-metric-collector
$ edit /etc/default/cc-metric-collector

SysVinit and similar

If you are using a init system based in /etc/init.d daemons, you can use the sample scripts/cc-metric-collector.init. It reads the basic configuration from /etc/default/cc-metric-collector

$ install --mode 755 \
          --owner $CC_USER \
          --group $CC_GROUP \
          scripts/cc-metric-collector.init /etc/init.d/cc-metric-collector

Systemd

If you are using systemd as init system, you can use the sample systemd service file scripts/cc-metric-collector.service, the configuration file scripts/cc-metric-collector.config.

$ install --mode 644  \
          --owner $CC_USER \
          --group $CC_GROUP \
           scripts/cc-metric-collector.service /etc/systemd/system/cc-metric-collector.service
$ systemctl enable cc-metric-collector

Packaging

RPM

In order to get a RPM packages for cc-metric-collector, just use:

$ make RPM

It uses the RPM SPEC file scripts/cc-metric-collector.spec and requires the RPM tools (rpm and rpmspec) and git.

DEB

In order to get very simple Debian packages for cc-metric-collector, just use:

$ make DEB

It uses the DEB control file scripts/cc-metric-collector.control and requires dpkg-deb, awk, sed and git. It creates only a binary deb package.

This option is not well tested and therefore experimental

Customizing RPMs or DEB packages

If you want to customize the RPMs or DEB packages for your local system, use the following workflow.

  • (if there is already a fork in the private account, delete it and wait until Github realizes the deletion)
  • Fork the cc-metric-collector repository (if Github hasn't realized it, it creates a fork named cc-metric-collector2)
  • Go to private cc-metric-collector repository and enable Github Actions
  • Do changes to the scripts, code, ... Commit and push your changes.
  • Tag the new commit with v0.x.y-<myversion> (git tag v0.x.y-<myversion>)
  • Push tags to repository (git push --tags)
  • Wait until the Release action finishes. It creates fresh RPMs and DEBs in your private repository on the Releases page.