建立Prometheus系列调试环境 | Golang远程调试配置指南
建立prometheus系列的调试环境
因为prometheus系列的软件基本都是golang写的,本文基本就是一个golang程序的调试说明。
我们推荐采用本地交叉编译,然后在window上直接远程调试linux上的Golang程序的方式。如果直接安装有Linux系统桌面,可以直接在linux上本地启动编译调试;
或者使用VsCode直接远程调试。
因为笔者还是希望在Windows上分析代码,方便截图编辑等操作,所以采用远程调试的方式。
1. Golang准备工作
安装Golang,最好是最新的版本,不要系统自带的apt 安装,版本一般不是很新;prometheus系列的依赖的golang版本很高;Golang的安装比较简单,直接下载安装包安装即可。
全局安装:
rm -rf /usr/local/go && tar -C /usr/local -xzf go1.25.1.linux-amd64.tar.gz
添加Golang的bin程序到全局Path里,编辑 /etc/profile
export PATH=$PATH:/usr/local/go/bin
然后source /etc/profile
使其生效。
如果机器是共享的,没root,安装到自己的home下。
配置依赖包下载加速
go env -w GOPROXY=https://goproxy.cn,direct
go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/,direct
2.安装调试器
go install github.com/go-delve/delve/cmd/dlv@latest
这一步一般没问题,如果自己的golang版本很低,可能会有提示,达不到最低版本。
设置调试器的Path路径,编辑 ~/.profile
追加调试器的path , 我这里的账号是ctbots,按照自己的账号自己改
export PATH=$PATH:/home/ctbots/go/bin
然后 source ~/.profile
使其生效。
3.开始交叉编译
这里以 交叉编译NodeExporter为例,在本地电脑上(Windows),项目的根目录,执行
SET GOOS=linux
SET GOARCH=amd64
go build -gcflags="-N -l" -o debug_node node_exporter.go
稍等即可打包出 debug_node
4.远程调试
上传 debug_node 到linux服务器上,chmod +x debug_node
然后使用调试器加载:
dlv --listen=:2345 --headless=true --api-version=2 exec ./debug_node
笔者使用的GoLand的IDE,配置远程调试(Go Remote)的调试配置,配置Linux的ip和端口,即可调试。
在未连接调试前,Node Exporter 程序会一直挂起。
5.观测监控数据
在浏览器上访问 http://linux服务器ip:9100/metrics 即可看到监控数据。
可以配合远程调试进行观测,这里推荐prometheus自带的 数据转换器,可以把prometheus的数据转化为表格,方便查看和推理。