兄弟们,最近跟几个小公司的运维朋友聊天,大家共同的痛就是:人少活多,服务器还不少。你说就俩人,要管几十台甚至上百台服务器,每天光手动巡检一遍就得半天,更别提半夜被报警电话吵醒了。今天就跟大家聊聊我们怎么用两个开源工具——Ansible 和 Prometheus,把自动巡检和告警给安排明白的。
为啥选这俩?
先说背景:我们公司也是典型的“运维光杆司令”配置,就我和另一个兄弟。之前是用 shell 脚本循环 ssh 去查,但脚本写多了发现几个问题:
- 服务器一多,脚本执行得慢,还容易卡住
- 新加一台机器要改好几个地方
- 告警全靠自己写 crontab 判断,最后微信被刷屏
后来我琢磨,就得找两个能搭伙干活的工具:一个负责批量下发命令,一个负责7×24小时盯着数据。Ansible 就是那个发号施令的班长,Prometheus 就是那个不睡觉的监控员。
先说说 Ansible 怎么搞定批量巡检
Ansible 这东西其实不复杂,你可以把它想象成一个拿着对讲机的班长。你只要写一份“口令本”(Playbook),它就能对着一群机器同时喊话。关键是它不需要在每台机器上装客户端,走 SSH 就行,这对小公司太友好了。
我们平时巡检主要看三件事:磁盘空间、关键进程、系统日志有没有报错。以前手动一台台登,现在写一个 Ansible Playbook 长这样:
- name: 日常巡检
hosts: all
tasks:
- name: 检查磁盘使用率
shell: df -h | awk '{if(NR>1 && $5+0 > 80) print $1"使用率"$5}'
register: disk_result
- name: 如果发现磁盘超80%就打印告警
debug:
msg: "磁盘告警: {{ disk_result.stdout_lines }}"
when: disk_result.stdout_lines | length > 0
这个剧本一跑,所有服务器里磁盘使用率超过80%的都会列出来。我俩只要每天定时跑一次(比如早上九点),看一眼结果就行。
举个真实场景:有次客户反馈网站慢,我们推了 Ansible 的巡检任务,发现有一台数据库服务器的磁盘空间快满了,日志文件占了几十个 G。原来是谁把 debug 日志开关没关。手动清一下就解决了。要没这个批量巡检,等我们发现的时候估计服务都挂了。
Prometheus 负责 24 小时盯梢
Ansible 是“主动查”,但总不能半夜两点爬起来跑剧本吧?这时候 Prometheus 就派上用场了。它就像一个不睡觉的哨兵,每分钟去每台服务器上抓一次数据(CPU、内存、磁盘、网络),然后根据你定的规则报警。
我们把它跟 Ansible 做了一个简单配合:用 Ansible 来批量部署 Prometheus 的客户端(node_exporter)。写个剧本,一行命令:
- name: 部署node_exporter
hosts: all
tasks:
- name: 复制安装包
copy: src=node_exporter.tar.gz dest=/tmp/
- name: 解压并启动
shell: tar -xzf /tmp/node_exporter.tar.gz -C /opt/ && /opt/node_exporter &
部署一次,以后每台机器的指标就自动上报了。我们在 Prometheus 里配个告警规则,比如:
- alert: 磁盘快满了
expr: disk_free_ratio < 0.1
for: 5m
annotations:
summary: "{{ $labels.instance }} 磁盘只剩下不到10%了!"
这样一旦哪台机器磁盘低于10%,Prometheus 就会通过 Alertmanager 发邮件、钉钉或者飞书消息。我们俩再也不用半夜爬起来看告警了——只有真正出问题才会被叫醒。
两个人怎么分工?
我们实际操作下来,俩人的分工是这样的:
- 一人负责维护 Ansible 的 Playbook(就是那个“口令本”),新服务器上线,直接把这个本子跑一遍,就能装好监控、配好规则。
- 另一人负责调 Prometheus 的告警阈值,避免“狼来了”式的误报。比如磁盘告警,刚开始我们设90%,结果天天告警,后来改成95%才合理。
关键点:Ansible 负责“一次性批量操作”,Prometheus 负责“持续性监控”。它俩分工明确,而且都是开源、免费、社区活跃,小公司完全玩得起。
给你算笔账
以前手动巡检50台服务器,一个人大概要花两个小时(登录、敲命令、看结果、记笔记)。现在用 Ansible 跑一遍,两分钟搞定。告警方面,以前靠人肉盯监控屏,现在 Prometheus 比我们勤快多了。两个人能管住几百台服务器,而且还有时间琢磨怎么优化架构——这才是运维该干的事嘛。
当然,每个公司的场景不一样,我们这只是搭建了一套最基本的巡检告警体系。如果你们还要监控数据库、中间件、或者做可视化大屏,还有更完整的搭配方案。更多思路和现成的配置文件,可以看这个网站:itfangan.com,上面有很多实战过的模板,直接拿来改改就能用。
希望这篇分享能给你一点启发。人少不怕,工具选对,效率翻倍。下次咱再聊聊怎么用 ELK 统一管理日志,那又是另一个故事了。