func GetKubemarkMasterComponentsResourceUsage()

in clusterloader2/pkg/measurement/util/kubemark/kubemark.go [46:96]


func GetKubemarkMasterComponentsResourceUsage(host string, provider provider.Provider) map[string]*ResourceUsage {
	result := make(map[string]*ResourceUsage)
	// Get kubernetes component resource usage
	sshResult, err := getMasterUsageByPrefix(host, provider, "kube")
	if err != nil {
		klog.Errorf("error when trying to SSH to master machine. Skipping probe. %v", err)
		return nil
	}
	scanner := bufio.NewScanner(strings.NewReader(sshResult))
	for scanner.Scan() {
		var cpu float64
		var mem uint64
		var name string
		if _, err := fmt.Sscanf(strings.TrimSpace(scanner.Text()), "%f %d /usr/local/bin/kube-%s", &cpu, &mem, &name); err == nil {
			klog.Errorf("error parsing component resource usage %s. Skipping. %v", name, err)
		}
		if name != "" {
			// Gatherer expects pod_name/container_name format
			fullName := name + "/" + name
			result[fullName] = &ResourceUsage{Name: fullName, MemoryWorkingSetInBytes: mem * 1024, CPUUsageInCores: cpu / 100}
		}
	}
	// Get etcd resource usage
	sshResult, err = getMasterUsageByPrefix(host, provider, "bin/etcd")
	if err != nil {
		klog.Errorf("error when trying to SSH to master machine. Skipping probe")
		return nil
	}
	scanner = bufio.NewScanner(strings.NewReader(sshResult))
	for scanner.Scan() {
		var cpu float64
		var mem uint64
		var etcdKind string
		if _, err := fmt.Sscanf(strings.TrimSpace(scanner.Text()), "%f %d /usr/local/bin/etcd", &cpu, &mem); err == nil {
			klog.Errorf("error parsing etcd resource usage, skipping. %v", err)
		}
		dataDirStart := strings.Index(scanner.Text(), "--data-dir")
		if dataDirStart < 0 {
			continue
		}
		if _, err := fmt.Sscanf(scanner.Text()[dataDirStart:], "--data-dir /var/%s", &etcdKind); err != nil {
			klog.Errorf("error parsing etcd data-dir. Skipping. %v", err)
		}
		if etcdKind != "" {
			// Gatherer expects pod_name/container_name format
			fullName := "etcd/" + etcdKind
			result[fullName] = &ResourceUsage{Name: fullName, MemoryWorkingSetInBytes: mem * 1024, CPUUsageInCores: cpu / 100}
		}
	}
	return result
}