Linux 系统监测工具

uptime

[~]$ uptime13:24:46 up 207 days,  3:27,  2 users,  load average: 1.45, 1.34, 1.33

system time: 系统当前时间13:24:46

system uptime:系统运行时间207天3小时27分

users:当前登入系统的用户数

load average:过去的1分钟,5分钟,15分钟系统的负载情况,越小越好。

将单核CPU理解为一座桥,而系统中的任务看成一辆辆要过桥的汽车。当负载为1时,桥满负荷,汽车一个接一个有序过桥。若大于1,则形成拥堵,汽车需要排队过桥。

  • load average = 1.0                        
  • load average = 0.5                       
  • load average = 1.7 

NOTE: N核CPU,满负荷运行,其load average = N。 —— UNDERSTANDING
LINUX CPU LOAD

free

[~]$ free -m             total       used       free     shared    buffers     cachedMem:         59093      33708      25385          0       4683      23460-/+ buffers/cache:       5564      53529Swap:         2055          0       2055

Mem 物理内存

59093:物理内存大小,单位MB。

33708:已用物理内存量;包含buffers与cached。

25385:剩余物理内存量。

0:共享内存,弃用。

4683:缓冲区大小

23460:cache大小

buffers 与 cached 大小已经包含在used中,即已用内存中,划出一部分用于特殊用途。

-/+ buffers/cache

5564: 减去buffers与cache内存量,系统已使用内存量。5564 ≈ 33708
- 4683 - 23460

53529:加上buffers与cache内存量,系统剩余内存量。 53529 ≈ 25385
+ 4683 + 23460

NOTE: buffers 与 cached 为临时空间,可以被系统自动释放。因而,只有第二行中,free量少时,才表明内存吃紧。

参考:Linux ate my ram!

Swap 磁盘上的虚拟内存

2055: 交换空间大小为2055MB

0: 已使用0MB

2055:剩余2055MB

Buffer 与 Cache- Buffer: 用于缓冲,快写慢,速度不匹配,存在数据积压现象,将数据丢在缓冲区,慢设备慢慢拿走数据。- Cache:用于缓存,快读慢,由于速度不匹配,存在等待现象,将热数据存于缓存,加快访问速度。

mpstat

监控CPU利用率

总览

[~]$ mpstat 1Linux 2.6.32.57-tlinux_xenU-1.1.1-state (153_92)        03/19/16        _x86_64_        (8 CPU)

14:52:50     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle14:52:50     all    0.55    0.00    0.17    0.00    0.00    0.00    0.00    0.00   99.27

usr:用户空间CPU使用占比

sys:内核空间CPU使用占比

nice:低优先级进程使用CPU占比。nice值大于0。

iowait:CPU等待IO占比

irq:CPU处理硬中断占比

soft:CPU处理软中断占比

idle:CPU空闲时间占比

gueststeal与虚拟机有关,暂不涉及。

NOTE: 如果存在nice值大于0的进程,%nice才会有百分比。nice值[-20 ~ 19], nice为19,进程优先级最低。

调整方法:renice -n nice_val -p pid

查看某个

[~]$ mpstat -P 0Linux 2.6.32.57-tlinux_xenU-1.1.1-state (153_92)        03/19/16        _x86_64_        (8 CPU)

14:55:17     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle14:55:17       0    0.82    0.00    0.18    0.00    0.00    0.00    0.00    0.00   98.99

NOTE: 查看全部CPU Core: -P ALL

持续打印

#每两秒打印一次mpstat 2

#每两秒打印一次,共打印5次mpstat 2 5

注意: 使用mpstat,通常加上时间间隔,否则打印是系统启动到统计点时的CPU状况。

top

top 命令包含了uptime,free,mpstat,总览系统各种参数。

top - 15:29:53 up 645 days,  2:15,  4 users,  load average: 0.37, 0.40, 0.37Tasks: 221 total,   1 running, 220 sleeping,   0 stopped,   0 zombieCpu(s):  1.5%us,  0.2%sy,  0.0%ni, 98.3%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%stMem:  60511924k total, 26581256k used, 33930668k free,  2937116k buffersSwap:  2104504k total,     3060k used,  2101444k free, 18262296k cached

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND   30032 root      20   0 42772  24m  888 S  9.9  0.0   1481:52 sap1005   2895 root      20   0 27432  15m 1268 S  0.7  0.0 640:22.07 safe_TsysAgent.

简述:

  • 第一行: 等同uptime
  • 第二行:进程相关 

    221: 进程总数 。

    1:  运行进程数目。正在运行和等待运行的进程,教科书上的:就绪态与运行态。

    220: 阻塞进程数目。等待IO或者调用sleep函数。

    0:  停止状态进程数目。收到STOP信号后获得停止状态,收到CONT信号,失去STOP状态;ctrl+z发送STOP信号。

    0:  僵尸进程数目。子进程已死,但没有被父进程回收,僵尸。

  • 第三行:等同mpstat
  • 第四行:等同free

列表标题

 PID:     进程标识符 USER:    进程拥有者 PR:      进程优先权  [数越小,进程优先级越高] NI:      NICE Value [PR = PR + NI,因此,NI为负数,PR小,优先级高;NI可以手动调整] VIRT:    进程虚拟内存大小 [进程总得寻址空间大小] RES:     进程实际占用物理内存大小 SHR:     共享内存大小,比如动态链接库 S:       进程状态 CPU:     进程CPU占用率 MEM:     进程内存占用率 TIME+:   进程运行占用的CPU时间 COMMAND: 启动进程的命令

VIRT vs RES vs SHR

RES 进程实际占用物理内存大小,与%MEM强相关。SHR 可以其他进程共享的内存空间。比如,依赖一个C公共库,那么整个库的地址空间被加入VIRT,而被载入内存的公共库函数被算入RESSHR

iostat

系统IO性能检测利器

# -d 取消显示CPU信息,-x 显示扩展信息[~] iostat -d -x 2Linux 2.6.32.43-tlinux-1.0.10-default  03/23/16        _x86_64_        (24 CPU)

Device: rrqm/s  wrqm/s  r/s   w/s   rsec/s  wsec/s avgrq-sz avgqu-sz   await  svctm  %utilsda     0.00    20.50   0.00  4.00    0.00  196.00    49.00     0.04   10.50  10.00   4.00sdb     0.00 12194.00   0.00 93.00    0.00 91644.00  985.42   143.00 2231.66  10.75 100.00sdc     0.00  3480.00   0.50 85.50    4.00 20900.00  243.07    49.79  380.53  10.12  87.00

rrqm/s and wrqm/s 每秒合并读写请求数。简单的说,就是合并读写请求,临近的扇区,一起读写。

rsec/s and wsec/s 设备每秒读写扇区数。

r/s and w/s 每秒向该设备提出的读写请求次数,该数据为合并读写请求后的数据。

avgrq-sz 每个请求的平均读写扇区数。 avgrp-sz
= (rsec/s + wsec/s) / (r/s + w/s)

avgqu-sz平均队列长度

svctm设备处理请求的平均时间(ms)。指的是读写请求脱离linux内核调度,进入设备读写阶段所耗时间。

await IO请求的平均响应时间。await = svctm
+ quitm (等于 设备处理时间 + 队列等待时间)

util可以简单的理解为:单位时间内,设备繁忙比。比如,10秒钟,有6秒在进行读写,则util
= 60%

    计算公式:util = 单位时间内读写次数 * 每次平均读写时间 * 100% = ( r + w ) * ( svctm / 1000 ) * 100%

  • quitm 为虚拟值,可以通过await
    - svctm
    获得。
  • util 高,并不代表磁盘成为了瓶颈,可能磁盘仅是满负荷运行,但如果quitm过高,则说明等待时间高,IO成为瓶颈。

磁盘性能不佳:svctm高,await高;内核IO调度不佳:await高,svctm低

注意

  • 不要使用iostat直接查看,iostat显示系统开机到当前统计点的平均,没有参考价值
  • 使用 iostat -d -x 2即加上统计间隔,统计时间间隔内的数据
  • awaitsvctm差别过大,则IO成为瓶颈

参考

netstat

查看系统网络连接

查看监听套接字 -a

#默认不显示监听套接字netstat -a

禁止dns查找 -n

#netstat默认通过dns查找,将ip映射成主机名,速度慢netstat -an

查看套接字所属进程pid -p

[~]# netstat -anpActive Internet connections (servers and established)Proto Recv-Q Send-Q Local Address   Foreign Address    State    PID/Program name   tcp        0      0 x.x:56000        0.0.0.0:*        LISTEN      25310/sshd 

指定协议

-t:tcp

-u:udp

[~]# netstat -anuActive Internet connections (servers and established)Proto Recv-Q Send-Q  Local Address    Foreign Address       State      udp        0      0   x.x:46469        0.0.0.0:* 

Recv-Q: 套接字收到数据放到缓冲区中,还没有被进程读走

Send-Q: 进程将数据写入缓冲区,还没有发送出去

NOTE: 通常Recv-Q与Send-Q都为0,如果二者一直不为0,则需要进行排查。

[email protected]:~$ netstat -anp | grep serverActive Internet connections (servers and established)tcp   0      0 127.0.0.1:8989          0.0.0.0:*          LISTEN      1277/server     tcp  65      0 127.0.0.1:8989          127.0.0.1:55785    ESTABLISHED 1278/server 

client 不停的向server发送数据,而server一直阻塞不读取client发送的数据,导致数据在server缓冲区中积压。

vmstat

[[email protected]153_92 /data/chengsun/code/mpstat]# vmstat -S m 2        procs -----------memory----------   ---swap-- -----io---- --system--  ------cpu------ r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs      us sy id wa st 0  0      3  34714   3007  18715    0    0     0     5    0    0       1  0 99  0  0

procs

r:等待运行的进程数目,即run queue中进程数。

b:阻塞状态的进程数目。

Run queue: 就绪态进程,进程调度器从run
queue
取进程运行。

memory

swpd: 交换空间使用量

free: 物理内存可用量

buff: buffer使用内存大小

cache:cache使用内存大小

free命令进行详细查看

swap

si:每秒从交换空间移到物理内存的数据量。

so:每秒从物理内存移到交换空间的数据量。

如果siso过大,则说明内存成为了瓶颈。数据不停的在内存与交换空间移动。

io

bi:每秒从块设备读入的数据量

bo:每秒向块设备写入的数据量

NOTE: 网卡与硬盘都属于块设备。

system

in: 每秒中断数。

cs: 每秒上下文切换次数。进程过多,此值较大。

如果IO中bi或者bo过大,则in也会过高,因为CPU通过中断来获取IO读写通知。

cpu

us: 用户空间CPU耗时百分比

sy: 内核空间CPU耗时百分比

id: CPU空闲时间耗时百分比

wa: CPU等待IO耗时百分比

st: 虚拟机相关,忽略

NOTE: 同mpstat。

tcpdump

常用参数

指定接口 -i

# 默认监听eth0tcpdump -i eth1

# 关闭dns解析tcpdump -n -i eth1

指定协议

tcpdump -n -i eth1 tcp

支持协议有:tcp,udp,icmp,ip等

指定端口

tcpdump -n -i eth1 port 36000

指定ip

#src tcpdump -n -i eth1 src x.x.x.x

#dsttcpdump -n -i eth1 dst x.x.x.x

显示mac地址-e

tcpdump -n -i eth1 -e

过滤组合

且:&& or and

或:|| or or

非:!

#指定源ip与目的端口tcpdump -n -i eth1 "src host 10.4.83.17 && dst port 36000"

#指定ip与协议tcpdump -n -i eth1 "src host 10.4.83.17 and tcp"

#排除tcp协议tcpdump -n -i eth1 "src 10.4.83.17 and ! tcp"

#指定mac地址

详细过滤参数TCPDUMP filters

显示方式

-A: ASCII 方式显示

-XX: 十六进制与ASCII方式显示

[~]# tcpdump -i eth1 -n -XX0x0000:  0009 0f09 0002 0016 3ea5 8e79 0800 4500  ........>..y..E.0x0010:  0b6c f20d 4000 4006 6fec 0a01 995c 0aaa  [email protected]@.o....\..0x0020:  1f8b dd93 2704 a349 18b5 baa0 debc 8010  ....‘..I........

NOTE: tcpdump默认捕获每个包的前68个字节,如果需要调整,通过参数-s指定。 -s0代表捕获全部包内容。

读写文件

-w: 捕获内容写入文件

-r: 解析捕获文件内容

# 捕获tcpdump -i eth1 -n -w net.packet

# 解析tcpdump -n -r net.packet

字段含义

[#]# tcpdump -n -i eth118:38:01.452434 IP 1.1.1.2.49347 > 1.1.1.8.etlservicemgr: Flags [S], seq 2981118633, win 14600, options [mss 1460,sackOK,TS val 1073478406 ecr 0,nop,wscale 7], length 0

18:38:01.457968 IP 1.1.1.6.webcache > 1.1.1.2.52794: Flags [.], ack 2109036236, win 14, options [nop,nop,TS val 1484369469 ecr 1073478397], length 0

  • 18:38:01.452434 时间戳,18时38分01秒452434微秒
  • IP 协议
  • 1.1.1.2.49347 源IP与源端口
  • 1.1.1.8.etlservicemgr 目的IP与目的端口
  • Flags TCP状态。
  • seq 2981118633 TCP SYN序号
  • win 14600 源机器窗口大小
  • potions TCP选项
  • length TCP数据包大小,SYN包没有数据,因此为0

Flags

[S] - SYN (Start Connection)

[.] - No Flag Set

[P] - PSH (Push Data)

[F] - FIN (Finish Connection)

[R] - RST (Reset Connection)

时间: 2024-08-11 00:38:58

Linux 系统监测工具的相关文章

pyDash:一个基于 web 的 Linux 性能监测工具

pyDash 是一个轻量且基于 web 的 Linux 性能监测工具,它是用 Python 和 Django 加上 Chart.js 来写的.经测试,在下面这些主流 Linux 发行版上可运行:CentOS.Fedora.Ubuntu.Debian.Raspbian 以及 Pidora .-- Ravi Saive 本文导航 -如何在 Linux 系统下安装 pyDash12% pyDash 是一个轻量且基于 web 的 Linux 性能监测工具[1],它是用 Python 和 Django[2

[转]Perfmon - Windows 自带系统监测工具

以下内容转自:http://blog.csdn.net/oscar999/article/details/7918385 ---------------------------分割线-------------------------------------- 一. 简述 可以用于监视CPU使用率.内存使用率.硬盘读写速度.网络速度等. Perfmon提供了图表化的系统性能实时监视器.性能日志和警报管理,系统的性能日志可定义为二进制文件.文本文件.SQLSERVER表记录等方式,可以很方便地使用第

Linux 性能监测工具总结

前言: Linux系统出现问题时,我们不仅需要查看系统日志信息,而且还要使用大量的性能监测工具来判断究竟是哪一部分(内存.CPU.硬盘--)出了问题.在Linux系统中,所有的运行参数保存在虚拟目录/proc中,换句话说,我们使用的性能监控工具取到的数据值实际上就是源自于这个目录,当涉及到系统高估时,我们就可以修改/proc目录中的相关参数了,当然有些是不能乱改的.下面就让我们了解一下这些常用的性能监控工具. 1.uptimeuptime命令用于查看服务器运行了多长时间以及有多少个用户登录,快速

linux性能监测工具

cpu篇:CPU 也是一种硬件资源,和任何其他硬件设备一样也需要驱动和管理程序才能使用,我们可以把内核的进程调度看作是 CPU 的管理程序,用来管理和分配 CPU 资源,合理安排进程抢占 CPU,并决定哪个进程该使用 CPU.哪个进程该等待 要想监测和理解 CPU 的性能需要知道一些的操作系统的基本知识,比如:中断.进程调度.进程上下文切换.可运行 队列等.这里 VPSee 用个例子来简单介绍一下这些概念和他们的关系,CPU 很无辜,是个任劳任怨的打工仔,每时每 刻都有工作在做(进程.线程)并且

20个Linux系统监视工具

需要监视Linux服务器的性能?试试这些内置的命令和一些附加的工具吧.大多数Linux发行版都集成了一些监视工具.这些工具可以获取有关系统活动的信息的详细指标.通过这些工具,你可以发现产生系统性能问题可能存在原因.下面讨论的是一些最基本的命令,它涉及到系统分析和调试服务器等一些问题,如:1.    找出系统瓶颈问题.2.    磁盘 (储存) 瓶颈问题.3.    CPU和内存瓶颈问题.4.    网络瓶颈问题.# 1: top – 查看活动进程的命令TOP工具能够实时显示系统中各个进程的资源占

Linux系统常用工具集

整理Linux系统下一些日常工作中常用工具,旨在提高效率: 1.截图软件Shutter 2.通讯聊天工具pidgin 3.守护进程工具daemontools 4.远程桌面服务TigerVNC 5.Maven软件包管理工具Apache Archiva 持续更新补充中.......

linux网络监测工具iftop、ntop、iperf、nmap的部署及使用

网络监测工具iftop   iftop是一个时时网卡流量监控工具,类似top命令,它可以监控指定网卡的时时流量.端口连接信息.反向解析ip等.对于网络故障流量异常监测很有效 安装:yum install -y iftop   #机器上用的阿里的yum源 执行命令 :      iftop -P -i eno16777736 iftop界面相关说明 界面上面显示的是类似刻度尺的刻度范围,为显示流量图形的长条作标尺用的. 中间的<= =>这两个左右箭头,表示的是流量的方向. TX:发送流量 RX:

Linux系统安全审计工具Lynis

Lynis是一款开源的系统安全审计功能工具,该工具由一系列的shell脚本构成系统进行全面安全检查的工具,可以发现系统.账户.进程等多个层面所存在的安全风险,并以直观的方式逐一列出,支持目前主流的Linux平台.一.LYNIS检查项目大致如下     系统程序是否被置换或篡改,避免管理者或使用者执行恶意程序     开机程序及系统设置,并检测目前已开启的服务     系统中的帐号信息(用户.组)及帐号验证方式     是否存在有风险的三方软件     防火墙设置是否开启    Web Serve

Perfmon - Windows 自带系统监测工具

本文转载自oscar999 一. 简述 可以用于监视CPU使用率.内存使用率.硬盘读写速度.网络速度等. Perfmon提供了图表化的系统性能实时监视器.性能日志和警报管理,系统的性能日志可定义为二进制文件.文本文件.SQLSERVER表记录等方式,可以很方便地使用第三方工具进行性能分析. perfmon.exe 文件位于C:\Windows\System32目录下. 使用方法: 1)开始 - 运行,输入 perfmon 后回车,即可打开perfmon.exe. 2)在 perfmon.exe