在 CentOS 上监控 Go 应用性能
一 系统级监控
- 资源与进程
- 使用 top/htop 实时查看 CPU、内存 占用;安装:yum install -y htop。
- 使用 vmstat、sar、iostat、free 查看 系统整体、磁盘 IO、内存 情况;安装:yum install -y sysstat。
- 使用 netstat/ss 检查 端口与连接 状态,例如:ss -tuln | grep :8080。
- 服务与日志
- 以 systemd 管理应用:sudo systemctl status your-service-name。
- 查看日志:sudo journalctl -u your-service-name -f(实时跟踪)。
- 可视化系统指标
- 使用 InfluxDB + collectd + Grafana 搭建系统级监控与可视化。
二 Go 应用内置 pprof 分析
-
Web 服务接入
- 导入包:import _ “net/http/pprof”,并在程序中启动 HTTP 服务,例如:go func(){ http.ListenAndServe(“localhost:6060”, nil) }()。
- 浏览器或命令行获取分析数据:访问 http://localhost:6060/debug/pprof/;使用 go tool pprof 分析,例如:go tool pprof http://localhost:6060/debug/pprof/profile(30s CPU)、go tool pprof http://localhost:6060/debug/pprof/heap(内存)、go tool pprof http://localhost:6060/debug/pprof/goroutine(协程)。
-
非 Web/命令行程序
- 使用 runtime/pprof:启动时开启 CPU 分析并写入文件,例如:
- var cpuprofile = flag.String(“cpuprofile”, “”, “write cpu profile to file”)
- if *cpuprofile != “” { f, _ := os.Create(*cpuprofile); pprof.StartCPUProfile(f); defer pprof.StopCPUProfile() }
- 生成文件后用 go tool pprof 分析:go tool pprof yourbinary your.prof。
-
可视化
- 在 pprof 交互界面使用 top、web 等命令查看热点与调用图;生成图形需安装 Graphviz。
三 Prometheus + Grafana 指标监控
- 在 Go 应用中暴露 /metrics
- 使用 prometheus/client_golang:
- import (“github.com/prometheus/client_golang/prometheus/promhttp”; “net/http”)
- http.Handle(“/metrics”, promhttp.Handler())
- http.ListenAndServe(“:8080”, nil)
- 部署与配置
- 安装 Prometheus 与 Grafana(如 yum 安装 Grafana 组件)。
- 在 prometheus.yml 添加抓取任务:
- scrape_configs:
- job_name: ‘go_app’
static_configs:
- targets: [‘localhost:8080’]
- 可视化
- Grafana 添加 Prometheus 数据源,导入或创建 Go 应用仪表盘(关注 请求量、延迟、错误率、内存/GC 等)。
四 日志与链路追踪
-
结构化日志
- 使用 logrus/zap 输出 JSON 日志,便于检索与聚合;可结合 ELK/EFK 或 Logstash 做集中化日志分析。
-
分布式追踪与无侵入观测
- 引入 OpenTelemetry 实现 全链路追踪 与指标采集(按需配置采样)。
- 使用 eBPF 工具进行 无侵入 的性能观测与网络分析(结合相应工具链)。
五 快速落地清单
- 运行方式:优先以 systemd 托管 Go 程序,便于 status/logs/restart 管理。
- 即刻可用:开启 pprof 的 /debug/pprof/,在问题发生时抓取 CPU/Heap/Goroutine 快照进行分析。
- 持续观测:为线上服务暴露 /metrics,用 Prometheus + Grafana 做 时延、QPS、错误率、内存/GC 趋势监控与告警。
- 系统视角:用 top/htop、vmstat、sar、iostat、free、ss 排查 资源瓶颈与连接异常,与应用指标交叉验证。