|
发表于 2023-4-25 16:28:29
|
显示全部楼层
本楼为最佳答案
 这个需求可以通过Go的一些第三方库和内置库来实现。这里给你一个简单的示例代码,以帮助你了解如何编写类似Zabbix Agent的插件,来获取服务器的CPU、内存和硬盘信息。
1. 安装必要的库:
- go get github.com/shirou/gopsutil/cpu
- go get github.com/shirou/gopsutil/mem
- go get github.com/shirou/gopsutil/disk
复制代码
2. 创建一个名为`main.go`的文件,并输入以下代码:
- package main
- import (
- "fmt"
- "github.com/shirou/gopsutil/cpu"
- "github.com/shirou/gopsutil/disk"
- "github.com/shirou/gopsutil/mem"
- )
- func main() {
- // 获取CPU信息
- cpuInfo, err := cpu.Info()
- if err != nil {
- fmt.Println("无法获取CPU信息:", err)
- return
- }
- // 获取内存信息
- memInfo, err := mem.VirtualMemory()
- if err != nil {
- fmt.Println("无法获取内存信息:", err)
- return
- }
- // 获取硬盘信息
- diskPartitions, err := disk.Partitions(true)
- if err != nil {
- fmt.Println("无法获取硬盘信息:", err)
- return
- }
- // 打印获取到的信息
- fmt.Println("CPU信息:")
- for _, info := range cpuInfo {
- fmt.Printf("型号: %v 核心数: %v\n", info.ModelName, info.Cores)
- }
- fmt.Println("\n内存信息:")
- fmt.Printf("总内存: %v MB 已使用内存: %v MB\n", memInfo.Total/1024/1024, memInfo.Used/1024/1024)
- fmt.Println("\n硬盘信息:")
- for _, partition := range diskPartitions {
- usage, _ := disk.Usage(partition.Mountpoint)
- fmt.Printf("设备: %v 容量: %v GB 已使用: %v GB\n", partition.Device, usage.Total/1024/1024/1024, usage.Used/1024/1024/1024)
- }
- }
复制代码
3. 运行代码:
以上示例代码将获取服务器的CPU、内存和硬盘信息,并打印出来。你可以根据需要对代码进行修改以满足你的需求。
注意:在使用`gopsutil`库时,某些操作可能需要管理员权限。在运行时可能需要使用`sudo`命令。 |
评分
-
查看全部评分
|