- 运维必备的工具-ss、htop、dstat分析工具
一、监控工具ss命令
ss命令-格式:ss[OPTION]...[FILTER]
netstat通过遍历proc来获取socket信息,ss使用netlink与内核tcp_diag模块通信获取socket信息。
-
选项:
-t: tcp协议相关
-u: udp协议相关
-w:裸套接字相关
-x:unixsock相关
-l: listen状态的连接
-a:所有
-n:数字格式
-p:相关的程序及PID
-e:扩展的信息
-m:内存用量
-o:计时器信息 -
FILTER: [ state TCP-STATE ] [ EXPRESSION]
TCP的常见状态:tcp finite statemachine:
LISTEN:监听
ESTABLISHED:已建立的连接
FIN_WAIT_1
FIN_WAIT_2
SYN_SENT
SYN_RECV
CLOSED -
EXPRESSION:
dport=
sport=
示例:’(dport= :sshorsport= :ssh)’
常用组合:-tan, -tanl, -tanlp,-uan -
示例:
ss-l显示本地打开的所有端口
ss-pl显示每个进程具体打开的socket
ss-t -a显示所有tcpsocket
ss-u -a显示所有的UDPSocekt
ss-o stateestablished'( dport= :sshorsport = :ssh)'显示所有已建立的ssh连接
ss-o stateestablished'( dport = :httporsport = :http )'显示所有已建立的HTTP连接
ss-s列出当前socket详细信息
二、系统工具uptime
uptime:显示当前时间,系统已启动的时间、当前上线人数,系统平均负载(1、5、1 5分钟的平均负载,一般不会超过1)
系统平均负载:指在特定时间间隔内运行队列中的平均进程数
通常每个CPU内核的当前活动进程数不大于3,那么系统的性能良好。如果每个CPU内核的任务数大于5,那么此主机的性能有严重问题
如果linux主机是1个双核CPU,当LoadAverage为6的时候说明机器已经被充分使用
三、进程管理工具top
top:有许多内置命令
-
排序:
P:以占据的CPU百分比,%CPU
M:占据内存百分比,%
MEMT:累积占据CPU时长,
TIME+ -
首部信息显示:
uptime信息:l命令
tasks及cpu信息:t命令
cpu分别显示:1(数字)
memory信息:m命令
退出命令:q
修改刷新时间间隔:s
终止指定进程:k
保存文件:W -
栏位信息简介
us:用户空间
sy:内核空间
ni:调整nice时间
id:空闲
wa:等待IO时间
hi:硬中断
si:软中断(模式切换)
st:虚拟机偷走的时间 -
选项:
-d 3 指定刷新时间间隔,默认为3秒
-b 全部显示所有进程
-n 3 刷新多少次后退出(此为3)
-H线程模式,示例:top-H -ppidofmysqld
-
htop命令:EPEL源
选项:
-d 3: 指定延迟时间;
-u UserName:仅显示指定用户的进程
-s COLUME:以指定字段进行排序 -
子命令:
s:跟踪选定进程的系统调用
l:显示选定进程打开的文件列表
a:将选定的进程绑定至某指 定CPU核心
t:显示进程树
四、系统监控工具dstat
dstat命令:系统资源统计,代替vmstat,iostat
- dstat [-afv] [options..] [delay[count]]
-c显示cpu相关信息
-d显示disk相关信息
-D total,sda,sdb,...
-g显示page相关统计数据
-m显示memory相关统计数据
-n显示network相关统计数据
-p显示process相关统计数据
-r显示io请求相关的统计数据
-s显示swapped相关的统计数据
--tcp
--udp
--unix
--raw
--socket
--ipc
--top-cpu:显示最占用CPU的进程
--top-io:显示最占用io的进程
--top-mem:显示最占用内存的进程
--top-latency:显示延迟最大的进程