用AI写每日自动巡检脚本:进程活着不等于服务正常
背景
站点原来每天靠我手动登服务器做巡检:看服务在不在、翻日志找异常、手动记结果。连续几天都有人忘跑,偶尔一次忘了结果就漏一天。后来我下决心把这套流程自动化,用一条cron每天早上固定时间跑,脚本自己检查、自己判断、把结果固定格式汇报给我。这套脚本大半是AI帮我写的,今天复盘一下踩过的两个最实际的坑,都是不真正跑起来根本想不到的。
怎么做
动手前我先花了十几分钟把需求写清楚,不带一点含糊:要巡检哪几个服务、日志文件的绝对路径、要抓的异常关键字、还有结果用什么格式汇报。然后让AI按这个需求生成脚本。关键一步是我没让它一把梭全写完,而是先定了一个"契约":输入是配置文件,输出是固定格式的汇报文本。这样后面新增检查项,只改配置文件、不动逻辑。巡检项从最开始三个慢慢加到了七个,脚本主体一行没动。
踩到的坑
第一个坑是换行排版。脚本最早直接拼一段长文本当输出,发到网页上看全挤成一整行,根本没法读。后来才意识到,程序生成的文本不会自动帮你分段,空行、缩进都得在代码里明确写出来,否则到任何展示端都难看。这看着是小事,排查却花了我快一个钟头。
第二个坑才是真坑:状态判断。我最初让脚本"检查服务是否正常",它只判断了进程在不在。结果有个服务的进程明明活着,接口却已经完全卡死,请求一直超时。进程在,不等于服务正常。后来我加了真实的健康检查请求,看成败和响应耗时,两项都达标才算通过,从此再没误报过。
关键结论
可复用的方法有三条。第一,先定好输入输出的"契约"再让AI写实现,别让它自由发挥。第二,自动化里任何"正常"的判断,都要落到一个能被实际验证的具体指标上,不能靠进程存活这种表面信号。第三,程序生成的文本必须显式处理换行分段。这套脚本跑了近一周,每天早上稳定在固定时间出结果,我再没手动干预过,少了一整类日常杂事。