用了一个月不装 Agent 的开源运维平台,记个流水账
前阵子换了家公司,接手运维八台服务器。交接文档约等于没有,前任留下的就是一个 Excel 表——IP、密码、跑了什么服务,有些还是过期的。
我以前用 Ansible 管过一段时间,但这家公司的机器跨了两个云厂商,而且有两台是托管在客户机房的物理机,客户不让装 Agent 类的东西。Ansible 倒是不需要 Agent(走 SSH),但光 playbook 的维护成本就够喝一壶了,而且团队里只有我会写 YAML,真出事了别人接不了。
想找个简单点的工具,翻了一圈 GitHub 找到一个开源的运维平台。不装 Agent,装好后通过 SSH 连接目标机器,Web 界面操作。试了一个月,把踩的坑和实际感受记一下。
部署
Docker 部署,照着文档跑了两条命令就起来了,这步没啥好说的。加主机的时候需要填 SSH 连接信息(IP、端口、用户名、密码或密钥),填完测试连接,通了就行。八台机器大概十分钟录完。
第一个坑:批量执行的输出
上手第一件事是批量看一下各台机器的磁盘状况。选了 8 台主机,执行 df -h。结果出来了,每台单独一个输出框,能看到哪台成功哪台失败。
比以前 for 循环 SSH 好的地方在于:不用等前一台执行完才跑下一台,而且某台连接失败不会把整个流程卡住。
但第一个坑也来了:有一台机器的 SSH 端口不是 22,我录主机信息的时候没注意写错了。平台报错信息不太明确,我排查了十来分钟才发现是端口的问题。这个算是自己的锅,但错误提示确实可以更友好一些。
日常用得最多的:在线终端
实话说,这个月用得最多的功能就是 Web 终端。点一下主机名就能开一个终端窗口,不用再打开本地的 iTerm 挨个连。
有一天晚上在外面吃饭,收到告警说有台机器 CPU 飙高。掏出手机打开浏览器,Web 终端登上去一看,是一个定时任务卡死了,kill 掉就好了。要是以前得回家开电脑连 VPN,这个场景确实方便。
不过 Web 终端的体验跟原生 SSH 客户端还是有差距,比如偶尔会有延迟,vim 操作不太跟手。日常看个日志、跑个命令没问题,长时间编辑文件我还是会切回 iTerm。
发版:够用但不算惊艳
我接手的一个 Java 项目之前是纯手工发版的——登上去、git pull、mvn package、重启。把这个流程配到平台的"应用发布"里,拆成了几个步骤,配了一次之后每次发版在页面上点一下就行。
两个好处:一是有发布记录,谁在什么时间发了什么版本能查到;二是回滚方便,选上一个版本重新发就行。
不足的地方:发布流程比较线性,没有灰度发布、没有审批流、没有和 CI 打通。对于我这个规模够用了,但稍微正式一点的团队可能会觉得简陋。
任务计划
把几个定时脚本挪到了平台的"任务计划"里。以前是每台机器各自写 crontab,散在各处,有时候这台改了那台忘了。集中到一个地方管理确实清爽不少,而且执行结果有日志,不用再去机器上翻 cron 的邮件了。
一个月后的不满
该吐槽的也得吐槽。
日志查看是最大的短板。 平台不采集应用日志。每次排查问题还是得开终端去机器上 tail 日志。我知道这不是一个轻量运维工具该干的事,但用了平台之后反而更觉得这块缺了。
监控只覆盖基础指标。 CPU、内存、磁盘、端口探活这些有,但没有业务层面的监控。我想看某个接口的响应时间、某个消费者的堆积量,做不到。不过平心而论,要做到这些就不是一个运维平台的事了。
没有权限管理的精细度。 只有管理员和普通用户两种角色。我想给开发开一个只读权限——能看主机状态但不能执行命令——做不到。
文件传输没有进度条。 往服务器上传一个 200M 的包,页面上看不到进度,只能等。传完了也没有 MD5 校验提示。
最后
一个月用下来的总结:这个平台解决的是"不想在每台机器上装 Agent,但又想有个统一界面管理服务器"的问题。批量执行、Web 终端、应用发布这几个核心功能确实够用,日常运维的效率比纯 SSH 高了一截。
但它不是万能的。日志、APM、细粒度权限这些不在它的能力范围内。把它当成一个轻量级的运维中控台,期望值放对了,体验就不会差。
开源项目,感兴趣的可以看看:https://github.com/openspug/spug

浙公网安备 33010602011771号