温馨提示×

Go语言在CentOS上如何进行性能监控

小樊
32
2025-12-27 05:23:19
栏目: 编程语言

在 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)
  • 部署与配置
    • 安装 PrometheusGrafana(如 yum 安装 Grafana 组件)。
    • prometheus.yml 添加抓取任务:
      • scrape_configs:
        • job_name: ‘go_app’ static_configs:
          • targets: [‘localhost:8080’]
  • 可视化
    • Grafana 添加 Prometheus 数据源,导入或创建 Go 应用仪表盘(关注 请求量、延迟、错误率、内存/GC 等)。

四 日志与链路追踪

  • 结构化日志

    • 使用 logrus/zap 输出 JSON 日志,便于检索与聚合;可结合 ELK/EFKLogstash 做集中化日志分析。
  • 分布式追踪与无侵入观测

    • 引入 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 排查 资源瓶颈与连接异常,与应用指标交叉验证。

0