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
}