侧边栏壁纸
博主头像
云原生生态圈博主等级

让人迷茫的原因只有一个,那就是本该拼命的年纪,却想的太多,做得太少。

  • 累计撰写 47 篇文章
  • 累计创建 58 个标签
  • 累计收到 4 条评论

Ansible自动化采集数据并生成巡检报告

云原生生态圈
2022-03-20 / 1 评论 / 0 点赞 / 279 阅读 / 1,885 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-03-20,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

前段时间在GitHub上发现了一个Ansible巡检服务的Roles, 今天给大家分享一下!

Ansible自动化实现巡检

  • 思路:通过使用Ansible Role的方式对Linux系统进行资源巡检,生成巡检报告后通过邮件发送给接收人。

测试的环境

ansible [core 2.12.2]
os `Centos 7 X64`
python version = 3.10.2 (main, Feb  2 2022, 06:19:27)

oss-check Roles的依赖

  • 过滤器插件 filter_plugins/os-check.py [get_check_data]
  • 目标机bash

说明,此处的过滤器插件要放在ansible指定的filter_plugins的位置,我这里习惯将ansible的配置文件放在ansible的统一配置仓库下,便于迁移以及适应环境:

oss-check Roles的执行流程

  1. 使用脚本roles/oss_check/files/check_linux.sh在目标节点执行获取资源数据,并以json结构体返回。
  2. 使用jinja2模板将获取的数据渲染到模板文件中roles/oss_check/templates/report-cssinline.html,生成的文件存放在指定的目录中。
    • report-cssinline.html 是将css设置以inline的方式存储的html文件,report.html才是源模板文件,修改完源模板文件后,使用[Responsive Email CSS Inliner](https://htmlemail.io/inline/ "Responsive Email CSS Inliner)进行转换下,才能更好的兼容邮件显示。
    • 其模板中使用的get_check_data过滤器是从hostvars中获取每台主机的脚本执行结果,进行分析整理传递给模板,使用传递回来的数据进行渲染。
  3. 获取生成的模板文件内容,并通过smtp发送给接收人。

oss-check Roles采集的指标信息

  • Hostname
  • Main IP
  • OS Version
  • CPU Used
  • CPU LoadAvg
  • Mem Used
  • Swap Used
  • Disk Size Used
  • Disk Inode Used
  • Tcp Connection Used
  • Timestamp

Oss-check Roles数据阈值的分组

采集出的数据,会通过设置好的阈值分为三个档次,

  • OK: < 80
  • Bad评判条件: 80 <= 使用率 < 90,
  • Critical评判条件: 使用率 >= 90

定期执行扫描

集群节点扫描一般都是主动查看集群运行状态,主观判断的集群节点运行的状态,一般都会在节假日之前进行扫描一次,当然也可以通过自动化工具进行定期扫描,比如jenkins.

如何跑起来?

  1. 克隆好项目之后,将roles放置在自己ansible项目的roles目录下
  2. 确认ansible.cfg配置文件中filter_plugin的位置,将克隆项目的filter_plugins/os-check.py放在配置文件指定的filter_plugin中
  3. 创建oss-check运行的playbooks
---
- name: 服务器巡检
  hosts: qa_unix
  gather_facts: false
  vars:
    check_report_path: /tmp
    check_mail_host: "smtp.163.com"
    check_mail_port: "465"
    check_mail_username: "demo@163.com"
    check_mail_password: "demo@163.com邮箱的密码"
    check_mail_to: [ "接收人的邮箱地址" ]
    check_email_title: "Ansible 集群巡检报告"
    check_email_env: "QA"
  roles:
    - os-check
  1. inventory/qa.ini是待执行环境的inventory,最后执行就OK了,
/usr/bin/ansible-playbook -i inventory/qa.ini playbooks/os_check_qa.yaml
  1. 如果执行遇到问题,那就通过-v查看信息吧,v的数量越多,信息量就越大

希望能帮助到你,感谢一键三连,分享给更多需要的人

0

评论区