监控io性能
使用iostat命令查看磁盘使用情况
[root@kvm ~]# yum -y install sysstat
[root@kvm ~]# iostat -x
Linux 3.10.0-693.el7.x86_64 (kvm) 2018年01月25日 _x86_64_ (4 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
1.80 0.00 2.89 5.03 0.00 90.29
这里我们主要关注util这一列,util是个百分比显示的,如果这个值越大则表示你的硬盘越忙,这也会是你系统变慢的原因
使用iotop命令查看那个进程使用磁盘大
首先需要先安装这个命令
[root@kvm ~]# yum install -y iotop
[root@kvm ~]# iotop
free命令
free命令可以查看当前系统的总内存大小以及使用内存的情况。Centos7比Centos6更加简洁了一些,但大体内容一致。
[root@kvm ~]# iotop
[root@kvm ~]# free
total used free shared buff/cache available
Mem: 7994076 158268 7471584 8840 364224 7555260
Swap: 5242876 0 5242876
total:内存总大小used:真正使用的实际内存大小free:剩余物理内存大小(没有被分配,纯剩余)shared:共享内存大小,不用关注它buff/cache:buffer和cache都是一部分内存,内存的作用就是缓解CPU和IO的速度差距的available:系统可以使用内存有多大
free命令显示的结果中,其实有一个隐藏的公式:total=used+free+buff/cache。available是由free这部分内存和buff/cache还未占用的那部分内存组成。
free同时还可以加一些参数-m和-g(分别是MB和GB的单位显示)打印内存使用状况,甚至也支持-h选项
[root@kvm ~]# free -h
total used free shared buff/cache available
Mem: 7.6G 154M 7.1G 8.6M 355M 7.2G
Swap: 5.0G 0B 5.0G
ps命令
使用ps命令查看系统进程
[root@kvm ~]# ps aux
除了ps aux命令外还有一个ps -elf命令,但是常用一般为ps aux命令
PID:表示进程的id,这个id很有用。在linux中,内核管理进程就得靠pid来识别和管理某一个进程,比如这里想要终止一个进程,则用命令“kill 进程的id”,有的时候这样并不能关闭某些进程,需要加-9选项,但你这样有些强行(暴力),严重的话可能会丢失数据,所以尽量不用。
STAT:进程的状态,状态分为以下几种
D:不能中断的进程(通常为IO)R:正在运行的进程,包含等待CPU时间片的进程S:已经中断的进程。通常情况下,系统的大部分进程都是这个状态T:已经停止或者暂停的进程。Z:僵尸进程,即杀不掉,打不死的垃圾进程,占用系统一点资源,不过没有关系。如果占用太多,则需要重视<:高优先级进程N:底优先级进程L:在内存中被锁了内存分页s:主进程l:多线程进程+:在前台运行的进程,比如在当前终端执行的ps aux就是前台进程
查看网络状态
netstat:用于打印网络连接状况、系统所开放端口、路由表等信息,一般常用的有;
[root@kvm ~]# netstat -lnp //打印当前系统启动哪些端口
和
[root@kvm ~]# netstat -an //打印网络连接状况
linux下抓包
tcpdump工具:查看某个网卡上都有哪些数据包,尤其是当你初步判断服务器上有流量攻击时,使用抓包工具来抓取数据包就可以知道有哪些ip在攻击了。
如果还没有tcpdump工具则先进行安装;
[root@kvm ~]# yum install -y tcpdump
[root@kvm ~]# tcpdump -nn -i ens33
常用参数-nn 这里由于使用的虚拟机所以需要指定网卡加了-i参数,命令输完回车,屏幕会不断打印出字符,字符串不停刷新,这些内容就是传输数据的流向过程以及数据包,这里重点关注第三列和第四列,表示从哪个ip+端口连接到哪个ip+端口。Ctrl+C退出程序。
tcpdump还有-c和-w选项,-c指定抓包数量,-w保存抓取结果到指定的路径
[root@kvm ~]# tcpdump -nn -i ens33 port 22 //指定抓取22端口的包
[root@kvm ~]# tcpdump -nn -i ens33 not port 22 //指定抓取除了22端口以外的包
[root@kvm ~]# tcpdump -nn -i ens33 tcp and not port 22 //指定抓取tcp的包,但排除掉22端口的
[root@kvm ~]# tcpdump -nn -i ens33 port 22 and port 24 //指定抓取只有22和24端口的包
wireshark工具
安装tshark抓包工具
[root@kvm home]# yum install -y wireshark
指定查看80端口的访问情况