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

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: 自动化系列

前段时间在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进行转换下,才能更好的兼容邮件显示。
    • 其模板中使用的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的数量越多,信息量就越大

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

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
相关文章
|
2月前
|
运维 监控 Docker
构建高效微服务架构:从理论到实践构建高效自动化运维体系:Ansible与Docker的完美融合
【5月更文挑战第31天】 在当今软件开发的世界中,微服务架构已经成为了实现可伸缩、灵活且容错的系统的关键策略。本文将深入探讨如何从零开始构建一个高效的微服务系统,涵盖从概念理解、设计原则到具体实施步骤。我们将重点讨论微服务设计的最佳实践、常用的技术栈选择、以及如何克服常见的挑战,包括服务划分、数据一致性、服务发现和网络通信等。通过实际案例分析,本文旨在为开发者提供一套实用的指南,帮助他们构建出既健壮又易于维护的微服务系统。
|
2月前
|
运维 监控 安全
构建高效自动化运维体系:Ansible与Docker的协同实战
【5月更文挑战第25天】 在当今快速迭代的软件发布环境中,自动化运维成为确保部署效率和可靠性的关键。本文通过深入分析Ansible和Docker技术,探索它们如何协同工作以构建一个高效的自动化运维体系。文章不仅介绍了Ansible的配置管理功能和Docker容器化的优势,还详细阐述了将两者结合的实践策略,旨在帮助读者理解并实现更智能、更灵活的基础设施管理。
|
4天前
|
运维 Linux 应用服务中间件
Linux之自动化运维工具ansible、ansible模块(2)
Linux之自动化运维工具ansible、ansible模块(2)
|
4天前
|
运维 Linux Shell
Linux之自动化运维工具ansible、ansible模块(1)
Linux之自动化运维工具ansible、ansible模块(1)
|
2月前
|
运维 关系型数据库 Shell
运维自动化之 ansible
运维自动化之 ansible
|
2月前
|
运维 Devops 测试技术
构建高效自动化运维体系:基于Ansible的实践指南
【5月更文挑战第30天】 在当今IT基础设施管理领域,自动化已成为提高效率、确保一致性和减少人为错误的关键。本文将探讨如何利用Ansible这一强大的自动化工具来构建一个高效的运维自动化体系。文章不仅介绍了Ansible的基本原理和组件,还通过实际案例展示了如何集成Ansible到现有的运维流程中,以及如何处理常见的自动化挑战。读者将获得一套实用的策略和最佳实践,以优化其自动化运维工作。
|
2月前
|
运维 监控 安全
构建高效自动化运维体系:Ansible与Docker的完美结合
【5月更文挑战第28天】 在当今快速演变的IT环境中,自动化已成为维护系统稳定性与提高效率的关键。本文将探讨如何通过结合Ansible和Docker技术构建一个高效的自动化运维体系。文章不仅介绍两者的基本概念,还详细阐述了集成实践,以及通过真实案例分析其优势和潜在挑战,旨在为读者提供一套可行的解决方案,以优化他们的DevOps流程。
|
2月前
|
运维 安全 持续交付
构建高效自动化运维体系:Ansible与Docker的协同实践
【5月更文挑战第27天】在当今IT基础设施管理领域,自动化和微服务架构日益成为提高效率和响应速度的关键。本文将探讨如何通过结合Ansible和Docker技术,打造一套既灵活又可靠的自动化运维体系,实现持续集成、持续部署以及自动化管理。文章不仅介绍了相关技术的核心概念,还提供了实际案例分析,以期给运维专业人士提供参考,帮助他们优化现有的运维流程。
|
2月前
|
运维 监控 数据安全/隐私保护
构建高效自动化运维体系:Ansible与Docker的协同实践
【5月更文挑战第27天】 在现代IT基础设施管理领域,自动化运维已经成为提升效率、确保一致性和降低人为错误的关键手段。本文将深入探讨如何通过结合Ansible和Docker技术,构建一个灵活且高效的自动化运维体系。不同于传统摘要的概括性描述,我们将直接切入主题,展示这两个工具如何在实际场景中相互补充,实现配置管理、部署流程的自动化,以及如何处理复杂环境中的运维挑战。通过阅读本文,读者可以获得对自动化运维实践中关键技术选择和应用的深刻见解。
|
2月前
|
运维 持续交付 数据安全/隐私保护
构建高效自动化运维体系:Ansible与Docker的协同实践
【5月更文挑战第26天】 在追求持续交付和快速迭代的现代软件开发过程中,自动化运维成为确保系统稳定性和提升部署效率的关键。本文将探讨如何通过结合Ansible和Docker技术,构建一个既灵活又强大的自动化运维体系。我们将介绍Ansible的作用、Docker容器化的优势以及二者结合的最佳实践,旨在为读者提供一套可落地的解决方案,以优化他们的DevOps流程。