1. dstat
每秒收集一次系统关键信息,相比Zabbix的分钟级数据更能抓住啊尖峰点,相比其他几个类似的监控命令,dstat的功能更完整。
原理是从/proc 这个伪文件系统读取数据,只会占一个核的2%左右CPU,不造成消耗。
1.1 获取日志
// 输出到控制台 dstat -tamp // 输出到日志 dstat -tamp > /tmp/dstat.log &
1.2 分析日志
- 找出CPU消耗大于50%的时刻
// 找出所有超过IDLE少于50%的时刻 awk '$5*1<50' /tmp/dstat.log // 找出10-24日14点的IDLE少于50%的时刻 grep "24-10 14:" /tmp/dstat.log|awk '$5*1<50'
- 同理可筛选其他列
2. pidstat
2.1 获取日进程的CPU消耗
//-l 显示commmand line参数, 每1秒输出1次 pidstat -l 1 //输出到日志 pidstat -l 1 > /tmp/pidstat.log &
如果进程在秒级退出也会没有抓住。
2.2 分析日志
// 找出所有CPU使用超过1个CPU core的进程 awk '$6*1>=100' /tmp/pidstat.log
3. swap查看
3.1 查看历史的swap使用情况
显示当天的swap page in/page out 情况,粒度为10分钟
sar -W
3.2 查看进程使用的swap
- 方法1: top, f选择 fileds, p选中swap, 然后回车,能看到应用占用swap的情况
- 方法2: 获得进程PID后直接查看
cat /proc/{PID}/status|grep VmSwap
3.3 swappiness参数
- 查看使用swap的概率, 值应该是10或10以下
cat /proc/sys/vm/swappiness