温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎样用Ansible监控服务器

发布时间:2026-09-21 05:41:53 来源:亿速云 阅读:89 作者:小樊 栏目:系统运维

下面从**“用 Ansible 做监控”的常见方式到具体实现示例给你一个系统性的说明。Ansible 本身不是专业监控系统,但非常适合轻量级巡检、状态采集、告警触发**。


一、Ansible 在监控中的定位

Ansible 不适合做:

  • 实时指标采集(如 CPU 每秒变化)
  • 长期数据存储(如 Prometheus 那样)

Ansible 适合做:

  • 定时巡检(cron + playbook)
  • 配置合规性检查
  • 服务/端口/进程是否存在
  • 磁盘、内存、负载阈值告警
  • 发现异常后触发通知(邮件、Webhook)

二、常见监控方案架构

方案 1:Ansible 定时巡检(最常用)

[定时任务(cron)]
      ↓
[Ansible Playbook]
      ↓
[采集服务器状态]
      ↓
[判断异常 → 告警]

方案 2:Ansible + 专业监控系统

  • Ansible 负责:
    • 自动部署 node_exporter / telegraf
    • 配置监控项
  • Prometheus / Zabbix 负责:
    • 实时采集和报警

三、基础示例:服务器状态巡检

1️⃣ Playbook 示例(check_server.yml)

- hosts: all
  gather_facts: true
  tasks:
    - name: 检查磁盘使用率
      shell: df -h / | awk 'NR==2 {print $5}' | sed 's/%//'
      register: disk_usage

    - name: 磁盘超过 80% 告警
      debug:
        msg: "磁盘使用率过高: {{ disk_usage.stdout }}%"
      when: disk_usage.stdout | int > 80

    - name: 检查内存使用率
      shell: free | awk '/Mem/ {printf "%.0f", $3/$2*100}'
      register: mem_usage

    - name: 内存超过 90% 告警
      debug:
        msg: "内存使用率过高: {{ mem_usage.stdout }}%"
      when: mem_usage.stdout | int > 90

    - name: 检查关键服务
      systemd:
        name: nginx
        state: started
      register: nginx_status
      ignore_errors: true

    - name: Nginx 未运行告警
      debug:
        msg: "Nginx 服务异常"
      when: nginx_status.failed

四、结合 Cron 定时执行

在控制机上:

crontab -e
*/5 * * * * ansible-playbook /opt/ansible/check_server.yml >> /var/log/ansible_monitor.log

✅ 每 5 分钟检查一次


五、异常通知方式

1️⃣ 邮件告警

- name: 发送邮件
  mail:
    host: smtp.example.com
    port: 25
    to: admin@example.com
    subject: "服务器告警"
    body: "磁盘使用率: {{ disk_usage.stdout }}%"
  when: disk_usage.stdout | int > 80

2️⃣ Webhook(如钉钉 / 飞书 / 企业微信)

- name: 发送钉钉告警
  uri:
    url: https://oapi.dingtalk.com/robot/send?access_token=xxx
    method: POST
    body_format: json
    body:
      msgtype: text
      text:
        content: "服务器磁盘使用率过高: {{ disk_usage.stdout }}%"

六、进阶:使用 Ansible Fact 做合规监控

- name: 检查是否禁用 root 登录
  lineinfile:
    path: /etc/ssh/sshd_config
    regexp: '^PermitRootLogin'
    line: 'PermitRootLogin no'
  check_mode: true
  register: root_login

- name: 配置不合规告警
  debug:
    msg: "SSH 允许 root 登录"
  when: root_login.changed

七、推荐组合(生产环境)

✅ 轻量监控

  • Ansible + cron + 邮件/Webhook

✅ 专业监控

  • Ansible(部署)
  • Prometheus + node_exporter
  • Grafana
  • Alertmanager

八、总结一句话

Ansible 不是监控系统,而是“自动化巡检 + 异常响应工具”

如果你愿意,我可以:

  • 给你一套完整可运行监控 playbook
  • 帮你设计 Ansible + Prometheus 架构
  • 按你服务器类型(Linux / Docker / K8s)定制方案

你现在是单机 / 多机 / 云服务器?

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手