[monitoring] psutil
Updated:
개요
- process and system utilities
- CPU, memory, disks, network, sensors, processes 정보 검색을 위한 크로스 플랫폼 라이브러리
언어 별 라이브러리
예제
- Go
-
package main import ( "github.com/shirou/gopsutil/v3/cpu" "github.com/shirou/gopsutil/v3/disk" "github.com/shirou/gopsutil/v3/host" "github.com/shirou/gopsutil/v3/mem" "github.com/shirou/gopsutil/v3/net" "github.com/shirou/gopsutil/v3/process" ) func host_info() { println("---------- host start ----------\n") defer println("\n---------- host end ----------\n\n\n") if infoStat, err := host.Info(); err != nil { panic(err) } else { println(infoStat.String()) } println() if userStats, err := host.Users(); err != nil { panic(err) } else { for _, userStat := range userStats { println(userStat.String()) } } } func cpu_info() { println("---------- cpu start ----------\n") defer println("\n---------- cpu end ----------\n\n\n") if count, err := cpu.Counts(false); err != nil { panic(err) } else { println("number of physical cores", ":", count) } println("") if infoStats, err := cpu.Info(); err != nil { panic(err) } else { for _, infoStat := range infoStats { println(infoStat.String()) } } println("") if timesStats, err := cpu.Times(true); err != nil { panic(err) } else { for _, timesStat := range timesStats { println(timesStat.String()) } } } func memory_info() { println("---------- memory start ----------\n") defer println("\n---------- memory end ----------\n\n") if virtualMemoryStat, err := mem.VirtualMemory(); err != nil { panic(err) } else { println(virtualMemoryStat.String()) } } func disk_info() { println("---------- disk start ----------\n") defer println("\n---------- disk end ----------\n\n") if partitionStats, err := disk.Partitions(false); err != nil { panic(err) } else { for _, partitionStat := range partitionStats { println(partitionStat.String()) if usageStat, err := disk.Usage(partitionStat.Device); err != nil { panic(err) } else { println(usageStat.String()) } } } } func network_info() { println("---------- network start ----------\n") defer println("\n---------- network end ----------\n\n") if interfaceStatList, err := net.Interfaces(); err != nil { panic(err) } else { for _, interfaceStat := range interfaceStatList { println(interfaceStat.String()) } } } func process_info() { println("---------- process start ----------\n") defer println("\n---------- process end ----------\n\n") if processList, err := process.Processes(); err != nil { panic(err) } else { for _, p := range processList { if name, err := p.Name(); err != nil { panic(err) } else { println(p.Pid, ", ", name) } } } } func main() { host_info() cpu_info() memory_info() disk_info() network_info() process_info() }
-