diff --git a/monitoring/unit/virtualization.go b/monitoring/unit/virtualization.go new file mode 100644 index 0000000..8d60353 --- /dev/null +++ b/monitoring/unit/virtualization.go @@ -0,0 +1,19 @@ +package monitoring + +import ( + "os/exec" + "runtime" + "strings" +) + +func Virtualized() string { + if runtime.GOOS == "windows" { + return "Unknown" + } + out, err := exec.Command("systemd-detect-virt").Output() + if err != nil { + return "Unknown" + } + virt := strings.TrimSpace(string(out)) + return virt +} diff --git a/monitoring/unit/virtualization_test.go b/monitoring/unit/virtualization_test.go new file mode 100644 index 0000000..f555460 --- /dev/null +++ b/monitoring/unit/virtualization_test.go @@ -0,0 +1,10 @@ +package monitoring + +import ( + "testing" +) + +func TestVirtualized(t *testing.T) { + virt := Virtualized() + t.Logf("Virtualization type: %s", virt) +} diff --git a/server/basicInfo.go b/server/basicInfo.go index abd0282..1f267e7 100644 --- a/server/basicInfo.go +++ b/server/basicInfo.go @@ -35,17 +35,18 @@ func uploadBasicInfo() error { ipv4, ipv6, _ := monitoring.GetIPAddress() data := map[string]interface{}{ - "cpu_name": cpu.CPUName, - "cpu_cores": cpu.CPUCores, - "arch": cpu.CPUArchitecture, - "os": osname, - "ipv4": ipv4, - "ipv6": ipv6, - "mem_total": monitoring.Ram().Total, - "swap_total": monitoring.Swap().Total, - "disk_total": monitoring.Disk().Total, - "gpu_name": monitoring.GpuName(), - "version": update.CurrentVersion, + "cpu_name": cpu.CPUName, + "cpu_cores": cpu.CPUCores, + "arch": cpu.CPUArchitecture, + "os": osname, + "ipv4": ipv4, + "ipv6": ipv6, + "mem_total": monitoring.Ram().Total, + "swap_total": monitoring.Swap().Total, + "disk_total": monitoring.Disk().Total, + "gpu_name": monitoring.GpuName(), + "virtualization": monitoring.Virtualized(), + "version": update.CurrentVersion, } endpoint := strings.TrimSuffix(flags.Endpoint, "/") + "/api/clients/uploadBasicInfo?token=" + flags.Token