ARMS Go监控的自定义扩展功能通过规则+代码注入的方式,可以在不修改原始代码的情况下实现多种功能:
1. 日志打印:
- 打印SQL请求语句和参数
- 记录HTTP请求的Header和Body
- 记录函数出入参数
配置示例(SQL打印):
[{
"ImportPath": "database/sql",
"Function": "Query",
"ReceiverType": "*DB",
"OnEnter": "sqlQueryOnEnter",
"Path": "/path/to/hook"
}]
2. 记录自定义Span:
- 在业务函数中创建自定义Span
- 添加自定义属性(Attributes)
- 扩展链路追踪的覆盖范围
3. 流量回放:
- 录制生产环境HTTP请求
- 记录请求Header和Body
- 用于开发和测试阶段回归验证
使用步骤:
- 创建hook文件夹,编写注入代码
- 创建Demo项目,编写测试代码
- 编写conf.json配置规则
- 执行
instgo set --rule=./conf.json - 使用
instgo go build编译运行
这种机制的优势在于非项目开发人员也能在不修改原始代码的情况下实现功能扩展。