Go整合gopsutils监控系统性能指标参数
2023-09-11 14:16:33 时间
1 简介
以下系统环境可以使用:
- FreeBSD i386/amd64/arm
- Linux i386/amd64/arm(raspberry pi)
- Windows i386/amd64/arm/arm64
- Darwin i386/amd64
- OpenBSD amd64 (Thank you @mpfz0r!)
- Solaris amd64 (developed and tested on SmartOS/Illumos, Thank you @jen20!)
这些都有部分支持:
- CPU on DragonFly BSD
- host on Linux RISC-V
安装方式:
go get github.com/shirou/gopsutil
2 常用的API具体使用
2.1 CPU信息
package main
import (
"fmt"
"github.com/shirou/gopsutil/cpu"
"time"
)
//获取CPU信息
func getCpuInfo() {
//1 CPU全部信息
cpuInfos, err := cpu.Info()
if err != nil {
fmt.Printf("获取CPU信息出错 , err:\n %v", err)
}
for _, ci := range cpuInfos {
fmt.Println("CPU基本信息 : \n", ci)
}
// 实时加载CPU使用率
for {
//每秒加载一次
percent, _ := cpu.Percent(time.Second, false)
fmt.Printf("CPU负载信息 : %v\n", percent)
}
}
func main() {
getCpuInfo()
}
2.2 磁盘信息
package main
import (
"fmt"
"github.com/shirou/gopsutil/disk"
)
// 磁盘信息
func getDiskInfo() {
parts, err := disk.Partitions(true)
if err != nil {
fmt.Printf("获取磁盘信息失败 , err:%v\n", err)
return
}
for _, part := range parts {
fmt.Printf("磁盘分区 :%v\n", part.String())
diskInfo, _ := disk.Usage(part.Mountpoint)
fmt.Printf("该磁盘使用信息:used:%v free:%v\n", diskInfo.UsedPercent, diskInfo.Free)
}
ioStat, _ := disk.IOCounters()
for k, v := range ioStat {
fmt.Printf("%v:%v\n", k, v)
}
}
func main() {
getDiskInfo()
}
2.3 内存信息
package main
import (
"fmt"
"github.com/shirou/gopsutil/mem"
)
//内存信息
func getMemInfo() {
//获取内存信息
memInfo, _ := mem.VirtualMemory()
fmt.Printf("内存信息 :\n %v", memInfo)
}
func main() {
getMemInfo()
}
2.4 主机信息
package main
import (
"fmt"
"github.com/shirou/gopsutil/host"
)
//主机信息
func getHostInfo() {
hInfo, _ := host.Info()
fmt.Printf("主机信息 :\n %v", hInfo)
}
func main() {
getHostInfo()
}
2.5 IP地址信息
package main
import (
"fmt"
"net"
)
func GetLocalIP() (ip string, err error) {
addrs, err := net.InterfaceAddrs()
if err != nil {
return
}
for _, addr := range addrs {
ipAddr, ok := addr.(*net.IPNet)
if !ok {
continue
}
if ipAddr.IP.IsLoopback() {
continue
}
if !ipAddr.IP.IsGlobalUnicast() {
continue
}
return ipAddr.IP.String(), nil
}
return
}
func main() {
ip, err := GetLocalIP()
if err!=nil {
fmt.Print(err)
}
fmt.Println("IP地址 : "+ip)
}
~
相关文章
- go Context包
- 【Go命令教程】9. go list
- 【Go命令教程】6. go doc 与 godoc
- 涂鸦智能 dubbo-go 亿级流量的实践与探索
- [Go] New
- 【Go语言】【7】GO语言的切片
- 【Go语言】【11】GO语言的包和函数
- go文件读写功能实现(io/ioutil)及实现shell脚本的调用(os/exec)
- go gin框架:DefaultQuery给请求参数赋默认值
- Go gin使用html模板
- [GO] Gin入门
- [Go] go基础4
- HANA report creation implementation go through
- 【Go进阶】了解实践go类型断言
- 【Go基础】接口interface
- Go语言精进自学系列 | 使用Go语言原生编码思维来写Go代码
- Go语言精进自学系列 | 汇总
- Go语言自学系列 | go语言中的流程控制
- Go语言自学系列 | go语言数字类型
- package wang/test is not in GOROOT (/usr/local/go/src/wang/test)
- GO语言教程(一)Linux( Centos)下Go的安装, 以及HelloWorld
- 我的Go+语言初体验——(7)Go+ 分数型有理数数据类型