首先为今天险恶的外来攻击势力表示强烈谴责,对外linux.do的佬们一贯倡导不惹事,不挑事,但我们也不怕事儿,2024年5月13日 始皇遇刺,绕柱近1小时,论坛在座的各位都有责任,请及时复盘。
进入正题
做运维每天巡检服务器指标是必要环节
不想自己写还能怎么办?只能ctrl+c ctrl+v
在github上找了一个佬写好的项目看起来还不错,拿过来改一改自己用最合适不过了下面介绍和部署使用这个项目
项目仓库
实现方式
ansible自动化实现询价(没了解过ansible的同学自行了解学习 这里就不解释了)
思路
通过使用Ansible Role
的方式对Linux系统进行资源巡检,生成巡检报告后通过邮件发送给接收人。
使用task方式获取报告(这里我自己多添加了几项 可根据项目实际需求自行添加)
- Hostname
- Main IP
firewall status
uptime
vsftp status
ntp status
- OS
- CPU Used
- CPU LoadAvg
- Mem Used
- Swap Used
- Disk Size Used
- Disk Inode Used
- Tcp Connection Used
- Timestamp
克隆仓库
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
(内网环境自行离线下载上传服务器后 解压到ansible的roles)
自定义主机
/etc/ansible/hosts
编写playbook
---
- 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: "[email protected]"
check_mail_password: "[email protected]邮箱的密码"
check_mail_to: [ "接收人的邮箱地址" ]
check_email_title: "Ansible 集群巡检报告"
check_email_env: "QA"
roles:
- os-check
执行playbook
ansible-playbook /etc/ansible/os-check.yaml
执行报告
oss-check Roles的执行流程
- 使用脚本
roles/oss_check/files/check_linux.sh
在目标节点执行获取资源数据,并以json结构体返回。 - 使用
jinja2
模板将获取的数据渲染到模板文件中roles/oss_check/templates/report-cssinline.html
,生成的文件存放在指定的目录中。
report-cssinline.html
是将css设置以inline
的方式存储的html文件,report.html
才是源模板文件,修改完源模板文件后,使用**Responsive Email CSS Inliner[2]**进行转换下,才能更好的兼容邮件显示。- 其模板中使用的
get_check_data
过滤器是从hostvars
中获取每台主机的脚本执行结果,进行分析整理传递给模板,使用传递回来的数据进行渲染。
- 获取生成的模板文件内容,并通过smtp发送给接收人。