发布于2026-07-03 阅读(0)
扫一扫,手机访问
要在Debian系统上用Golang日志来监控性能,其实流程并不复杂。下面我们来一步步拆解,把几个关键环节搞定。

确保你的Debian已经安装了Golang和日志库logrus。如果没有,两条命令就能搞定:
sudo apt-get update
sudo apt-get install golang
go get github.com/sirupsen/logrus
注意,go get之前要先确认$GOPATH已经设好,不然库下载了也没法直接引用。
新建一个main.go,把下面的代码贴进去。这个程序每5秒采集一次内存、文件句柄和goroutine数量,并以JSON格式输出日志:
package main
import (
"fmt"
"os"
"runtime"
"time"
"github.com/sirupsen/logrus"
)
func main() {
logrus.SetFormatter(&logrus.JSONFormatter{})
logrus.SetOutput(os.Stdout)
for {
var m runtime.MemStats
runtime.ReadMemStats(&m)
logrus.WithFields(logrus.Fields{
"alloc": m.Alloc,
"total_alloc": m.TotalAlloc,
"sys": m.Sys,
"num_gc": m.NumGC,
}).Info("Memory usage")
logrus.WithFields(logrus.Fields{
"open_files": runtime.NumOpenFiles(),
}).Info("Open files")
logrus.WithFields(logrus.Fields{
"goroutines": runtime.NumGoroutine(),
}).Info("Goroutines")
time.Sleep(5 * time.Second)
}
}
这段代码很简单:用runtime包获取系统状态,然后用logrus的WithFields把数据打出来。JSON格式的好处是之后解析非常方便。
终端里直接运行:
go run main.go
如果一切正常,你会看到标准输出里每隔5秒刷出一条JSON日志。这就说明监控已经在工作了。
终端的输出来得快也去得快,最好重定向到文件里:
go run main.go > logs.json
然后就能用grep、awk或者更专业的工具(比如ELK Stack、Graylog)来分析了。比如想看内存分配趋势:
grep "Memory usage" logs.json | jq '.alloc'
当然,如果数据集很大,还是建议上正经的日志分析平台,直接用命令行翻文件效率不高。
如果觉得只监控内存和goroutine不够,可以引入github.com/shirou/gopsutil这个库。它把CPU、磁盘I/O、网络流量、进程列表等信息都封装好了,调用起来非常顺手。把采集到的数据再通过logrus写入同一个日志流,就能得到一个相对全面的系统性能快照。
举个例子,加上CPU使用率:
cpuPercent, _ := cpu.Percent(time.Second, false)
logrus.WithFields(logrus.Fields{"cpu_percent": cpuPercent}).Info("CPU usage")
这样一来,日志里就包含了内存、文件句柄、goroutine以及CPU占用,基本覆盖了日常监控的核心维度。
整套方案轻量、可扩展,而且因为是Golang写的,部署和修改都很方便。如果你手头有现成的日志管道(比如Filebeat → Logstash → Elasticsearch),直接把输出的JSON文件喂进去就行,几乎不需要额外适配。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8