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.yam
- 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 = True
在項目的根目錄下執行如下命令:
ansible-playbook roles/os-check.yaml
執行完上述命令后,輸出如下結果。
(2) 查看報告
登錄其中一臺主機,在tmp目錄下,執行如下命令,啟動一個web服務。
root@node1:/tmp# python3 -m http.server 8000
打開網頁輸入該主機的IP加端口即可訪問巡檢報告。