自动化运维落地:Ansible/Prometheus 组合,解放运维 80% 重复工作
手动批量部署百台服务器、凌晨人工巡检硬件状态、故障后逐台排查日志 —— 这些重复且机械的工作,曾占据运维人员 80% 的时间。而 Ansible(自动化执行工具)与 Prometheus(监控告警工具)的组合,能构建 “自动执行 + 实时监控 + 异常自愈” 的运维闭环,将重复工作转化为脚本化、自动化流程,让运维从 “人工操作者” 转型为 “流程设计者”。
一、Ansible:搞定 “执行层” 重复工作,批量操作零门槛
Ansible 以 “无代理(Agentless)” 为核心优势,通过 SSH 协议即可批量管控服务器,无需在目标机器安装客户端,尤其适合解决部署、配置、任务执行类重复工作。
1. 批量部署:从 “逐台安装” 到 “一键执行”
传统部署 Nginx、MySQL 需逐台登录服务器,执行下载、配置、启动命令,耗时且易出错。用 Ansible Playbook(任务脚本)可实现 “一次编写,百台执行”:
yaml
# 部署Nginx的Playbook(nginx-deploy.yml)
– name: 批量部署Nginx
hosts: web_servers # 目标服务器组(在Inventory文件定义)
tasks:
– name: 安装Nginx
yum: name=nginx state=installed # 调用yum模块安装
– name: 复制自定义配置文件
copy: src=./nginx.conf dest=/etc/nginx/nginx.conf # 同步配置文件
– name: 启动Nginx并设置开机自启
service: name=nginx state=started enabled=yes # 管理服务状态
执行命令 ansible-playbook nginx-deploy.yml,即可让 web_servers 组内所有服务器完成 Nginx 部署,100 台机器的操作时间从 2 小时缩短至 5 分钟。
2. 配置管理:避免 “配置漂移”,统一标准
服务器长期运行中,易出现配置文件被修改、参数不一致的 “配置漂移” 问题,人工核对需逐台检查。Ansible 可通过 “状态管控” 确保所有机器配置统一:
用 template 模块生成动态配置(如根据服务器 IP 分配不同 Nginx 端口);
用 lineinfile 模块确保关键配置项不被篡改(如强制 PermitRootLogin no 防止 SSH root 登录)。
每次执行 Playbook,Ansible 会自动比对目标机器配置与脚本定义的 “期望状态”,仅修正不一致部分,无需重复操作。
3. 周期性任务:替代 “定时人工操作”
日志清理、数据备份等周期性任务,无需再设置多台服务器的 crontab。Ansible 可通过 cron 模块统一管理定时任务,例:
yaml
– name: 配置日志清理定时任务
cron:
name: “clean nginx log”
minute: “0”
hour: “3”
job: “rm -rf /var/log/nginx/access.log-*” # 每天凌晨3点清理旧日志
二、Prometheus:打通 “监控层” 自动化,告别人工巡检
Prometheus 擅长实时采集服务器、应用指标,结合 Grafana 可视化与 Alertmanager 告警,可替代人工巡检,实现 “异常自动发现 + 精准告警”,避免运维人员反复查看监控面板。
1. 自动发现目标:无需手动添加监控项
传统监控需手动录入每台服务器 IP,新增机器时需重复配置。Prometheus 支持 “服务发现”(如基于 Kubernetes、Consul),自动识别新增服务器并加入监控:
配置 kubernetes_sd_configs 自动发现 K8s 集群内的 Pod、Node;
用 file_sd_configs 监控静态服务器(只需维护一个 JSON 文件,新增机器时添加 IP 即可)。
运维无需再手动操作监控平台,新机器上线后 1 分钟内即可被纳入监控。
2. 自定义告警:从 “被动救火” 到 “主动预警”
通过 PromQL 定义告警规则,可针对 CPU、内存、业务指标(如接口错误率)设置阈值,例:
yaml
# 磁盘使用率超85%告警规则
groups:
– name: disk_alerts
rules:
– alert: HighDiskUsage
expr: (node_filesystem_used_bytes / node_filesystem_size_bytes) * 100 > 85
for: 5m # 持续5分钟超阈值才告警,避免误报
labels:
severity: P1 # 告警级别
annotations:
summary: “服务器 {{ $labels.instance }} 磁盘使用率过高”
description: “当前使用率 {{ $value | humanizePercentage }}”
Alertmanager 会将告警按级别转发至企业微信、短信(P0 级)或邮件(P1 级),运维无需 24 小时盯屏,仅在异常时接收精准通知。
三、Ansible + Prometheus:构建 “监控 – 执行” 闭环,实现异常自愈
两者的核心价值在于 “联动”——Prometheus 发现异常后,触发 Ansible 自动执行修复操作,无需人工介入,彻底解放重复救火工作。
典型场景:磁盘使用率超阈值自动清理
Prometheus 监控到 HighDiskUsage 告警,通过 Webhook 将告警信息发送至中间服务(如自定义 Python 脚本);
中间服务解析告警中的服务器 IP 与磁盘路径,调用 Ansible API 执行清理脚本:
python
# 调用Ansible清理日志的示例代码
from ansible_runner import run
run(
private_data_dir=’/tmp’,
inventory=f”{alert_ip},”, # 目标服务器IP
playbook=’/opt/playbooks/clean-disk.yml’ # 清理磁盘的Playbook
)
Ansible 登录目标服务器,删除过期日志文件,磁盘使用率恢复正常后,Prometheus 自动清除告警。
类似地,“内存泄漏导致进程崩溃”“Nginx 服务挂掉” 等场景,均可通过 “监控告警 – 自动执行” 闭环解决,运维人员无需再凌晨处理这类重复故障。
结语
Ansible 与 Prometheus 的组合,并非简单的 “工具叠加”,而是从 “执行” 到 “监控” 的运维全流程自动化重构。落地后,批量部署、配置核对、日志清理、异常修复等 80% 的重复工作将由工具完成,运维人员可聚焦于 “优化运维流程”“设计自动化脚本”“提升系统稳定性” 等更高价值的工作 —— 这正是自动化运维的核心目标:让工具替代人工,让运维更高效。
原创文章,作者:网站编辑,如若转载,请注明出处:https://devcn.xin/5749.html