首页 > 其他分享 >使用golang对服务器简单监控

使用golang对服务器简单监控

时间:2023-11-16 11:48:13浏览次数:31  
标签:err MB fmt golang Sprintf 监控 Println 服务器 使用率

package main

import (
	"fmt"
	"github.com/shirou/gopsutil/cpu"
	"github.com/shirou/gopsutil/disk"
	"github.com/shirou/gopsutil/host"
	"github.com/shirou/gopsutil/load"
	"github.com/shirou/gopsutil/mem"
	"github.com/shirou/gopsutil/net"
	"time"
)

func main() {
	getCpuInfo()
	getCpuLoad()
	fmt.Println("----------")
	getMemInfo()
	fmt.Println("----------")
	getHostInfo()
	fmt.Println("----------")
	getDiskInfo()
	fmt.Println("----------")
	getNetInfo()
}

// cpu信息
func getCpuInfo() {
	cpuNumber, err := cpu.Counts(true)
	if err != nil {
		fmt.Println(err.Error())
	}
	fmt.Println(fmt.Sprintf("CPU核心数: %v", cpuNumber))

	cpuPercent, err := cpu.Percent(time.Second, true)
	if err != nil {
		fmt.Println(err.Error())
	}
	fmt.Println(fmt.Sprintf("CPU使用率: %.1f%%", cpuPercent[0]))
}

// cpu负载
func getCpuLoad() {
	loadInfo, err := load.Avg()
	if err != nil {
		fmt.Println(err.Error())
	}
	fmt.Println(fmt.Sprintf("CPU平均负载: %v", loadInfo))
}

// 内存信息
func getMemInfo() {
	memInfo, err := mem.VirtualMemory()
	if err != nil {
		fmt.Println(err.Error())
	}

	// 总内存(GB)
	memTotal := memInfo.Total / 1024 / 1024 / 1024
	fmt.Println(fmt.Sprintf("总内存: %v GB", memTotal))

	// 已用内存(MB)
	memUsed := memInfo.Used / 1024 / 1024
	fmt.Println(fmt.Sprintf("已用内存: %v MB", memUsed))

	// 可用内存(MB)
	memAva := memInfo.Available / 1024 / 1024
	fmt.Println(fmt.Sprintf("可用内存: %v MB", memAva))

	// 内存使用率
	memUsedPercent := memInfo.UsedPercent
	fmt.Println(fmt.Sprintf("内存使用率: %.1f%%", memUsedPercent))
}

// 主机信息
func getHostInfo() {
	hostInfo, err := host.Info()
	if err != nil {
		fmt.Println(err.Error())
	}
	fmt.Println(fmt.Sprintf("主机名: %v", hostInfo.Hostname))
	fmt.Println(fmt.Sprintf("操作系统: %v", hostInfo.Platform))
}

// 磁盘信息
func getDiskInfo() {
	diskPart, err := disk.Partitions(false)
	if err != nil {
		fmt.Println(err)
	}
	for _, dp := range diskPart {
		fmt.Println(dp)
		diskUsed, _ := disk.Usage(dp.Mountpoint)
		fmt.Println(fmt.Sprintf("分区总大小: %d MB", diskUsed.Total/1024/1024))
		fmt.Println(fmt.Sprintf("分区使用率: %.1f%%", diskUsed.UsedPercent))
		fmt.Println(fmt.Sprintf("分区inode使用率: %.1f%%", diskUsed.InodesUsedPercent))
	}
}

// 网络信息
func getNetInfo() {
	info, _ := net.IOCounters(true)
	for index, v := range info {
		fmt.Println(fmt.Sprintf("%v:%v send:%v recv:%v", index, v, v.BytesSent, v.BytesRecv))
	}
}

输出

CPU核心数: 12
CPU使用率: 4.6%
CPU平均负载: {"load1":0,"load5":0,"load15":0}
----------
总内存: 31 GB
已用内存: 26276 MB
可用内存: 6324 MB
内存使用率: 80.0%
----------
主机名: 无情哈拉少
操作系统: Microsoft Windows 11 Pro
----------
The network path was not found.
{"device":"C:","mountpoint":"C:","fstype":"NTFS","opts":"rw.compress"}
分区总大小: 102412 MB
分区使用率: 90.8%
分区inode使用率: 0.0%
{"device":"D:","mountpoint":"D:","fstype":"NTFS","opts":"rw.compress"}
分区总大小: 186367 MB
分区使用率: 13.4%
分区inode使用率: 0.0%
{"device":"E:","mountpoint":"E:","fstype":"NTFS","opts":"rw.compress"}
分区总大小: 187371 MB
分区使用率: 68.3%
分区inode使用率: 0.0%
{"device":"F:","mountpoint":"F:","fstype":"NTFS","opts":"rw.compress"}
分区总大小: 5723148 MB
分区使用率: 1.9%
分区inode使用率: 0.0%
----------
0:{"name":"以太网","bytesSent":0,"bytesRecv":0,"packetsSent":0,"packetsRecv":0,"errin":0,"errout":0,"dropin":0,"dropout":0,"fifoin":0,"fifoout":0} send:0 recv:0      
1:{"name":"本地连接* 9","bytesSent":0,"bytesRecv":0,"packetsSent":0,"packetsRecv":0,"errin":0,"errout":0,"dropin":0,"dropout":0,"fifoin":0,"fifoout":0} send:0 recv:0 
2:{"name":"本地连接* 10","bytesSent":0,"bytesRecv":0,"packetsSent":0,"packetsRecv":0,"errin":0,"errout":0,"dropin":0,"dropout":0,"fifoin":0,"fifoout":0} send:0 recv:0
3:{"name":"VMware Network Adapter VMnet1","bytesSent":7284264534016,"bytesRecv":94489280512,"packetsSent":81604378624,"packetsRecv":94489280512,"errin":0,"errout":0,"dropin":0,"dropout":0,"fifoin":0,"fifoout":0} send:7284264534016 recv:94489280512
4:{"name":"VMware Network Adapter VMnet8","bytesSent":3704679875739648,"bytesRecv":6736767872925696,"packetsSent":3690893030719488,"packetsRecv":6736505879920640,"errin":0,"errout":0,"dropin":0,"dropout":0,"fifoin":0,"fifoout":0} send:3704679875739648 recv:6736767872925696
5:{"name":"WLAN 2","bytesSent":301329291965104128,"bytesRecv":1938900090278117376,"packetsSent":2245920003457024,"packetsRecv":6078259192135680,"errin":0,"errout":0,"dropin":0,"dropout":0,"fifoin":0,"fifoout":0} send:301329291965104128 recv:1938900090278117376
6:{"name":"Loopback Pseudo-Interface 1","bytesSent":0,"bytesRecv":0,"packetsSent":0,"packetsRecv":0,"errin":0,"errout":0,"dropin":0,"dropout":0,"fifoin":0,"fifoout":0} send:0 recv:0

标签:err,MB,fmt,golang,Sprintf,监控,Println,服务器,使用率
From: https://www.cnblogs.com/qcy-blog/p/17835858.html

相关文章

  • Zabbix监控tomcat
    一、监控原理:Java虚拟机(JVM)具有内置的插装,使您能够使用JMX监视和管理它。您还可以使用JMX监视工具化的应用程序。当Zabbix-Server需要知道java应用程序的某项性能的时候,会启动自身的一个Zabbix-JavaPollers进程去连接Zabbix-JavaGateway请求数据而ZabbixJavagateway收到......
  • Linux 本地AMH 服务器管理面板实现远程访问方法
    AMH是一款基于Linux系统的服务器管理面板,它提供了一系列的功能,包括网站管理、FTP管理、数据库管理、DNS管理、SSL证书管理等。使用AMH云主机面板可以方便地管理服务器,提高工作效率。AMH面板远程访问的好处在于,用户可以通过互联网远程登录到服务器主机面板,方便地管理和维......
  • ABAP 内表转CSV文件推送SAP服务器和SFTP到对方服务器
    1、内表转CSV文件,老ECC个别版本该函数有BUG,I类型字段会dumpDATA:lt_csv_vbak TYPE ztruxs_t_text_data,"ztruxs_t_text_data长度为8192CALLFUNCTION'ZSAP_CONVERT_TO_CSV_FORMAT'TABLESi_tab_sap_data=lt_vbakCHANGINGi_tab_conve......
  • 从一道题来看看golang中的slice作为参数时的现象
    1、题目最近看群友在群里问一道关于golang中slice的题,题目如下:packagemainimport"fmt"funcmain(){ k:=[]int{1,2,3,4} k=append(k,5,6) fmt.Printf("k-->value:%v,add:%p,cap:%d\n",k,k,cap(k)) ap(k) fmt.Printf("k-->value......
  • windows系统使用终端和goland编辑器打包golang程序方法
    上一篇文章说了,windows系统,如何使用goland编辑器打包exe和linux程序,这篇文章再补充一下,使用终端和goland编辑器打包的对比情况。这里的终端可以是,cmd、WindowsPowerShell、MINGw64这里,我使用goland编辑器里面的Terminal,也就是WindowsPowerShelll来操作1、goland编辑器打......
  • SQLSERVER 2016新建订阅,连接发布服务器时报错“设置连接字符串后无法更改或读取属性 P
    被此问题困扰许久,查遍全网也没有查到合适的解决方案。特此记录,希望帮到需要的人。SQLSERVER2016新建订阅,连接发布服务器时报错“设置连接字符串后无法更改或读取属性Password。(Microsoft.SqlServer.ConnectionInfo)”===================================设置连接字符串......
  • 作为一个系统管理员 为防止服务器损坏 我需要提前备份哪些内容
    作为系统管理员,定期备份是维护服务器安全性和可用性的重要步骤之一。以下是一些常见的需要备份的内容:系统配置文件:备份位于/etc目录下的系统配置文件,这些文件包括网络配置、用户配置、服务配置等。常见的配置文件有/etc/network/、/etc/ssh/、/etc/fstab等。tarczvfetc_back......
  • Dread Hunger恐惧饥荒服务器语言与阴谋的狼人杀对决
    DreadHunger恐惧饥荒服务器语言与阴谋的狼人杀对决大家好我是艾西,今天跟大家聊下DreadHunger这一款开放世界冒险,生存与背叛的8人游戏以航海为题材的狼人杀游戏。一场关于生存与背叛为主题的海上狼人杀游戏,八位探险家将乘着船只航行过残酷的北极,而船上有两位叛徒呼唤了黑暗的力量......
  • 【解决方案】危化品厂区安防系统EasyCVR+AI智能监控
    危化品属于危险、易燃易爆、易中毒行类,一旦在生产运输过程中发生泄漏后果不堪想象,所以危化品的生产储存更需要严密、精细的监控,来保障危化品的安全。EasyCVR+TSINGSEE青犀AI智能分析网关搭建的危化品智能监控方案就能很好的为危化品监管保驾护航。EasyCVR+TSINGSEE智能分析网关......
  • 智慧农业设备监控及与预警运维管理系统
    方案背景我国是传统农业大国,具备多种农作物的种植经验,但在智能设备的冲击下,农业的优势在慢慢降低,其根本问题在于效率不高,各生产要素缺乏集中管理与应用,表现为农业数据资源薄弱、缺乏数据标准、设备联网能力差等问题。 目前,物联网远程监控系统逐渐应用到农业生产中,打造智慧灌溉农业......