
本文详解在 aws ec2 实例(运行 hbase)上安装 scollector 的两种可靠方式:解决 go 1.6+ 编译依赖导致的“segmentation fault”问题,以及安全、快捷的 linux 二进制部署流程。
本文详解在 aws ec2 实例(运行 hbase)上安装 scollector 的两种可靠方式:解决 go 1.6+ 编译依赖导致的“segmentation fault”问题,以及安全、快捷的 linux 二进制部署流程。
scollector 是 Bosun 监控生态中的核心数据采集器,常用于向 HBase 等后端上报系统指标。但在较旧环境(如默认安装的 Go 1.5 或更低版本)中执行 go get bosun.org/cmd/scollector 时,极易触发 Segmentation fault (core dumped) —— 这并非代码缺陷,而是因 Bosun 项目自 v0.6.0 起明确要求 Go 1.6 或更高版本(需支持更严格的内存模型与工具链),低版本 Go 在构建其依赖(如 golang.org/x/net/context 等)时会发生运行时崩溃。
✅ 推荐首选方案:使用预编译二进制(无需 Go 环境)
Bosun 官方提供经过 CI 验证的静态链接 Linux 二进制(如 scollector-linux-amd64),适用于绝大多数 x86_64 EC2 实例(Amazon Linux、Ubuntu、CentOS 均兼容):
-
下载并上传:从 Bosun Releases 页面 下载最新版
scollector-linux-amd64(注意选择scollector而非bosun主程序),通过scp或 S3 上传至 EC2 实例(例如/tmp/目录)。 -
设置可执行权限并验证:
chmod +x /tmp/scollector-linux-amd64 ./tmp/scollector-linux-amd64 -version # 输出示例:scollector version 0.10.0 (commit: xxxxx)
-
部署到标准路径并配置开机启动(可选):
sudo mv /tmp/scollector-linux-amd64 /usr/local/bin/scollector sudo chown root:root /usr/local/bin/scollector # 创建 systemd 服务(/etc/systemd/system/scollector.service): [Unit] Description=scollector agent After=network.target
[Service] Type=simple User=ec2-user ExecStart=/usr/local/bin/scollector -hbase https://www.php.cn/link/565535a99bc58e7f368760b6501461e6 -http :8080 Restart=on-failure RestartSec=10
[Install] WantedBy=multi-user.target
随后启用服务:`sudo systemctl daemon-reload && sudo systemctl enable --now scollector` ⚠️ 若坚持源码编译,请严格满足以下前提: - 升级 Go 至 **1.6+**(推荐 1.19+ LTS): ```bash # 卸载旧版(如适用) sudo rm -rf /usr/local/go # 下载新版(以 1.19.13 为例) wget https://go.dev/dl/go1.19.13.linux-amd64.tar.gz sudo tar -C /usr/local -xzf go1.19.13.linux-amd64.tar.gz export PATH=/usr/local/go/bin:$PATH go version # 确认输出 >= go1.16
- 再执行构建命令(注意:需确保 GOPROXY 可用,国内建议配置):
export GOPROXY=https://proxy.golang.org,direct go install bosun.org/cmd/scollector@latest # 生成的二进制位于 $GOPATH/bin/scollector(通常为 ~/go/bin/)
? 总结:对于生产环境 EC2 实例,优先采用官方二进制部署——零编译依赖、秒级启动、版本可控;仅当需定制修改源码或调试时,才升级 Go 并启用 go install。无论哪种方式,均建议配合 systemd 管理进程,并通过 -hbase 参数准确指向您的 HBase REST API 地址(如 http://)。










