linux 系统监控命令
free 查看内存使用情况,包括物理内存和虚拟内存
vmstat 对系统的整体情况进行统计,包括内核进程、虚拟内存、磁盘、陷阱和 CPU 活动的统计信息
top 实时显示系统中各个进程的资源占用状况及总体状况
mpstat 实时系统监控工具,它会报告与CPU相关的统计信息
sar 收集、报告和保存CPU、内存、输入输出端口使用情况
netstat 检验本机各端口的网络连接情况,用于显示与IP、TCP、UDP和ICMP协议相关的统计数据
IPTraf 用来生成包括TCP信息、UDP计数、ICMP和OSPF信息、以太网负载信息、节点状态信息、IP校验和错误等等统计数据
iostat 收集显示系统存储设备输入和输出状态统计
iotop 用来监视磁盘I/O使用状况的top类工具
lsof 用于以列表的形式显示所有打开的文件和进程
atop 显示的是各种系统资源(CPU, memory, network, I/O, kernel)的综合,并且在高负载的情况下进行了彩色标注
htop 它和top命令十分相似,高级的交互式的实时linux进程监控工具
glances 监视 CPU,平均负载,内存,网络流量,磁盘 I/O,其他处理器 和 文件系统 空间的利用情况
dstat 全能系统信息统计工具,可用于替换vmstat、iostat、netstat、nfsstat和ifstat这些命令的工具
dmesg 主要用来显示内核信息。使用dmesg可以有效诊断机器硬件故障或者添加硬件出现的问题。
mpstat 用于报告多路CPU主机的每颗CPU活动情况,以及整个主机的CPU情况。
mytop 用于监控 mysql 的线程和性能。它能让你实时查看数据库以及正在处理哪些查询
iftop 用来监控网卡的实时流量(可以指定网段)、反向解析IP、显示端口信息等
jnettop 以相同的方式来监测网络流量但比 iftop 更形象。它还支持自定义的文本输出,并能以友好的交互方式来深度分析日志。
ngrep 网络层的 grep。它使用 pcap ,允许通过指定扩展正则表达式或十六进制表达式来匹配数据包。
nmap 可以扫描你服务器开放的端口并且可以检测正在使用哪个操作系统
一、IO监控
[root@centos7 zabbix]# yum -qy install /usr/bin/iostat
[root@centos7 ~]# iostat
Linux 3.10.0-693.el7.x86_64 (centos7) 01/14/2019 _x86_64_ (1 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
2.80 0.00 5.54 23.28 0.00 68.39
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 67.16 2946.88 147.44 325129 16267
%user:进程处于用户状态所占CPU时间百分比
%nice: 改变过优先级的进程的占用CPU的百分比.
%system:进程处于内核状态所占CPU时间百分比
%iowait:CPU等等IO操作所占用的CPU百分比,当磁盘IO比较大的时候该值会增加。
%steal:分配给虚拟机占用的CPU百分比
%idle:CPU空闲时间的百分比
tps: 每秒钟发送到的I/O请求数(可以理解成每秒磁盘IO处理的请求,这样可能更好理解)
Blk_read /s: 每秒读取的block数
Blk_wrtn/s: 每秒写入的block数
Blk_read: 读入的block总数
Blk_wrtn: 写入的block总数
[root@centos7 zabbix]# iostat -xdm
Linux 3.10.0-693.el7.x86_64 (centos7) 03/23/2019 _x86_64_ (1 CPU)
Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.00 0.01 0.18 2.47 0.01 0.05 40.29 0.01 3.33 19.19 2.18 1.69 0.45
scd0 0.00 0.00 0.00 0.00 0.00 0.00 114.22 0.00 15.22 15.22 0.00 11.39 0.00
%util 代表磁盘繁忙程度。100% 表示磁盘繁忙, 0%表示磁盘空闲。但是注意,磁盘繁忙不代表磁盘(带宽)利用率高
argrq-sz 提交给驱动层的IO请求大小,一般不小于4K,不大于max(readahead_kb, max_sectors_kb)。 可用于判断当前的IO模式,一般情况下,尤其是磁盘繁忙时, 越大代表顺序,越小代表随机
svctm 一次IO请求的服务时间,对于单块盘,完全随机读时,基本在7ms左右,既寻道+旋转延迟时间
二、CPU监控
[root@centos7 ~]# mpstat -P ALL
Linux 3.10.0-693.el7.x86_64 (centos7) 01/14/2019 _x86_64_ (1 CPU)
10:43:45 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
10:43:45 AM all 0.38 0.00 0.76 2.97 0.00 0.01 0.00 0.00 0.00 95.87
10:43:45 AM 0 0.38 0.00 0.76 2.97 0.00 0.01 0.00 0.00 0.00 95.87
%user:进程处于用户状态所占CPU时间百分比
%nice: 改变过优先级的进程的占用CPU的百分比.
%system:进程处于内核状态所占CPU时间百分比
%iowait:CPU等等IO操作所占用的CPU百分比,当磁盘IO比较大的时候该值会增加。
%steal:分配给虚拟机占用的CPU百分比
%idle:CPU空闲时间的百分比
三、内存监控
[root@centos7 ~]# free -m
total used free shared buffers cached
Mem: 32830608 32501660 328948 0 285540 10956472
-/+ buffers/cache: 21259648 11570960
Swap: 16383992 216520 16167472
free:内存中剩余未被使用的空间大小
buffers:文件缓存大小,linux本身就是一个文件型系统,所以linux会为每个文件进行缓存用来加速文件的查找。
cached:页缓存,所有以页为单位的缓存都会被缓存到这来,所以从这里其实也可以大概看出服务器的内存使用情况,因为大部分的内存都是以页进行缓存的
total=used+free
total=(-buffers/cache)+(+buffers/cache)
-/+ buffers/cache:反应的是内存的实际使用情况
-buffers/cache:21259648=used-buffers-cached,这部分也是真正被使用掉的内存
+buffers/cache:11570960=(free+buffers+cached),这部分是可以直接拿来用的内存,所以看内存的剩余可用情况可以参考+buffers/ca
四、进程监控
[root@centos7 ~]# top -u mysql
top - 10:51:15 up 22 min, 1 user, load average: 0.01, 0.02, 0.05
Tasks: 185 total, 2 running, 183 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.1%us, 0.2%sy, 0.0%ni, 99.5%id, 0.1%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 32864496k total, 4749428k used, 28115068k free, 167268k buffers
Swap: 1048572k total, 0k used, 1048572k free, 259776k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2285 mysql 20 0 27.5g 3.8g 8236 S 0.3 12.1 7:56.92 mysqld
up 系统已运行的时间22分钟 2个用户登入 load average分别表示5分钟内的、10分钟内的、15分钟内排队的进程数,只要第一个数字即5分钟内的负载不大于5,系统就是健康的
tasks:185个进程总数,2个正在运行的进程,183个睡眠的进程,0个停止的进程,0个僵尸进程
cpu:0.1%us(用户占用), 0.2%sy(系统占用), 0.0%ni, 99.5%id(空闲), 0.1%wa(等待输入输出的CPU时间百分比), 0.0%hi, 0.0%si, 0.0%st
Mem: 32864496k total(总内存), 4749428k used(已使用内存), 28115068k free(未使用的内存), 167268k buffers(内核缓存)
Swap: 1048572k total(交换区总大小), 0k used(已使用), 1048572k free(未使用), 259776k cached(缓冲的交换区总量)
PID:进程ID
USER:用户
PR:优先级
NI:nice值。负值表示高优先级,正值表示低优先级
S:进程状态(R:运行,S:睡眠,T:停止,Z:僵尸进程,D:不可中断的睡眠状态)
%CPU:占用的CPU百分比
%MEM:占用的内存百分比
TIME+:累计占用的CPU时间
COMMAND:命令
五、流量监控
[root@vultr ~]# iftop -n
12.5Kb 25.0Kb 37.5Kb 50.0Kb 62.5Kb
mqqqqqqqqqqqqqqqqqqqqqqqqqqvqqqqqqqqqqqqqqqqqqqqqqqqqqvqqqqqqqqqqqqqqqqqqqqqqqqqqvqqqqqqqqqqqqqqqqqqqqqqqqqqvqqqqqqqqqqqqqqqqqqqqqqqqqq
207.246.104.14 => 193.201.224.12 10.8Kb 2.35Kb 1.40Kb
<= 3.66Kb 845b 483b
207.246.104.14 => 125.120.64.180 1.55Kb 1.36Kb 1.17Kb
<= 160b 381b 230b
207.246.104.14 => 108.61.10.10 292b 58b 15b
<= 532b 106b 27b
207.246.104.14 => 218.92.0.191 0b 48b 168b
<= 0b 32b 80b
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
TX: cum: 78.1KB peak: 16.8Kb rates: 12.6Kb 3.82Kb 2.74Kb
RX: 28.0KB 4.33Kb 4.33Kb 1.33Kb 820b
TOTAL: 106KB 20.9Kb 16.9Kb 5.15Kb 3.55Kb
<= =>:表示流量的方向;
TX:发送流量;
RX:接收流量;
cum:运行iftop到当前时间的总流量;
peak:流量峰值;
rates:分别表示过去2s、10s、40s的平均流量