当前位置:网站首页>Use of golang gopsutil Library: process and system resource monitoring (CPU, memory, disk, etc.)
Use of golang gopsutil Library: process and system resource monitoring (CPU, memory, disk, etc.)
2022-06-29 21:35:00 【Learn programming notes】
golang gopsutil Library usage : Process and system resource monitoring (CPU Memory Disks, etc )
| Golang
psutil Is a cross platform process and system monitoring Python library , and gopsutil It is its Go Implementation of language version . This paper introduces its basic use .
Go Language deployment is simple 、 Good performance is very suitable for some services such as collecting system information and monitoring , This paper introduces gopsutil The library is well known Python library :psutil One of the Go Implementation of language version .
install
go get github.com/shirou/gopsutil
Use
CPU
collection CPU Related information .
import "github.com/shirou/gopsutil/cpu"
// cpu info
func getCpuInfo() {
cpuInfos, err := cpu.Info()
if err != nil {
fmt.Printf("get cpu info failed, err:%v", err)
}
for _, ci := range cpuInfos {
fmt.Println(ci)
}
// CPU Usage rate
for {
percent, _ := cpu.Percent(time.Second, false)
fmt.Printf("cpu percent:%v\n", percent)
}
}
obtain CPU Load information :
import "github.com/shirou/gopsutil/load"
func getCpuLoad() {
info, _ := load.Avg()
fmt.Printf("%v\n", info)
}
Memory
import "github.com/shirou/gopsutil/mem"
// mem info
func getMemInfo() {
memInfo, _ := mem.VirtualMemory()
fmt.Printf("mem info:%v\n", memInfo)
}
Host
import "github.com/shirou/gopsutil/host"
// host info
func getHostInfo() {
hInfo, _ := host.Info()
fmt.Printf("host info:%v uptime:%v boottime:%v\n", hInfo, hInfo.Uptime, hInfo.BootTime)
}
Disk
import "github.com/shirou/gopsutil/disk"
// disk info
func getDiskInfo() {
parts, err := disk.Partitions(true)
if err != nil {
fmt.Printf("get Partitions failed, err:%v\n", err)
return
}
for _, part := range parts {
fmt.Printf("part:%v\n", part.String())
diskInfo, _ := disk.Usage(part.Mountpoint)
fmt.Printf("disk info:used:%v free:%v\n", diskInfo.UsedPercent, diskInfo.Free)
}
ioStat, _ := disk.IOCounters()
for k, v := range ioStat {
fmt.Printf("%v:%v\n", k, v)
}
}
net IO
import "github.com/shirou/gopsutil/net"
func getNetInfo() {
info, _ := net.IOCounters(true)
for index, v := range info {
fmt.Printf("%v:%v send:%v recv:%v\n", index, v, v.BytesSent, v.BytesRecv)
}
}
net
Get local IP Two ways
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
}
or :
// Get preferred outbound ip of this machine
func GetOutboundIP() string {
conn, err := net.Dial("udp", "8.8.8.8:80")
if err != nil {
log.Fatal(err)
}
defer conn.Close()
localAddr := conn.LocalAddr().(*net.UDPAddr)
fmt.Println(localAddr.String())
return localAddr.IP.String()
}
Reference link :https://www.liwenzhou.com/posts/Go/go_gopsutil/
边栏推荐
- Desai wisdom number - other charts (basic sunrise chart): high frequency words in graduation speech
- Flutter BottomNavigationBar带有页面切换示例
- 导航 习题【微机原理】【习题】
- Application of VoIP push in overseas audio and video services
- leetcode:370. Interval addition
- About Effect Size
- GoAhead 翻译—Active Server Pages
- Detailed explanation of key points in implementing MES system in Enterprises
- GoAhead WebServer移植
- Water polo chart - using dynamic ripples to show percentages
猜你喜欢

Clock tree synthesis (CTS)

数字密码锁verilog设计+仿真+上板验证

每周招聘|DBA数据工程师,年薪35+ ,梦起九州,星河灿烂!

Yolov6 training your own data record +yolov5 comparison test

ads131a04 ADC verilog实现及仿真

THREEJS基础入门
![[advanced ROS chapter] lesson 2 custom header and source file encapsulation](/img/25/85e8c55605f5cc999a8e85f0a05f93.jpg)
[advanced ROS chapter] lesson 2 custom header and source file encapsulation

leetcode:238. Product of arrays other than itself

导航【微机原理】

How can colleges and universities build future oriented smart campus based on cloud native? Full stack cloud native vs traditional technology architecture
随机推荐
How to evaluate iFLYTEK AI translation pen P20 series? Is it worth buying?
[cloud native practice] kubesphere practice - Multi tenant system practice
Vipshop Keyword Search API interface (item_search- search vipshop commodity API interface by keyword), vipshop API interface
How to integrate MES system with ERP? This article tells you the answer
Matlab output format control%d,%f,%c,%s usage
leetcode:370. Interval addition
LeetCode 1. 两数之和
Simple application and configuration of Rsync
Varnish 503 no backend connection – varnish health check
My creation anniversary
阿里巴巴商品详情API接口(item_get-获得商品详情接口),阿里巴巴API接口
Getting started with completabilefuture
Goahead translation - Active Server Pages
The foundation and application of quantum machine learning: a concise literature review
leetcode:307. Area and retrieval - array modifiable
直播预告 | PostgreSQL 内核解读系列第一讲:PostgreSQL 系统概述
Storage principle of string
Water polo chart - using dynamic ripples to show percentages
Redis (I) -- getting started with redis (1) -- redis introduction, installation and startup, and common configurations
shell 实现Memcache缓存命中率监控脚本