在CentOS上对Golang应用进行性能监控,可采用以下方式:
-
pprof内置工具
- CPU/内存分析:在Go程序中导入
net/http/pprof包,启动HTTP服务(如http.ListenAndServe(":6060", nil)),通过go tool pprof命令或浏览器访问http://localhost:6060/debug/pprof/获取性能数据,支持生成火焰图、内存分析等。 - 示例代码:
import _ "net/http/pprof" func main() { go func() { log.Println(http.ListenAndServe(":6060", nil)) }() // 业务代码 }
- CPU/内存分析:在Go程序中导入
-
Prometheus+Grafana
- 安装配置:
- 通过
yum安装Prometheus和Grafana,编辑prometheus.yml添加Go应用监控目标(如targets: ['localhost:8080'])。 - 在Go应用中集成
prometheus/client_golang库,暴露/metrics端点。
- 通过
- 可视化:在Grafana中添加Prometheus数据源,创建仪表盘展示请求量、延迟、内存等指标。
- 安装配置:
-
系统级工具
- top/htop:实时监控CPU、内存占用,
htop需通过yum install htop安装。 - vmstat/sar:查看系统整体性能(如CPU使用率、内存交换等),通过
yum install sysstat安装。
- top/htop:实时监控CPU、内存占用,
-
第三方工具
- eBPF:通过无侵入方式监控微服务,需结合工具如ARMS(需参考官方文档)。
- OpenTelemetry:支持全链路追踪,需引入相关库并配置采样策略。
选择建议:
- 需深入分析代码级性能(如CPU热点、内存泄漏):选pprof。
- 需全局监控(如服务吞吐量、网络延迟):选Prometheus+Grafana。
- 简单系统资源监控:选top/htop。