mirror of
				https://github.com/ClusterCockpit/cc-metric-collector.git
				synced 2025-11-04 02:35:07 +01:00 
			
		
		
		
	Copy all metric configurations from original Ganglia code
This commit is contained in:
		@@ -1,6 +1,7 @@
 | 
			
		||||
package sinks
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"strings"
 | 
			
		||||
 | 
			
		||||
	lp "github.com/ClusterCockpit/cc-metric-collector/internal/ccMetric"
 | 
			
		||||
@@ -23,11 +24,8 @@ func GangliaMetricName(point lp.CCMetric) string {
 | 
			
		||||
	return name
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func GangliaMetricRename(point lp.CCMetric) string {
 | 
			
		||||
	name := point.Name()
 | 
			
		||||
	if name == "mem_total" || name == "swap_total" {
 | 
			
		||||
		return name
 | 
			
		||||
	} else if name == "net_bytes_in" {
 | 
			
		||||
func GangliaMetricRename(name string) string {
 | 
			
		||||
	if name == "net_bytes_in" {
 | 
			
		||||
		return "bytes_in"
 | 
			
		||||
	} else if name == "net_bytes_out" {
 | 
			
		||||
		return "bytes_out"
 | 
			
		||||
@@ -48,3 +46,187 @@ func GangliaSlopeType(point lp.CCMetric) uint {
 | 
			
		||||
	}
 | 
			
		||||
	return 3
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const DEFAULT_GANGLIA_METRIC_TMAX = 300
 | 
			
		||||
const DEFAULT_GANGLIA_METRIC_SLOPE = "both"
 | 
			
		||||
 | 
			
		||||
type GangliaMetric struct {
 | 
			
		||||
	Name  string
 | 
			
		||||
	Type  string
 | 
			
		||||
	Slope string
 | 
			
		||||
	Tmax  int
 | 
			
		||||
	Unit  string
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type GangliaMetricGroup struct {
 | 
			
		||||
	Name    string
 | 
			
		||||
	Metrics []GangliaMetric
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
var CommonGangliaMetrics = []GangliaMetricGroup{
 | 
			
		||||
	{
 | 
			
		||||
		Name: "memory",
 | 
			
		||||
		Metrics: []GangliaMetric{
 | 
			
		||||
			{"mem_total", "float", "zero", 1200, "KB"},
 | 
			
		||||
			{"swap_total", "float", "zero", 1200, "KB"},
 | 
			
		||||
			{"mem_free", "float", "both", 180, "KB"},
 | 
			
		||||
			{"mem_shared", "float", "both", 180, "KB"},
 | 
			
		||||
			{"mem_buffers", "float", "both", 180, "KB"},
 | 
			
		||||
			{"mem_cached", "float", "both", 180, "KB"},
 | 
			
		||||
			{"swap_free", "float", "both", 180, "KB"},
 | 
			
		||||
			{"mem_sreclaimable", "float", "both", 180, "KB"},
 | 
			
		||||
			{"mem_slab", "float", "both", 180, "KB"},
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		Name: "cpu",
 | 
			
		||||
		Metrics: []GangliaMetric{
 | 
			
		||||
			{"cpu_num", "uint32", "zero", 1200, "CPUs"},
 | 
			
		||||
			{"cpu_speed", "uint32", "zero", 1200, "MHz"},
 | 
			
		||||
			{"cpu_user", "float", "both", 90, "%"},
 | 
			
		||||
			{"cpu_nice", "float", "both", 90, "%"},
 | 
			
		||||
			{"cpu_system", "float", "both", 90, "%"},
 | 
			
		||||
			{"cpu_idle", "float", "both", 3800, "%"},
 | 
			
		||||
			{"cpu_aidle", "float", "both", 90, "%"},
 | 
			
		||||
			{"cpu_wio", "float", "both", 90, "%"},
 | 
			
		||||
			{"cpu_intr", "float", "both", 90, "%"},
 | 
			
		||||
			{"cpu_sintr", "float", "both", 90, "%"},
 | 
			
		||||
			{"cpu_steal", "float", "both", 90, "%"},
 | 
			
		||||
			{"cpu_guest", "float", "both", 90, "%"},
 | 
			
		||||
			{"cpu_gnice", "float", "both", 90, "%"},
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		Name: "load",
 | 
			
		||||
		Metrics: []GangliaMetric{
 | 
			
		||||
			{"load_one", "float", "both", 70, ""},
 | 
			
		||||
			{"load_five", "float", "both", 325, ""},
 | 
			
		||||
			{"load_fifteen", "float", "both", 950, ""},
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		Name: "disk",
 | 
			
		||||
		Metrics: []GangliaMetric{
 | 
			
		||||
			{"disk_total", "double", "both", 1200, "GB"},
 | 
			
		||||
			{"disk_free", "double", "both", 180, "GB"},
 | 
			
		||||
			{"part_max_used", "float", "both", 180, "%"},
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		Name: "network",
 | 
			
		||||
		Metrics: []GangliaMetric{
 | 
			
		||||
			{"bytes_out", "float", "both", 300, "bytes/sec"},
 | 
			
		||||
			{"bytes_in", "float", "both", 300, "bytes/sec"},
 | 
			
		||||
			{"pkts_in", "float", "both", 300, "packets/sec"},
 | 
			
		||||
			{"pkts_out", "float", "both", 300, "packets/sec"},
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		Name: "process",
 | 
			
		||||
		Metrics: []GangliaMetric{
 | 
			
		||||
			{"proc_run", "uint32", "both", 950, ""},
 | 
			
		||||
			{"proc_total", "uint32", "both", 950, ""},
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		Name: "system",
 | 
			
		||||
		Metrics: []GangliaMetric{
 | 
			
		||||
			{"boottime", "uint32", "zero", 1200, "s"},
 | 
			
		||||
			{"sys_clock", "uint32", "zero", 1200, "s"},
 | 
			
		||||
			{"machine_type", "string", "zero", 1200, ""},
 | 
			
		||||
			{"os_name", "string", "zero", 1200, ""},
 | 
			
		||||
			{"os_release", "string", "zero", 1200, ""},
 | 
			
		||||
			{"mtu", "uint32", "both", 1200, ""},
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type GangliaMetricConfig struct {
 | 
			
		||||
	Type  string
 | 
			
		||||
	Slope string
 | 
			
		||||
	Tmax  int
 | 
			
		||||
	Unit  string
 | 
			
		||||
	Group string
 | 
			
		||||
	Value string
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func GetCommonGangliaConfig(point lp.CCMetric) GangliaMetricConfig {
 | 
			
		||||
	mname := GangliaMetricRename(point.Name())
 | 
			
		||||
	for _, group := range CommonGangliaMetrics {
 | 
			
		||||
		for _, metric := range group.Metrics {
 | 
			
		||||
			if metric.Name == mname {
 | 
			
		||||
				return GangliaMetricConfig{
 | 
			
		||||
					Group: group.Name,
 | 
			
		||||
					Type:  metric.Type,
 | 
			
		||||
					Slope: metric.Slope,
 | 
			
		||||
					Tmax:  metric.Tmax,
 | 
			
		||||
					Unit:  metric.Unit,
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	return GangliaMetricConfig{
 | 
			
		||||
		Group: "",
 | 
			
		||||
		Type:  "",
 | 
			
		||||
		Slope: "",
 | 
			
		||||
		Tmax:  0,
 | 
			
		||||
		Unit:  "",
 | 
			
		||||
		Value: "",
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func GetGangliaConfig(point lp.CCMetric) GangliaMetricConfig {
 | 
			
		||||
	group := ""
 | 
			
		||||
	if g, ok := point.GetMeta("group"); ok {
 | 
			
		||||
		group = g
 | 
			
		||||
	}
 | 
			
		||||
	unit := ""
 | 
			
		||||
	if u, ok := point.GetMeta("unit"); ok {
 | 
			
		||||
		unit = u
 | 
			
		||||
	}
 | 
			
		||||
	valueType := "double"
 | 
			
		||||
	valueStr := ""
 | 
			
		||||
	value, ok := point.GetField("value")
 | 
			
		||||
	if ok {
 | 
			
		||||
		switch real := value.(type) {
 | 
			
		||||
		case float64:
 | 
			
		||||
			valueStr = fmt.Sprintf("%f", real)
 | 
			
		||||
			valueType = "double"
 | 
			
		||||
		case float32:
 | 
			
		||||
			valueStr = fmt.Sprintf("%f", real)
 | 
			
		||||
			valueType = "float"
 | 
			
		||||
		case int64:
 | 
			
		||||
			valueStr = fmt.Sprintf("%d", real)
 | 
			
		||||
			valueType = "int32"
 | 
			
		||||
		case int32:
 | 
			
		||||
			valueStr = fmt.Sprintf("%d", real)
 | 
			
		||||
			valueType = "int32"
 | 
			
		||||
		case int:
 | 
			
		||||
			valueStr = fmt.Sprintf("%d", real)
 | 
			
		||||
			valueType = "int32"
 | 
			
		||||
		case uint64:
 | 
			
		||||
			valueStr = fmt.Sprintf("%d", real)
 | 
			
		||||
			valueType = "uint32"
 | 
			
		||||
		case uint32:
 | 
			
		||||
			valueStr = fmt.Sprintf("%d", real)
 | 
			
		||||
			valueType = "uint32"
 | 
			
		||||
		case uint:
 | 
			
		||||
			valueStr = fmt.Sprintf("%d", real)
 | 
			
		||||
			valueType = "uint32"
 | 
			
		||||
		case string:
 | 
			
		||||
			valueStr = real
 | 
			
		||||
			valueType = "string"
 | 
			
		||||
		default:
 | 
			
		||||
			valueType = "invalid"
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return GangliaMetricConfig{
 | 
			
		||||
		Group: group,
 | 
			
		||||
		Type:  valueType,
 | 
			
		||||
		Slope: DEFAULT_GANGLIA_METRIC_SLOPE,
 | 
			
		||||
		Tmax:  DEFAULT_GANGLIA_METRIC_TMAX,
 | 
			
		||||
		Unit:  unit,
 | 
			
		||||
		Value: valueStr,
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user