使用ansible tasks生成linux巡检报告
一直想做个关于资源巡检的功能,其需求就是通过邮件的形式来查看linux资源的使用情况,超出一定的阈值时高亮显示出来。也有人说啦,这个需求通过监控zabbix
, prometheus
都能做呀,何必自己重复造轮子做这些啊。我就是瞎折腾呗,只能说巡检报告是一总主动探测系统资源的一种手段,一般公司监控,外部都不能直接访问的,需要拨通vpn才可以,有些情况我们是无法连接到监控平台,比如放假游玩,不想打开电脑…这些情况下通过每天的巡检报告可以随时的了解系统资源的情况。
使用task方式获取报告
统计的系统资源
- Hostname
- Main IP
- OS
- CPU Used
- CPU LoadAvg
- Mem Used
- Swap Used
- Disk Size Used
- Disk Inode Used
- Tcp Connection Used
- Timestamp
克隆git仓库
git clone https://github.com/lework/Ansible-roles.git /etc/ansible/roles/
mv /etc/ansible/roles/filter_plugins /etc/ansible/
这里我们只用到了
filter_plugins
,os-check
role
在使用role之前,一定要查看role的
README.md
定义主机
#/etc/ansible/hosts
[node2]
192.168.77.130 ansible_ssh_pass=
编写playbook
#/etc/ansible/os-check.yaml
---
- hosts: all
gather_facts: false
vars:
check_report_path: /tmp
check_mail_host: "smtp.lework.com"
check_mail_port: ""
check_mail_username: "ops@lework.com"
check_mail_password: "le123456"
check_mail_to: ["ops@lework.com"]
roles:
- os-check
执行playbook
ansible-playbook /etc/ansible/os-check.yaml
执行结果
报告文件存放在/tmp
目录下
邮件中也能看到报告内容了
执行流程
简要的说下执行流程
- 使用脚本
files\check_linux.sh
在远端执行获取资源数据,并以json结构体返回。 - 使用
jinja2
模板将获取的数据渲染到模板文件中templates\report-cssinline.html
,生成的文件存放在指定的目录中。report-cssinline.html
是将css设置以inline
的方式存储的html文件,report.html
才是源模板文件,修改完源模板文件后,使用Responsive Email CSS Inliner进行转换下,才能更好的兼容邮件显示。- 其中模板中使用的
get_check_data
过滤器是从hostvars
中获取每台主机的脚本执行结果,进行分析整理传递给模板,使用传递回来的数据进行渲染。
- 获取生成的模板文件内容,并通过smtp发送给接收人。
使用fact数据获取报告
上面的操作是我们通过自己写脚本获取系统数据,这种方式有执行速度快,自定义强的优点,也有兼容性差的问题,对各个系统支持的不全面。使用fact数据则是相反。
那下面我们就使用ansible的fact数据来生成巡检报告
统计的系统资源
- Hostname
- Main IP
- OS
- Mem Used
- Swap Used
- Disk Size Used
- Disk Inode Used
- Timestamp
配置脚本
将下列链接中的文件下载到ansible
控制机上
https://github.com/lework/script/tree/master/python/facts_os_check
在ansible.py
中我们配置fact目录和smtp信息
# 设置fact目录
fact_dirs = [os.path.join(current_path, 'facts')] # 发送邮件
subject = 'System Check Report [%s]' % now_date
to_list = ['lework@ops.com'] mail_config = {
'mail_host': 'smtp.lework.com',
'mail_port': '',
'mail_user': 'ops@lework.com',
'mail_pass': ''
}
执行脚本
使用python3环境
pip3 install jinja2 [ ! -d ./report ] && mkdir ./report
[ ! -d ./facts ] && mkdir ./facts rm -rf ./facts ansible all -m setup --tree ./facts python3 ansible.py
在每次生成fact文件时,需要对其目录进行清空操作,避免历史数据干扰。
巡检报告文件以日期命名的方式存放在当前的report
目录下
使用ansible tasks生成linux巡检报告的更多相关文章
- Jenkins 安装的HTML Publisher Plugin 插件无法展示ant生成的JunitReport报告
最近在做基于jenkins ant junit 的测试持续集成,单独ant junit生成的junitreport报告打开正常,使用Jenkins的HTML Publisher Plugin 插件无 ...
- JMeter学习-039-JMeter 3.0 生成 dashboard HTML 报告图表中文乱码
近期,经常有人问 JMeter 3.0 使用时,生成的 HTML 报告图表中的中文乱码问题.在此,简略的说一下解决的方法. 编码相关信息如下: 1.查看控制 csv.xml 等配置结果文件生成.读取的 ...
- Auty自动化测试框架第四篇——生成测试结果报告
[本文出自天外归云的博客园] 本次为Auty框架添加生成测试结果报告功能,文件结构更新:
- JMeter生成HTML性能报告
有时候我们写性能报告的时候需要一些性能分布图,JMeter是可以生成HTML性能报告的 一.准备工作 1:jmeter3.0版本之后开始支持动态生成测试报表 2:jdk版本1.7以上 3:需要jmx脚 ...
- Nmon实时监控并生成HTML监控报告
前面的博客介绍了服务端监控工具:Nmon使用方法,最近在github找到了一个nmon自动监控并生成HTML格式报告的工具:easyNmon,使用体验蛮不错的,这里介绍下它的安装及使用方法. 一.关于 ...
- weblogic和was的巡检报告模板
weblogic巡检报告模板 https://max.book118.com/html/2017/0710/121553357.shtm 用jrockit How to tell Our WebLo ...
- nose测试中修改nose_html_reporting插件,使生成的html报告加入显示截图功能
使用nose框架在测试WEB UI自动化时,使用了第三方插件nose-html-reporting,来生成HTML报告,nose-html-reporting具体使用参见管网https://pypi. ...
- python--selenium实用的自动生成测试HTML报告方法--HTMLTestRunner
python--selenium实用的自动生成测试HTML报告方法--HTMLTestRunner 下面给大家介绍下用HTMLTestRunner模块自动生成测试报告的方法. 一.首先我们导入unit ...
- Jmeter学习笔记(二十三)——生成HTML性能报告
有时候我们写性能报告的时候需要一些性能分布图,JMeter是可以生成HTML性能报告的.这篇博客,简单介绍下在利用jmeter进行性能测试时,是如何生成HTML的可视化测试报告的 一.准备工作 1:j ...
随机推荐
- Day3-G - Task HDU4864
Today the company has m tasks to complete. The ith task need xi minutes to complete. Meanwhile, this ...
- leetcode844 Backspace String Compare
""" Given two strings S and T, return if they are equal when both are typed into empt ...
- 二十三 NoSql&Redis及其安装
什么是Nosql not only sql , 不仅仅是sql,是一项全新的数据库理念,泛指非关系型的数据库. 为什么需要NoSql 解决以下问题: 1 High Performance 对数据库 ...
- swoole之创建子进程
一.代码 <?php /** * 进程就是正在运行的程序的一个实例 * 比如,在某个终端中执行一个PHP脚本,可以认为就是开启了一个进程,会有对应的进程id(pid) * * swoole进程与 ...
- POJ - 1847 Tram(dijkstra)
题意:有向图有N个点,当电车进入交叉口(某点)时,它只能在开关指向的方向离开. 如果驾驶员想要采取其他方式,他/她必须手动更换开关.当驾驶员从路口A驶向路口B时,他/她尝试选择将他/她不得不手动更换开 ...
- 冰蝎动态二进制加密WebShell特征分析
概述 冰蝎一款新型加密网站管理客户端,在实际的渗透测试过程中有非常不错的效果,能绕过目前市场上的大部分WAF.探针设备.本文将通过在虚拟环境中使用冰蝎,通过wireshark抓取冰蝎通信流量,结合平时 ...
- SQL中的Where,Group By,Order By和Having
说到SQL语句,大家最开始想到的就是他的查询语句: select * from tableName: 这是最简单的一种查询方式,不带有任何的条件. 当然在我们的实际应用中,这条语句也是很常用到的,当然 ...
- ahk键盘增强✨✨✨
ahk键盘增强✨✨✨ ahk的一个键盘增强脚本,仅在winwods下可用,长期更新 仓库链接 首先感谢ahk的大神们,这个工具能极大地增加生产力 功能简介 myahk旨在增强windows下的键盘功能
- 066、Java面向对象之以分步的方式实例化对象
01.代码如下: package TIANPAN; class Book { // 定义一个新的类 String title; // 书的名字 double price; // 书的价格 public ...
- 002、创建第一个Java程序HelloWord
代码如下: package TIANPAN; public class TestDemo { public static void main(String args[]) { System.out.p ...