mirror of
				https://github.com/ClusterCockpit/cc-metric-collector.git
				synced 2025-11-04 02:35:07 +01:00 
			
		
		
		
	Formatting
This commit is contained in:
		@@ -1,21 +1,21 @@
 | 
			
		||||
package collectors
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"encoding/json"
 | 
			
		||||
	"errors"
 | 
			
		||||
	lp "github.com/influxdata/line-protocol"
 | 
			
		||||
	"io/ioutil"
 | 
			
		||||
	"log"
 | 
			
		||||
	"strconv"
 | 
			
		||||
	"strings"
 | 
			
		||||
	"time"
 | 
			
		||||
	"encoding/json"
 | 
			
		||||
	"errors"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
const LUSTREFILE = `/proc/fs/lustre/llite/lnec-XXXXXX/stats`
 | 
			
		||||
 | 
			
		||||
type LustreCollectorConfig struct {
 | 
			
		||||
    procfiles []string `json:"procfiles"`
 | 
			
		||||
    ExcludeMetrics []string                 `json:"exclude_metrics"`
 | 
			
		||||
	procfiles      []string `json:"procfiles"`
 | 
			
		||||
	ExcludeMetrics []string `json:"exclude_metrics"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type LustreCollector struct {
 | 
			
		||||
@@ -23,17 +23,17 @@ type LustreCollector struct {
 | 
			
		||||
	tags    map[string]string
 | 
			
		||||
	matches map[string]map[string]int
 | 
			
		||||
	devices []string
 | 
			
		||||
	config LustreCollectorConfig
 | 
			
		||||
	config  LustreCollectorConfig
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (m *LustreCollector) Init(config []byte) error {
 | 
			
		||||
    var err error
 | 
			
		||||
	var err error
 | 
			
		||||
	m.name = "LustreCollector"
 | 
			
		||||
	if len(config) > 0 {
 | 
			
		||||
	    err = json.Unmarshal(config, &m.config)
 | 
			
		||||
	    if err != nil {
 | 
			
		||||
	        return err
 | 
			
		||||
	    }
 | 
			
		||||
		err = json.Unmarshal(config, &m.config)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	m.setup()
 | 
			
		||||
	m.tags = map[string]string{"type": "node"}
 | 
			
		||||
@@ -47,15 +47,15 @@ func (m *LustreCollector) Init(config []byte) error {
 | 
			
		||||
		"inode_permission": {"inode_permission": 1}}
 | 
			
		||||
	m.devices = make([]string, 0)
 | 
			
		||||
	for _, p := range m.config.procfiles {
 | 
			
		||||
	    _, err := ioutil.ReadFile(p)
 | 
			
		||||
	    if err == nil {
 | 
			
		||||
	        m.devices = append(m.devices, p)
 | 
			
		||||
	    } else {
 | 
			
		||||
	        log.Print(err.Error())
 | 
			
		||||
	        continue
 | 
			
		||||
	    }
 | 
			
		||||
		_, err := ioutil.ReadFile(p)
 | 
			
		||||
		if err == nil {
 | 
			
		||||
			m.devices = append(m.devices, p)
 | 
			
		||||
		} else {
 | 
			
		||||
			log.Print(err.Error())
 | 
			
		||||
			continue
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
 | 
			
		||||
	if len(m.devices) == 0 {
 | 
			
		||||
		return errors.New("No metrics to collect")
 | 
			
		||||
	}
 | 
			
		||||
@@ -64,39 +64,39 @@ func (m *LustreCollector) Init(config []byte) error {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (m *LustreCollector) Read(interval time.Duration, out *[]lp.MutableMetric) {
 | 
			
		||||
    if !m.init {
 | 
			
		||||
        return
 | 
			
		||||
    }
 | 
			
		||||
    for _, p := range m.devices {
 | 
			
		||||
	    buffer, err := ioutil.ReadFile(p)
 | 
			
		||||
	if !m.init {
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	for _, p := range m.devices {
 | 
			
		||||
		buffer, err := ioutil.ReadFile(p)
 | 
			
		||||
 | 
			
		||||
	    if err != nil {
 | 
			
		||||
		    log.Print(err)
 | 
			
		||||
		    return
 | 
			
		||||
	    }
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			log.Print(err)
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
	    for _, line := range strings.Split(string(buffer), "\n") {
 | 
			
		||||
		    lf := strings.Fields(line)
 | 
			
		||||
		    if len(lf) > 1 {
 | 
			
		||||
			    for match, fields := range m.matches {
 | 
			
		||||
				    if lf[0] == match {
 | 
			
		||||
					    for name, idx := range fields {
 | 
			
		||||
					        _, skip := stringArrayContains(m.config.ExcludeMetrics, name)
 | 
			
		||||
					        if skip {
 | 
			
		||||
					            continue
 | 
			
		||||
					        }
 | 
			
		||||
						    x, err := strconv.ParseInt(lf[idx], 0, 64)
 | 
			
		||||
						    if err == nil {
 | 
			
		||||
							    y, err := lp.New(name, m.tags, map[string]interface{}{"value": x}, time.Now())
 | 
			
		||||
							    if err == nil {
 | 
			
		||||
								    *out = append(*out, y)
 | 
			
		||||
							    }
 | 
			
		||||
						    }
 | 
			
		||||
					    }
 | 
			
		||||
				    }
 | 
			
		||||
			    }
 | 
			
		||||
		    }
 | 
			
		||||
	    }
 | 
			
		||||
		for _, line := range strings.Split(string(buffer), "\n") {
 | 
			
		||||
			lf := strings.Fields(line)
 | 
			
		||||
			if len(lf) > 1 {
 | 
			
		||||
				for match, fields := range m.matches {
 | 
			
		||||
					if lf[0] == match {
 | 
			
		||||
						for name, idx := range fields {
 | 
			
		||||
							_, skip := stringArrayContains(m.config.ExcludeMetrics, name)
 | 
			
		||||
							if skip {
 | 
			
		||||
								continue
 | 
			
		||||
							}
 | 
			
		||||
							x, err := strconv.ParseInt(lf[idx], 0, 64)
 | 
			
		||||
							if err == nil {
 | 
			
		||||
								y, err := lp.New(name, m.tags, map[string]interface{}{"value": x}, time.Now())
 | 
			
		||||
								if err == nil {
 | 
			
		||||
									*out = append(*out, y)
 | 
			
		||||
								}
 | 
			
		||||
							}
 | 
			
		||||
						}
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user