今天来跟大家伙儿聊聊 Go agent 这个东西,之前搞项目的时候,需要对 Go 写的程序做些监控,就琢磨上这玩意儿。
一开始也是两眼一抹黑,不知道从哪下手。后来就开始到处查资料,看人家怎么搞的。看到一些个什么 SkyWalking Go Agent, 还有什么阿里云的 Agent,感觉挺高大上的。
折腾的开始
想着先试试 SkyWalking 的,毕竟名气大些。就照着人家说的,要把这个 Agent 编译到咱们要监控的 Go 程序里头。说白,就是在编译的时候动点手脚,插点“眼线”进去。
然后又看到一个叫 GoAgent 的东西,说是能帮你隐藏 IP 地址,还能帮你绕过一些限制,甚至还能拍照翻译。我心想这功能还挺全乎,不过我这回主要还是想搞监控,拍照翻译啥的,以后再说。
遇到点麻烦
看到有人说,这 Go Agent 在编译的时候,会分析和修改你的代码,加进去一些监控代码。然后,这些改过的东西会被放到一个 .a 文件里。听着有点绕,不过大概意思就是,它会“改造”你的程序。
后来又看到阿里云的那个,说啥要用 wget 下载一个 inst go-linux-amd64 的东西,还要 chmod +x 啥的。我这 linux 用的也不溜,看到这一堆命令就头疼。不过为搞定监控,还是硬着头皮上。
继续摸索
看到有资料提到什么“可观测性”,说是基于啥指标、日志、链路追踪、持续剖析这四大支柱。从宏观到微观,通过数据之间的关联,搞出数据监控、问题分析、系统诊断等等。 听着挺厉害的,不过我当时就想,先把最基本的监控跑起来再说。
总算是把这 Go agent 给折腾出来。虽然过程有点曲折,但好歹是实现。以后再遇到类似的需求,起码知道该怎么下手。这回的经验也告诉我,遇到问题别慌,多查资料,多动手试试,总能找到解决办法的。
这回就先分享到这儿,下次有啥好玩的东西再跟大家唠唠。