Linux管理员福音:自动化生成巡检报告,一键邮件分享!
作为一位Linux
系统管理员,每天进行例行巡检是非常重要的工作环节。这包括检查:
- 服务器的
CPU
、内存和磁盘使用情况是否都在正常范围内? - 关键服务是否都处于良好运行状态?
- 网络连接是否有任何异常?
- 是否出现了需要特别注意的日志记录或警告信息?
对于小规模服务器集群,手动检查尚可接受。但在处理数十或上百台服务器时,这种方式既耗时又容易遗漏关键信息。因此,采用自动化巡检、自动生成报告并通过邮件发送给相关人员的方法更加高效。这不仅提升了工作效率,也保证了信息传递的准确性和及时性。
项目介绍
今天,我想向大家推荐一个非常实用的开源项目ansible-HealthCheck
。这个项目主要用于对Linux
系统进行资源巡检,并且能够自动生成详细的巡检报告。更棒的是,它还支持将生成的报告通过电子邮件发送给指定的接收人,方便快捷。
生成的巡检报表不仅信息详尽,而且设计得非常美观,如下图所示。如果你有前端开发的经验,还可以根据自己的喜好来调整和优化报表的样式,让它更加符合你的需求。
项目目录结构
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.yam
vars
目录下定义了一些变量。files
目录下获取远端主机资源数据脚本。task
目录是定义执行的任务。templates
目录下是定义渲染的模板文件。filter_plugins
目录下是定义自定义的数据过滤插件。os-check.yaml
是ansible
的角色执行任务。
执行流程
- 使用脚本
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
发送给接收人。
统计的系统资源
- 主机名
IP
地址- 操作系统
CPU
使用率CPU
平均负载- 内存使用率
Swap
使用率- 磁盘使用率
- 磁盘
Inode
使用率 Tcp
连接- 时间
项目演示
- 演示环境中的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 = True
在项目的根目录下执行如下命令:
ansible-playbook roles/os-check.yaml
执行完上述命令后,输出如下结果。
- 查看报告
登录其中一台主机,在tmp
目录下,执行如下命令,启动一个web
服务。
root@node1:/tmp# python3 -m http.server 8000
打开网页输入该主机的IP加端口即可访问巡检报告。
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 攻城狮小林
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果