在 dba 日常運維中,實時監控是最必備的技能。它可以幫助我們:
快速定位 CPU/內存 瓶頸監控 I/O 消耗查看網絡連接狀態
本篇我們集中講解四大監控利器:
top:系統進程、資源實時概覽htop:top 的可視化增強版iotop:監控進程 I/O 行為netstat:網絡連接與端口狀態查看
環境說明
操作系統:Almalinux 8.x數據庫:mysql 一主兩從,均部署在 docker 容器中腳本目錄:scripts/monitoring
二、準備工作:創建目錄 & 命令檢查登錄到主服務器(master)ssh?dba@master.example.com創建監控腳本存放目錄mkdir-p?scripts/monitoringcd?scripts/monitoring檢查四大命令是否可用for?cmd?intophtop?iotop?netstat;docommand?-v?$cmd>/dev/NULL?>&1if[$?-ne];thenecho?“未檢測到命令?$cmd,安裝請執行:”case?$cmd?intop)echo?” ?yum install -y procps-ng”;;htop)echo?” ?yum install -y htop”;;? ? ? iotop)echo?” ?yum install -y iotop”;;netstat)echo?” ?yum install -y net-tools”;;esacelseecho”??$cmd?已安裝”fidone若出現?bash: iotop: 未找到命令,就按照提示安裝并重新登錄或刷新?PATH。

三、top:最基礎的系統監控工具3.1 啟動 top代碼語言:JavaScript代碼運行次數:0運行復制
top
界面示例

top 實時界面
3.2 常用快捷鍵
快捷鍵
功能
P
按 CPU 占用排序
M
按內存占用排序
T
按運行時間排序
1
顯示所有 CPU 核心使用情況
q
退出 top
3.3 排查 “bash: top: 未找到命令”代碼語言:javascript代碼運行次數:0運行復制
yum?install-y?procps-ng
安裝后,再次運行?top即可。
四、htop:彩色可視化,操作更友好4.1 啟動 htop代碼語言:javascript代碼運行次數:0運行復制
htop
支持上下左右方向鍵支持 F3/F4 過濾、F6 列排序支持用鼠標滾動(如果終端支持)4.2 安裝代碼語言:javascript代碼運行次數:0運行復制
yum?install-y?epel-releaseyum?install-yhtop
4.3 報錯排查bash: htop: 未找到命令→ 確認已啟用 EPEL 源并安裝如果界面亂碼,檢查終端字符集為 UTF-8

五、iotop:實時監控 I/O 消耗5.1 啟動 iotop代碼語言:javascript代碼運行次數:0運行復制
sudo?iotop
5.2 常用參數代碼語言:javascript代碼運行次數:0運行復制
只顯示當前有 I/O 活動的進程
代碼語言:javascript代碼運行次數:0運行復制
sudo?iotop?-o-d>?iotop.log
5.3 安裝 & 排查代碼語言:javascript代碼運行次數:0運行復制
yum?install-y?iotop
若報?bash: iotop: 未找到命令,按上述安裝若報?IOPRIO_CLASS: Operation not permitted,請加?sudo或提升權限
六、netstat:查看網絡連接與端口6.1 基本用法代碼語言:javascript代碼運行次數:0運行復制
netstat-tunlp
代碼語言:javascript代碼運行次數:0運行復制
TCP 連接
示例輸出

netstat 輸出示例
6.2 報錯排查bash: netstat: 未找到命令→yum?install-y?net-tools若顯示?You must be root to see process info,請加?sudo
七、腳本化:把監控命令做成自動報告
下面給出一個簡單的例子:每天凌晨 1 點收集一次系統狀態
腳本:daily_monitor.sh
代碼語言:javascript代碼運行次數:0運行復制
#!/bin/bashOUTDIR="/home/dba/dba-scripts/monitoring/reports/$(date?+%F)"mkdir-p"$OUTDIR"# top 快照top-b-n>"$OUTDIR/top_$(date?+%H%M).txt"# iotop 快照(需 sudo)sudo?iotop?-b-n-d>"$OUTDIR/iotop_$(date?+%H%M).txt"# netstat 快照netstat-tunlp>"$OUTDIR/netstat_$(date?+%H%M).txt"echo"監控報告已生成在?$OUTDIR"
賦權并測試:
代碼語言:javascript代碼運行次數:0運行復制
chmod?+x daily_monitor.sh./daily_monitor.sh
無報錯則成功生成報告。
八、配置定時:crontab 自動執行
編輯 crontab:
代碼語言:javascript代碼運行次數:0運行復制
crontab-e
添加:
代碼語言:javascript代碼運行次數:0運行復制
***/home/dba/dba-scripts/monitoring/daily_monitor.sh>>/home/dba/dba-scripts/monitoring/monitor.log>&
保存后執行?crontab -l確認生效。
下篇我們將深入講解如何利用?prometheus + grafana構建可視化監控平臺,敬請期待! ?(腳本為服務器復制可能有空格問題,手敲完印象深刻)