Linux 管理员福音:自动化生成巡检报告,一键邮件分享!

作为一位Linux系统管理员,每天进行例行巡检是非常重要的工作环节。这包括检查:

服务器的 CPU、内存和磁盘使用情况是否都在正常范围内?关键服务是否都处于良好运行状态?网络连接是否有任何异常?是否出现了需要特别注意的日志记录或警告信息?

对于小规模服务器集群,手动检查尚可接受。但在处理数十或上百台服务器时,这种方式既耗时又容易遗漏关键信息。因此,采用自动化巡检、自动生成报告并通过邮件发送给相关人员的方法更加高效。这不仅提升了工作效率,也保证了信息传递的准确性和及时性。

一、项目介绍

今天,我想向大家推荐一个非常实用的开源项目ansible-HealthCheck。这个项目主要用于对Linux系统进行资源巡检,并且能够自动生成详细的巡检报告。更棒的是,它还支持将生成的报告通过电子邮件发送给指定的接收人,方便快捷。

生成的巡检报表不仅信息详尽,而且设计得非常美观,如下图所示。如果你有前端开发的经验,还可以根据自己的喜好来调整和优化报表的样式,让它更加符合你的需求。

1. 项目目录结构
复制
ansible-HealthCheck/ ├── os-check │ ├── README.md │ ├── defaults │ │ └── main.yml │ ├── files │ │ └── check_linux.sh │ ├── tasks │ │ └── main.yml │ ├── templates │ │ ├── report-cssinline.html │ │ └── report.html │ └── vars │ └── main.yml └── roles ├── filter_plugins │ └── os-check.py └── os-check.yam1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.
vars目录下定义了一些变量。files目录下获取远端主机资源数据脚本。task目录是定义执行的任务。templates目录下是定义渲染的模板文件。filter_plugins目录下是定义自定义的数据过滤插件。os-check.yaml是ansible的角色执行任务。2. 执行流程

(1) 使用脚本files\check_linux.sh在远端执行获取资源数据,并以json结构体返回。

(2) 使用jinja2模板将获取的数据渲染到模板文件中templates\report-cssinline.html,生成的文件存放在指定的目录中。

report-cssinline.html 是将css设置以inline的方式存储的html文件,report.html才是源模板文件,修改完源模板文件后,使用Responsive Email CSS Inliner进行转换下,才能更好的兼容邮件显示。其中模板中使用的get_check_data过滤器是从hostvars中获取每台主机的脚本执行结果,进行分析整理传递给模板,使用传递回来的数据进行渲染。

(3) 获取生成的模板文件内容,并通过smtp发送给接收人。

3. 统计的系统资源主机名IP地址操作系统CPU使用率CPU平均负载内存使用率Swap使用率磁盘使用率磁盘Inode使用率Tcp连接时间

二、项目演示

(1) 演示环境中的ansible版本信息如下:

复制
ansible [core 2.17.10] config file = /etc/ansible/ansible.cfg configured module search path = [/root/.ansible/plugins/modules, /usr/share/ansible/plugins/modules] ansible python module location = /root/.local/pipx/venvs/ansible-core/lib/python3.10/site-packages/ansible ansible collection location = /root/.ansible/collections:/usr/share/ansible/collections executable location = /root/.local/bin/ansible python version = 3.10.12 (main, Feb 4 2025, 14:57:36) [GCC 11.4.0] (/root/.local/pipx/venvs/ansible-core/bin/python) jinja version = 3.1.6 libyaml = True1.2.3.4.5.6.7.8.9.

在项目的根目录下执行如下命令:

复制
ansible-playbook roles/os-check.yaml1.

执行完上述命令后,输出如下结果。

(2) 查看报告

登录其中一台主机,在tmp目录下,执行如下命令,启动一个web服务。

复制
root@node1:/tmp# python3 -m http.server 80001.

打开网页输入该主机的IP加端口即可访问巡检报告。

THE END
本站服务器由亿华云赞助提供-企业级高防云服务器