mirror of
				https://github.com/ClusterCockpit/cc-metric-collector.git
				synced 2025-11-04 02:35:07 +01:00 
			
		
		
		
	Collector-specific configuration. LIKWID collector derives metrics itself, Run once CLI option
This commit is contained in:
		@@ -7,24 +7,40 @@ import (
 | 
			
		||||
	"strconv"
 | 
			
		||||
	"strings"
 | 
			
		||||
	"time"
 | 
			
		||||
	"encoding/json"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
const CPUSTATFILE = `/proc/stat`
 | 
			
		||||
 | 
			
		||||
type CpustatCollector struct {
 | 
			
		||||
	MetricCollector
 | 
			
		||||
type CpustatCollectorConfig struct {
 | 
			
		||||
    ExcludeMetrics []string                 `json:"exclude_metrics, omitempty"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (m *CpustatCollector) Init() error {
 | 
			
		||||
type CpustatCollector struct {
 | 
			
		||||
	MetricCollector
 | 
			
		||||
	config CpustatCollectorConfig
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (m *CpustatCollector) Init(config []byte) error {
 | 
			
		||||
	m.name = "CpustatCollector"
 | 
			
		||||
	m.setup()
 | 
			
		||||
	if len(config) > 0 {
 | 
			
		||||
	    err := json.Unmarshal(config, &m.config)
 | 
			
		||||
	    if err != nil {
 | 
			
		||||
	        return err
 | 
			
		||||
	    }
 | 
			
		||||
	}
 | 
			
		||||
	m.init = true
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func ParseStatLine(line string, cpu int, out *[]lp.MutableMetric) {
 | 
			
		||||
 | 
			
		||||
func ParseStatLine(line string, cpu int, exclude []string, out *[]lp.MutableMetric) {
 | 
			
		||||
	ls := strings.Fields(line)
 | 
			
		||||
	matches := []string{"", "cpu_user", "cpu_nice", "cpu_system", "cpu_idle", "cpu_iowait", "cpu_irq", "cpu_softirq", "cpu_steal", "cpu_guest", "cpu_guest_nice"}
 | 
			
		||||
    for _, ex := range exclude {
 | 
			
		||||
        matches, _ = RemoveFromStringList(matches, ex)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
	var tags map[string]string
 | 
			
		||||
	if cpu < 0 {
 | 
			
		||||
@@ -46,6 +62,9 @@ func ParseStatLine(line string, cpu int, out *[]lp.MutableMetric) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (m *CpustatCollector) Read(interval time.Duration, out *[]lp.MutableMetric) {
 | 
			
		||||
    if (!m.init) {
 | 
			
		||||
        return
 | 
			
		||||
    }
 | 
			
		||||
	buffer, err := ioutil.ReadFile(string(CPUSTATFILE))
 | 
			
		||||
 | 
			
		||||
	if err != nil {
 | 
			
		||||
@@ -59,11 +78,11 @@ func (m *CpustatCollector) Read(interval time.Duration, out *[]lp.MutableMetric)
 | 
			
		||||
		}
 | 
			
		||||
		ls := strings.Fields(line)
 | 
			
		||||
		if strings.Compare(ls[0], "cpu") == 0 {
 | 
			
		||||
			ParseStatLine(line, -1, out)
 | 
			
		||||
			ParseStatLine(line, -1, m.config.ExcludeMetrics, out)
 | 
			
		||||
		} else if strings.HasPrefix(ls[0], "cpu") {
 | 
			
		||||
			cpustr := strings.TrimLeft(ls[0], "cpu")
 | 
			
		||||
			cpu, _ := strconv.Atoi(cpustr)
 | 
			
		||||
			ParseStatLine(line, cpu, out)
 | 
			
		||||
			ParseStatLine(line, cpu, m.config.ExcludeMetrics, out)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user