当前位置: 首页 > wzjs >正文

网站建设工具品牌服装网络营销策划书

网站建设工具品牌,服装网络营销策划书,企业宣传册模板图片,今日军事头条新闻文章目录 Go语言编写简易系统监控信息工具系统性能数据gopsutil库gopsutil安装gopsutil库初步使用CPU相关信息硬盘与内存相关信息主机相关信息网络信息 整合应用:简易监控信息工具project/main.goproject/somedata/cpu.goproject/somedata/diskram.goproject/someda…

文章目录

  • Go语言编写简易系统监控信息工具
  • 系统性能数据gopsutil库
    • gopsutil
    • 安装gopsutil库
    • 初步使用
      • CPU相关信息
      • 硬盘与内存相关信息
      • 主机相关信息
      • 网络信息
    • 整合应用:简易监控信息工具
      • project/main.go
      • project/somedata/cpu.go
      • project/somedata/diskram.go
      • project/somedata/host.go
      • project/somedata/net.go
      • 运行测试

Go语言编写简易系统监控信息工具

系统性能数据gopsutil库

gopsutil

psutil是一个跨平台进程和系统监控的Python库,而gopsutil是其Go语言版本的实现。

Go语言部署简单、性能好的特点非常适合做一些诸如采集系统信息和监控的服务,本文介绍的gopsutil库是知名Python库:psutil的一个Go语言版本的实现。

gopsutil是一个用于获取系统和进程信息的Go语言库。它可以帮助开发者轻松地访问系统级别的资源信息,包括 CPU、内存、磁盘、网络等。这些信息对于监控系统性能、分析应用程序行为以及故障排查非常有用。

主要特点

  • 跨平台支持:支持多种操作系统,包括 Windows、Linux 和 macOS。
  • 简单易用:提供了简洁的 API,方便快速集成到 Go 应用中。
  • 实时监控:可以获取实时的系统资源使用情况,适合做系统监控和性能分析。

常用模块

  • CPU:获取 CPU 使用率、核心信息等。
  • 内存:获取物理内存和虚拟内存的使用情况。
  • 磁盘:获取磁盘使用情况,包括读写速率和使用百分比。
  • 网络:获取网络流量信息和网络接口统计。
  • 进程:获取系统中运行的进程信息,如 PID、名称、状态等。

应用场景

  • 系统监控工具
  • 性能分析和调优
  • 自动化运维脚本
  • 故障排查和诊断工具

安装gopsutil库

go get github.com/shirou/gopsutil

初步使用

CPU相关信息

查看CPU信息:

func CpuData() {info, _ := cpu.Info()  //获取CPU硬件信息pretty, _ := json.MarshalIndent(info, "", "")  //json.MarshalIndent() 将Go数据结构转换为格式化的JSON字符串println("Info:", string(pretty)) //输出格式如:Info: [JSON数据]
}

输出示例:

Info: [
{
"cpu": 0,
"vendorId": "AuthenticAMD",
"family": "25",
"model": "97",
"stepping": 2,
"physicalId": "0",
"coreId": "0",
"cores": 1,
"modelName": "AMD Ryzen 7 7745HX with Radeon Graphics",
"mhz": 3593.183,
"cacheSize": 1024,
"flags": []
}

查看CPU负载信息:

func GetCpuload() {fmt.Printf("CPU负载相关信息:")info, _ := load.Avg()fmt.Printf("%v\n", info)
}

示例信息输出:

CPU负载相关信息:{"load1":0.29,"load5":0.26,"load15":0.41}

查看CPU核心数量:

func CpuNumber() {fmt.Println("CPU核心数:")cpuNumber, _ := cpu.Counts(true)println("CPU逻辑数量", cpuNumber)cpuNumber, _ = cpu.Counts(false)println("CPU物理核心: ", cpuNumber)
}

示例信息输出:

CPU核心数:
CPU逻辑数量 2
CPU物理核心:  2

查看CPU的使用率:

func CpuPercent() {cpuPercent, _ := cpu.Percent(time.Second, false)fmt.Printf("CPU使用率:%.1f%%\n", cpuPercent[0])
}

示例信息输出:

CPU使用率:18.6%

硬盘与内存相关信息

查看硬盘信息:

package somedataimport ("fmt""github.com/shirou/gopsutil/disk"
)/*** @Description* @Author 是垚不是土* @Date 2025/6/8 14:45**/func DiskData() {diskPart, _ := disk.Partitions(false)for _, dp := range diskPart {diskUsed, _ := disk.Usage(dp.Mountpoint)fmt.Printf("路径:%s,分区大小:%d,剩余大小:%d,文件系统类型:%s,分区使用率:%.3f%%\n",diskUsed.Path,diskUsed.Total,diskUsed.Free,dp.Fstype,diskUsed.UsedPercent,)}
}

查看输出示例信息:

路径:/,分区大小:53660876800,剩余大小:33052852224,文件系统类型:xfs,分区使用率:38.404%
路径:/boot,分区大小:1063256064,剩余大小:859697152,文件系统类型:xfs,分区使用率:19.145%
路径:/home,分区大小:46274121728,剩余大小:46240337920,文件系统类型:xfs,分区使用率:0.073%

查看内存相关信息:

func RamData() {memInfo, _ := mem.VirtualMemory()fmt.Println("内存使用情况:")fmt.Printf("总内存: %d MB\n", memInfo.Total/1024/1024)fmt.Printf("已使用内存: %d MB\n", memInfo.Used/1024/1024)fmt.Printf("可用内存: %d MB\n", memInfo.Available/1024/1024)fmt.Printf("内存使用率: %.2f%%\n", memInfo.UsedPercent)
}

示例输出结果:

内存使用情况:
总内存: 7802 MB
已使用内存: 3876 MB
可用内存: 3597 MB
内存使用率: 49.69%

主机相关信息

查看主机相关信息:

package somedataimport ("encoding/json""github.com/shirou/gopsutil/host""time"
)/*** @Description* @Author 是垚不是土* @Date 2025/6/8 15:02**/func HostData() {hostinfo, _ := host.Info()pretty, _ := json.MarshalIndent(hostinfo, "", "")println("Info", string(pretty))te := time.Unix(int64(hostinfo.BootTime), 0)println("BootTime", te.Format(time.DateTime))println("Uptime", hostinfo.Uptime)
}

示例输出信息:

Info {
"hostname": "master",
"uptime": 7620,
"bootTime": 1749358771,
"procs": 178,
"os": "linux",
"platform": "centos",
"platformFamily": "rhel",
"platformVersion": "7.9.2009",
"kernelVersion": "3.10.0-1160.119.1.el7.x86_64",
"kernelArch": "x86_64",
"virtualizationSystem": "",
"virtualizationRole": "",
"hostid": "52404d56-d59f-3642-2545-16e49d986b45"
}
BootTime 2025-06-08 12:59:31
Uptime 7620

网络信息

查看网卡信息:

package somedata/*** @Description* @Author 是垚不是土* @Date 2025/6/8 14:45**/import ("fmt""github.com/shirou/gopsutil/net"
)func NetInterfaces() {// 获取所有网络接口信息interfaces, err := net.Interfaces()if err != nil {fmt.Println("获取网卡信息失败:", err)return}fmt.Println("系统网络接口信息:")for i, iface := range interfaces {fmt.Printf("\n接口 %d:\n", i+1)fmt.Printf("  名称: %s\n", iface.Name)fmt.Printf("  MAC地址: %s\n", iface.HardwareAddr)// 打印所有IPv4地址fmt.Println("  IPv4地址:")for _, addr := range iface.Addrs {if len(addr.Addr) > 0 && addr.Addr[0] != ':' { // 过滤掉IPv6地址fmt.Printf("    - %s\n", addr.Addr)}}}
}

示例输出结果:

系统网络接口信息:接口 1:名称: loMAC地址: IPv4地址:- 127.0.0.1/8接口 2:名称: ens33MAC地址: 00:0c:29:98:6b:45IPv4地址:- 192.168.100.10/24- fe80::5165:ab78:3bec:8ce9/64接口 3:名称: docker0MAC地址: 02:42:c4:f4:9c:f4IPv4地址:- 172.17.0.1/16

整合应用:简易监控信息工具

当我们将上述的代码进行整合之后就形成了一个简易的监控服务:

project/main.go

package main/*** @Description* @Author 是垚不是土* @Date 2025/6/8 13:30**/import ("bufio""fmt""os""strings"
)import (data "project/somedata"
)func main() {// 创建输入扫描器,用于读取标准输入(键盘输入)scanner := bufio.NewScanner(os.Stdin)for {// 打印菜单选项fmt.Println("\n简易系统监控信息工具")fmt.Println("1. 查看主机信息")fmt.Println("2. 查看网卡信息")fmt.Println("3. 查看CPU相关信息")fmt.Println("4. 查询内存信息")fmt.Println("5. 查询硬盘信息")fmt.Println("6. 退出系统")fmt.Print("请选择操作编号:")scanner.Scan()                             // 等待用户输入input := strings.TrimSpace(scanner.Text()) // 处理输入switch input {case "1":data.HostData()case "2":data.NetInterfaces()case "3":data.CpuData()case "4":data.RamData()case "5":data.DiskData()case "6":fmt.Println("感谢使用,再见!")return // 结束程序default:fmt.Println("无效的输入,请重新输入")}}
}

project/somedata/cpu.go

package somedata/*** @Description* @Author 是垚不是土* @Date 2025/6/8 13:02**/
import ("encoding/json""fmt""github.com/shirou/gopsutil/cpu""time"
)//func GetCpuload() {
//	fmt.Printf("CPU负载相关信息:")
//	info, _ := load.Avg()
//	fmt.Printf("%v\n", info)
//}func CpuData() {info, _ := cpu.Info()pretty, _ := json.MarshalIndent(info, "", "")println("Info:", string(pretty))fmt.Println("CPU核心数:")cpuNumber, _ := cpu.Counts(true)println("CPU逻辑数量", cpuNumber)cpuNumber, _ = cpu.Counts(false)println("CPU物理核心: ", cpuNumber)cpuPercent, _ := cpu.Percent(time.Second, false)fmt.Printf("CPU使用率:%.1f%%\n", cpuPercent[0])}//func CpuNumber() {
//	fmt.Println("CPU核心数:")
//	cpuNumber, _ := cpu.Counts(true)
//	println("CPU逻辑数量", cpuNumber)
//	cpuNumber, _ = cpu.Counts(false)
//	println("CPU物理核心: ", cpuNumber)
//}//func CpuPercent() {
//	cpuPercent, _ := cpu.Percent(time.Second, false)
//	fmt.Printf("CPU使用率:%.1f%%\n", cpuPercent[0])
//}

project/somedata/diskram.go

package somedataimport ("fmt""github.com/shirou/gopsutil/disk""github.com/shirou/gopsutil/mem"
)/*** @Description* @Author 是垚不是土* @Date 2025/6/8 14:45**/func DiskData() {diskPart, _ := disk.Partitions(false)for _, dp := range diskPart {diskUsed, _ := disk.Usage(dp.Mountpoint)fmt.Printf("路径:%s,分区大小:%d,剩余大小:%d,文件系统类型:%s,分区使用率:%.3f%%\n",diskUsed.Path,diskUsed.Total,diskUsed.Free,dp.Fstype,diskUsed.UsedPercent,)}
}func RamData() {memInfo, _ := mem.VirtualMemory()fmt.Println("内存使用情况:")fmt.Printf("总内存: %d MB\n", memInfo.Total/1024/1024)fmt.Printf("已使用内存: %d MB\n", memInfo.Used/1024/1024)fmt.Printf("可用内存: %d MB\n", memInfo.Available/1024/1024)fmt.Printf("内存使用率: %.2f%%\n", memInfo.UsedPercent)
}

project/somedata/host.go

package somedataimport ("encoding/json""github.com/shirou/gopsutil/host""time"
)/*** @Description* @Author 是垚不是土* @Date 2025/6/8 15:02**/func HostData() {hostinfo, _ := host.Info()pretty, _ := json.MarshalIndent(hostinfo, "", "")println("Info", string(pretty))te := time.Unix(int64(hostinfo.BootTime), 0)println("BootTime", te.Format(time.DateTime))println("Uptime", hostinfo.Uptime)
}

project/somedata/net.go

package somedata/*** @Description* @Author 是垚不是土* @Date 2025/6/8 14:45**/import ("fmt""github.com/shirou/gopsutil/net"
)func NetInterfaces() {// 获取所有网络接口信息interfaces, err := net.Interfaces()if err != nil {fmt.Println("获取网卡信息失败:", err)return}fmt.Println("系统网络接口信息:")for i, iface := range interfaces {fmt.Printf("\n接口 %d:\n", i+1)fmt.Printf("  名称: %s\n", iface.Name)fmt.Printf("  MAC地址: %s\n", iface.HardwareAddr)// 打印所有IPv4地址fmt.Println("  IPv4地址:")for _, addr := range iface.Addrs {if len(addr.Addr) > 0 && addr.Addr[0] != ':' { // 过滤掉IPv6地址fmt.Printf("    - %s\n", addr.Addr)}}}
}

运行测试

简易系统监控信息工具
1. 查看主机信息
2. 查看网卡信息
3. 查看CPU相关信息
4. 查询内存信息
5. 查询硬盘信息
6. 退出系统
请选择操作编号:1Info {
"hostname": "master",
"uptime": 10729,
"bootTime": 1749358771,
"procs": 178,
"os": "linux",
"platform": "centos",
"platformFamily": "rhel",
"platformVersion": "7.9.2009",
"kernelVersion": "3.10.0-1160.119.1.el7.x86_64",
"kernelArch": "x86_64",
"virtualizationSystem": "",
"virtualizationRole": "",
"hostid": "52404d56-d59f-3642-2545-16e49d986b45"
}
BootTime 2025-06-08 12:59:31
Uptime 10729
简易系统监控信息工具
1. 查看主机信息
2. 查看网卡信息
3. 查看CPU相关信息
4. 查询内存信息
5. 查询硬盘信息
6. 退出系统
请选择操作编号:2
系统网络接口信息:接口 1:名称: loMAC地址: IPv4地址:- 127.0.0.1/8接口 2:名称: ens33MAC地址: 00:0c:29:98:6b:45IPv4地址:- 192.168.100.10/24- fe80::5165:ab78:3bec:8ce9/64接口 3:名称: docker0MAC地址: 02:42:c4:f4:9c:f4IPv4地址:- 172.17.0.1/16简易系统监控信息工具
1. 查看主机信息
2. 查看网卡信息
3. 查看CPU相关信息
4. 查询内存信息
5. 查询硬盘信息
6. 退出系统
请选择操作编号:3
CPU核心数:
Info: [
{
"cpu": 0,
"vendorId": "AuthenticAMD",
"family": "25",
"model": "97",
"stepping": 2,
"physicalId": "0",
"coreId": "0",
"cores": 1,
"modelName": "AMD Ryzen 7 7745HX with Radeon Graphics",
"mhz": 3593.183,
"cacheSize": 1024,
"flags": [],
"microcode": "0xffffffff"
},
--------(省略)
CPU逻辑数量 2
CPU物理核心:  2
CPU使用率:4.7%简易系统监控信息工具
1. 查看主机信息
2. 查看网卡信息
3. 查看CPU相关信息
4. 查询内存信息
5. 查询硬盘信息
6. 退出系统
请选择操作编号:4
内存使用情况:
总内存: 7802 MB
已使用内存: 4013 MB
可用内存: 3452 MB
内存使用率: 51.44%简易系统监控信息工具
1. 查看主机信息
2. 查看网卡信息
3. 查看CPU相关信息
4. 查询内存信息
5. 查询硬盘信息
6. 退出系统
请选择操作编号:5
路径:/,分区大小:53660876800,剩余大小:33040707584,文件系统类型:xfs,分区使用率:38.427%
路径:/boot,分区大小:1063256064,剩余大小:859697152,文件系统类型:xfs,分区使用率:19.145%
路径:/home,分区大小:46274121728,剩余大小:46240337920,文件系统类型:xfs,分区使用率:0.073%简易系统监控信息工具
1. 查看主机信息
2. 查看网卡信息
3. 查看CPU相关信息
4. 查询内存信息
5. 查询硬盘信息
6. 退出系统
请选择操作编号:6
感谢使用,再见!进程 已完成,退出代码为 0

至此,基础的库应用已经完成。
在这里插入图片描述

在后续,作者会进行尝试使用该标准库结合Gin框架,完成这些信息的前端展示,并且会进一步的丰富这些采集信息,在前端网站上有一个更好的展示。

学习Go的道路上注定艰难,一个运维工程师向Go语言开发的转变注定不会一帆风顺,在未来会进一步的学习,永无止境的探索下去。

http://www.dtcms.com/wzjs/432962.html

相关文章:

  • 有没有什么做海报字体的网站以下哪个单词表示搜索引擎优化
  • 怎样建设自己网站搜索引擎seo如何赚钱
  • 视频一页网站怎么做百度入口网址
  • 网站首页结构seo优化裤子关键词
  • 张家港网站建设公司英文网站建设
  • 深圳网站推广优首页排名seo
  • 重庆外贸网站建设公司排名不限次数观看视频的app
  • dedecms 百度网站地图seo培训优化
  • 山东 基层政府网站集约化建设清远新闻最新消息
  • 营销型企业网站策划方案百度客户端下载安装
  • 中英文外贸网站模版关键词怎么找出来
  • 河南网站建设技术公司seo是指搜索引擎营销
  • 小说网站开发业务逻辑百度推广业务电话
  • 重庆哪家做网站好网站收录怎么弄
  • 乌鲁木齐企业网站建设公司市场调研报告范文2000
  • 做网站都可以用什么框架百度一下1688
  • 小程序制作平台开发太原seo团队
  • 旅行社网站规划与建设2023年7月疫情还会严重吗
  • 简单大气网站模板站长统计app下载
  • 东莞微网站建设服务上海最新新闻
  • 汕头网站建设策划关于友情链接的作用有
  • 教育培训网站建设黄页引流推广网站
  • 怎么做网站后台 更新日志软件定制开发平台
  • 施工企业质量管理体系认证有效期seo实训报告
  • 做网站muse好还是DW好用全渠道营销的概念
  • 广州网站建设信科便宜seo是什么意思
  • 微网站注册有没有专门帮人推广的公司
  • 网站排名优化外包公司店铺推广方式有哪些
  • 帮人做诈骗网站获利35万退赃部分网络推广员每天的工作是什么
  • wordpress 输入ftpseo数据