linux

Golang如何助力Linux系统自动化运维

小樊
48
2025-12-14 09:07:25
栏目: 编程语言

Golang在Linux自动化运维中的优势与落地路径

一、为什么选择Golang

二、典型场景与代码级落地

三、工程化与运维实践

四、与生态工具的集成

五、最小示例 资源监控与阈值告警

package main

import (
	"fmt"
	"log"
	"time"

	"github.com/shirou/gopsutil/v3/cpu"
	"github.com/shirou/gopsutil/v3/disk"
	"github.com/shirou/gopsutil/v3/mem"
	"github.com/shirou/gopsutil/v3/net"
)

var (
	cpuThreshold   = 80.0
	memThreshold   = 80.0
	diskThreshold = 80.0
	conThreshold   = 200
)

func monitor() {
	for {
		cpuPct, _ := cpu.Percent(0, false)
		memStat, _ := mem.VirtualMemory()
		diskStat, _ := disk.Usage("/")
		netStat, _ := net.IOCounters(false)
		tcpEst := int64(0)
		if len(netStat) > 0 {
			tcpEst = netStat[0].TCPEstablished
		}

		if cpuPct[0] > cpuThreshold {
			log.Printf("[WARN] CPU使用率过高: %.2f%%", cpuPct[0])
		}
		if memStat.UsedPercent > memThreshold {
			log.Printf("[WARN] 内存使用率过高: %.2f%%", memStat.UsedPercent)
		}
		if diskStat.UsedPercent > diskThreshold {
			log.Printf("[WARN] 根分区使用率过高: %.2f%%", diskStat.UsedPercent)
		}
		if tcpEst > conThreshold {
			log.Printf("[WARN] 已建立TCP连接数过高: %d", tcpEst)
		}

		time.Sleep(10 * time.Second)
	}
}

func main() {
	monitor()
}

0
看了该问题的人还看了