在 DBA 日常运维中,实时监控是最必备的技能。它可以帮助我们:
本篇我们集中讲解四大监控利器:
环境说明
scripts/monitoring
ssh dba@master.example.com
mkdir-p scripts/monitoring
cd scripts/monitoring
for cmd intophtop iotop netstat;do
command -v $cmd>/dev/null >
&1
if[$?-ne];then
echo "未检测到命令 $cmd,安装请执行:"
case $cmd in
top)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";;
esac
else
echo"✅ $cmd 已安装"
fi
done
bash: iotop: 未找到命令
,就按照提示安装并重新登录或刷新 PATH
。
top
界面示例
top 实时界面
快捷键 | 功能 |
---|---|
P | 按 CPU 占用排序 |
M | 按内存占用排序 |
T | 按运行时间排序 |
1 | 显示所有 CPU 核心使用情况 |
q | 退出 top |
yum install-y procps-ng
安装后,再次运行 top
即可。
htop
yum install-y epel-release
yum install-yhtop
bash: htop: 未找到命令
→ 确认已启用 EPEL 源并安装
sudo iotop
需要 root 权限或具有
CAP_SYS_ADMIN
权限的用户。
只显示当前有 I/O 活动的进程
sudo iotop -o-d> iotop.log
yum install-y iotop
bash: iotop: 未找到命令
,按上述安装IOPRIO_CLASS: Operation not permitted
,请加 sudo
或提升权限注意:AlmaLinux 8 默认推荐使用
ss
,但netstat
更直观
netstat-tunlp
TCP 连接
示例输出
netstat 输出示例
bash: netstat: 未找到命令
→
yum install-y net-tools
You must be root to see process info
,请加 sudo
下面给出一个简单的例子:每天凌晨 1 点收集一次系统状态
脚本:daily_monitor.sh
#!/bin/bash
OUTDIR="/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"
赋权并测试:
chmod +x daily_monitor.sh
./daily_monitor.sh
无报错则成功生成报告。
编辑 crontab:
crontab-e
添加:
***/home/dba/dba-scripts/monitoring/daily_monitor.sh>>/home/dba/dba-scripts/monitoring/monitor.log>&
保存后执行 crontab -l
确认生效。
下篇我们将深入讲解如何利用 Prometheus + Grafana构建可视化监控平台,敬请期待! (脚本为服务器复制可能有空格问题,手敲完印象深刻)