很多使用阿里云ECS服务器的朋友可能都遇到过这样的情况:明明没有运行什么大型应用,但服务器的CPU和内存占用总是居高不下。这种情况我遇到过不止一次,后来通过排查发现,阿里云默认安装的云监控(Cloudmonitor)和云盾(安骑士)服务占用了不少系统资源。
对于追求系统纯净度和性能极致的运维人员来说,这些预装服务可能并不是必需的。特别是当我们需要对服务器进行深度优化时,手动卸载这些服务就显得尤为重要。我最近接手的一个项目就遇到了这个问题,客户要求最大限度地释放服务器资源,这时候彻底清理这些服务就成为了必要操作。
需要注意的是,卸载这些服务意味着你将失去阿里云提供的一些安全防护和监控功能。所以在操作前,一定要评估自己的业务需求。如果你需要这些安全功能,建议保留;如果你有自建监控系统或第三方替代方案,那么卸载它们可以释放宝贵的系统资源。
在开始卸载前,我们需要先确认服务器的架构类型。这个步骤很关键,因为不同架构对应的卸载命令可能不同。你可以通过以下命令查看:
bash复制uname -m
常见的输出结果有x86_64(对应amd64)或i386/i686(对应386)。记下这个结果,后面卸载云监控时会用到。
虽然卸载过程一般不会影响用户数据,但出于谨慎考虑,我强烈建议先做好备份。特别是如果你在服务器上运行着重要业务,备份更是必不可少。你可以使用阿里云提供的快照功能,或者手动备份关键配置文件。
在卸载前,我们先确认这些服务是否正在运行:
bash复制ps aux | grep -E 'cloudmonitor|aegis'
这个命令会列出所有包含cloudmonitor或aegis的进程。如果看到相关进程在运行,说明这些服务确实处于活动状态。
阿里云的云监控服务有两个版本:Java版和Go语言版。我们需要先确定服务器上安装的是哪个版本。执行以下命令查看:
bash复制ls /usr/local/cloudmonitor/
如果你看到类似CmsGoAgent.linux-amd64这样的文件,说明是Go版本;如果看到wrapper目录,则说明是Java版本。
对于Go语言版本,按照以下步骤操作:
bash复制# 停止服务
/usr/local/cloudmonitor/CmsGoAgent.linux-${ARCH} stop
# 从系统服务中移除
/usr/local/cloudmonitor/CmsGoAgent.linux-${ARCH} uninstall
# 删除安装目录
rm -rf /usr/local/cloudmonitor
注意要将${ARCH}替换为你之前查到的架构类型,比如amd64或386。如果你不确定,可以直接查看/usr/local/cloudmonitor/目录下文件的实际名称。
如果是Java版本,使用以下命令:
bash复制# 停止服务
/usr/local/cloudmonitor/wrapper/bin/cloudmonitor.sh stop
# 卸载服务
/usr/local/cloudmonitor/wrapper/bin/cloudmonitor.sh remove
# 删除安装目录
rm -rf /usr/local/cloudmonitor
卸载完成后,建议再次运行ps aux | grep cloudmonitor确认没有相关进程。同时检查/usr/local/目录下是否还有cloudmonitor残留。
云盾(安骑士)的卸载稍微复杂一些。阿里云官方没有直接提供卸载文档,但我们可以使用他们提供的卸载脚本:
bash复制# 下载并执行第一个卸载脚本
wget http://update.aegis.aliyun.com/download/uninstall.sh
chmod +x uninstall.sh
./uninstall.sh
# 下载并执行第二个卸载脚本
wget http://update.aegis.aliyun.com/download/quartz_uninstall.sh
chmod +x quartz_uninstall.sh
./quartz_uninstall.sh
脚本运行后,可能还会有一些残留文件需要手动删除:
bash复制sudo rm -rf /usr/local/aegis
sudo rm -f /usr/sbin/aliyun-service
sudo rm -f /lib/systemd/system/aliyun.service
如果提示文件不存在,可以忽略相应错误。
运行以下命令确认卸载是否彻底:
bash复制ps aux | grep aegis
ls -la /usr/local/aegis
如果没有任何输出,说明卸载成功。
卸载完成后,建议清理一下系统日志,因为这些服务可能留下了大量日志文件:
bash复制journalctl --vacuum-time=1d
这个命令会清理一天前的所有系统日志。
云监控和云盾可能会安装一些定时任务,我们需要检查并清理:
bash复制crontab -l
查看输出中是否有与cloudmonitor或aegis相关的条目,如果有,使用crontab -e编辑删除。
卸载完成后,建议持续观察系统资源使用情况:
bash复制top
htop
free -m
通过这些工具,你可以直观地看到CPU、内存等资源的变化情况。
有些用户反馈卸载后服务会自动恢复。这通常是因为阿里云的自动化运维系统会定期检查并重新安装这些服务。要彻底解决这个问题,可以考虑:
需要注意的是,卸载这些服务后,阿里云控制台中的部分功能可能会受到影响,比如安全告警、性能监控等。如果你需要这些功能,可以考虑使用第三方替代方案,或者选择性保留某些服务组件。
如果遇到卸载脚本无法下载的情况,可以尝试以下方法:
如果你卸载了阿里云的监控和安全服务,建议考虑以下替代方案来保证服务器的安全和可观测性:
这些开源方案虽然需要一定的学习成本,但可以提供更灵活、更可控的服务环境。我在多个项目中使用过这些组合,效果都非常不错。