linux硬件资源监控_linux 监控硬件资源使用 图形 - CSDN
  • 每个 Linux 系统管理员都应该知道如何验证硬件资源和主要进程的完整性和可用性。另外,基于每个用户设置资源限制也是其中一项必备技能。
    
    
    
    导读 每个 Linux 系统管理员都应该知道如何验证硬件、资源和主要进程的完整性和可用性。另外,基于每个用户设置资源限制也是其中一项必备技能。

    在这篇文章中,我们会介绍一些能够确保系统硬件和软件正常工作的方法,这些方法能够避免潜在的会导致生产环境下线或钱财损失的问题发生。

    报告 Linux 进程统计信息

    你可以使用 mpstat 单独查看每个处理器或者系统整体的活动,可以是每次一个快照或者动态更新。

    为了使用这个工具,你首先需要安装 sysstat

    # yum update && yum install sysstat              [基于 CentOS 的系统]
    # aptitutde update && aptitude install sysstat   [基于 Ubuntu 的系统]
    # zypper update && zypper install sysstat        [基于 openSUSE 的系统]
    

    你可以在 Linux 中学习 Sysstat 和其中的工具 mpstat、pidstat、iostat 和 sar,了解更多和 sysstat 和其中的工具相关的信息。

    安装完 mpstat 之后,就可以使用它生成处理器统计信息的报告。

    你可以使用下面的命令每隔 2 秒显示所有 CPU(用-P ALL 表示)的 CPU 利用率(-u),共显示3次。

    # mpstat -P ALL -u 2 3

    示例输出:

    Linux 3.19.0-32-generic (tecmint.com)   Wednesday 30 March 2016     _x86_64_    (4 CPU)
    
    11:41:07  IST  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
    11:41:09  IST  all    5.85    0.00    1.12    0.12    0.00    0.00    0.00    0.00    0.00   92.91
    11:41:09  IST    0    4.48    0.00    1.00    0.00    0.00    0.00    0.00    0.00    0.00   94.53
    11:41:09  IST    1    2.50    0.00    0.50    0.00    0.00    0.00    0.00    0.00    0.00   97.00
    11:41:09  IST    2    6.44    0.00    0.99    0.00    0.00    0.00    0.00    0.00    0.00   92.57
    11:41:09  IST    3   10.45    0.00    1.99    0.00    0.00    0.00    0.00    0.00    0.00   87.56
    
    11:41:09  IST  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
    11:41:11  IST  all   11.60    0.12    1.12    0.50    0.00    0.00    0.00    0.00    0.00   86.66
    11:41:11  IST    0   10.50    0.00    1.00    0.00    0.00    0.00    0.00    0.00    0.00   88.50
    11:41:11  IST    1   14.36    0.00    1.49    2.48    0.00    0.00    0.00    0.00    0.00   81.68
    11:41:11  IST    2    2.00    0.50    1.00    0.00    0.00    0.00    0.00    0.00    0.00   96.50
    11:41:11  IST    3   19.40    0.00    1.00    0.00    0.00    0.00    0.00    0.00    0.00   79.60
    
    11:41:11  IST  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
    11:41:13  IST  all    5.69    0.00    1.24    0.00    0.00    0.00    0.00    0.00    0.00   93.07
    11:41:13  IST    0    2.97    0.00    1.49    0.00    0.00    0.00    0.00    0.00    0.00   95.54
    11:41:13  IST    1   10.78    0.00    1.47    0.00    0.00    0.00    0.00    0.00    0.00   87.75
    11:41:13  IST    2    2.00    0.00    1.00    0.00    0.00    0.00    0.00    0.00    0.00   97.00
    11:41:13  IST    3    6.93    0.00    0.50    0.00    0.00    0.00    0.00    0.00    0.00   92.57
    
    Average:     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
    Average:     all    7.71    0.04    1.16    0.21    0.00    0.00    0.00    0.00    0.00   90.89
    Average:       0    5.97    0.00    1.16    0.00    0.00    0.00    0.00    0.00    0.00   92.87
    Average:       1    9.24    0.00    1.16    0.83    0.00    0.00    0.00    0.00    0.00   88.78
    Average:       2    3.49    0.17    1.00    0.00    0.00    0.00    0.00    0.00    0.00   95.35
    Average:       3   12.25    0.00    1.16    0.00    0.00    0.00    0.00    0.00    0.00   86.59
    

    要查看指定的 CPU(在下面的例子中是 CPU 0),可以使用:

    # mpstat -P 0 -u 2 3

    示例输出:

    Linux 3.19.0-32-generic (tecmint.com)   Wednesday 30 March 2016     _x86_64_    (4 CPU)
    
    11:42:08  IST  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
    11:42:10  IST    0    3.00    0.00    0.50    0.00    0.00    0.00    0.00    0.00    0.00   96.50
    11:42:12  IST    0    4.08    0.00    0.00    2.55    0.00    0.00    0.00    0.00    0.00   93.37
    11:42:14  IST    0    9.74    0.00    0.51    0.00    0.00    0.00    0.00    0.00    0.00   89.74
    Average:       0    5.58    0.00    0.34    0.85    0.00    0.00    0.00    0.00    0.00   93.23
    

    上面命令的输出包括这些列:
    CPU: 整数表示的处理器号或者 all 表示所有处理器的平均值。
    %usr: 运行在用户级别的应用的 CPU 利用率百分数。
    %nice: 和 %usr相同,但有 nice 优先级。
    %sys: 执行内核应用的 CPU 利用率百分比。这不包括用于处理中断或者硬件请求的时间。
    %iowait: 指定(或所有)CPU 的空闲时间百分比,这表示当前 CPU 处于 I/O 操作密集的状态。
    %irq: 用于处理硬件中断的时间所占百分比。
    %soft: 和%irq相同,但是是软中断。
    %steal: 虚拟机非自主等待(时间片窃取)所占时间的百分比,即当虚拟机在竞争 CPU 时所从虚拟机管理程序那里“赢得”的时间。应该保持这个值尽可能小。如果这个值很大,意味着虚拟机正在或者将要停止运转。
    %guest: 运行虚拟处理器所用的时间百分比。
    %idle: CPU 没有运行任何任务所占时间的百分比。如果你观察到这个值很小,意味着系统负载很重。在这种情况下,你需要查看详细的进程列表、以及下面将要讨论的内容来确定这是什么原因导致的。
    运行下面的命令使处理器处于极高负载,然后在另一个终端执行 mpstat 命令:

    # dd if=/dev/zero of=test.iso bs=1G count=1
    # mpstat -u -P 0 2 3
    # ping -f localhost # Interrupt with Ctrl + C after mpstat below completes
    # mpstat -u -P 0 2 3
    

    最后,和 “正常” 情况下 mpstat 的输出作比较:

    如何灵活运用Linux 进程资源监控和进程限制如何灵活运用Linux 进程资源监控和进程限制

    正如你在上面图示中看到的,在前面两个例子中,根据%idle的值可以判断 CPU 0 负载很高。

    在下一部分,我们会讨论如何识别资源饥饿型进程,如何获取更多和它们相关的信息,以及如何采取恰当的措施。

    Linux 进程报告

    我们可以使用有名的ps命令,用-eo选项(根据用户定义格式选中所有进程) 和--sort选项(指定自定义排序顺序)按照 CPU 使用率排序列出进程,例如:

    # ps -eo pid,ppid,cmd,%cpu,%mem --sort=-%cpu

    上面的命令只会显示PIDPPID、和进程相关的命令、 CPU 使用率以及 RAM 使用率,并按照 CPU 使用率降序排序。创建 .iso 文件的时候运行上面的命令,下面是输出的前面几行:
    如何灵活运用Linux 进程资源监控和进程限制如何灵活运用Linux 进程资源监控和进程限制

    一旦我们找到了感兴趣的进程(例如PID=2822的进程),我们就可以进入/proc/PID(本例中是/proc/2822) 列出目录内容。

    这个目录就是进程运行的时候保存多个关于该进程详细信息的文件和子目录的目录。

    例如:

    /proc/2822/io:包括该进程的 IO 统计信息(IO 操作时的读写字符数)。

    /proc/2822/attr/current:显示了进程当前的 SELinux 安全属性。

    /proc/2822/cgroup:如果启用了 CONFIGCGROUPS 内核设置选项,这会显示该进程所属的控制组(简称cgroups),你可以使用下面命令验证是否启用了 CONFIGCGROUPS:

    # cat /boot/config-$(uname -r) | grep -i cgroups

    如果启用了该选项,你应该看到:

    CONFIG_CGROUPS=y

    根据红帽企业版 Linux 7 资源管理指南第一到四章的内容、openSUSE 系统分析和调优指南第九章、Ubuntu 14.04 服务器文档Control Groups 章节,你可以使用cgroups管理每个进程允许使用的资源数目。

    /proc/2822/fd这个目录包含每个打开的描述进程的文件的符号链接。下面的截图显示了 tty1(第一个终端) 中创建 .iso 镜像进程的相关信息:

    如何灵活运用Linux 进程资源监控和进程限制如何灵活运用Linux 进程资源监控和进程限制

    上面的截图显示 stdin(文件描述符 0)、stdout(文件描述符 1)、stderr(文件描述符 2) 相应地被映射到 /dev/zero/root/test.iso 和 /dev/tty1

    在 Linux 中为每个用户设置资源限制

    如果你不够小心、让任意用户使用不受限制的进程数,最终你可能会遇到意外的系统关机或者由于系统进入不可用的状态而被锁住。为了防止这种情况发生,你应该为用户可以启动的进程数目设置上限。

    你可以在 /etc/security/limits.conf 文件末尾添加下面一行来设置限制:* hard nproc 10
    第一个字段可以用来表示一个用户、组或者所有人(*), 第二个字段强制限制可以使用的进程数目(nproc) 为 10。退出并重新登录就可以使设置生效。

    然后,让我们来看看非 root 用户(合法用户或非法用户) 试图引起 shell fork 炸弹时会发生什么。如果我们没有设置限制, shell fork 炸弹会无限制地启动函数的两个实例,然后无限循环地复制任意一个实例。最终导致你的系统卡死。

    但是,如果使用了上面的限制,fort 炸弹就不会成功,但用户仍然会被锁在外面直到系统管理员杀死相关的进程。

    如何灵活运用Linux 进程资源监控和进程限制如何灵活运用Linux 进程资源监控和进程限制

    提示limits.conf文件中可以查看其它 ulimit 可以更改的限制。

    其它 Linux 进程管理工具

    除了上面讨论的工具, 一个系统管理员还可能需要:

    a) 通过使用 renice 调整执行优先级(系统资源的使用)。这意味着内核会根据分配的优先级(众所周知的 “niceness”,它是一个范围从-20到19的整数)给进程分配更多或更少的系统资源。

    这个值越小,执行优先级越高。普通用户(而非 root)只能调高他们所有的进程的 niceness 值(意味着更低的优先级),而 root 用户可以调高或调低任何进程的 niceness 值。

    renice 命令的基本语法如下:

    # renice [-n] <new priority> <UID, GID, PGID, or empty> identifier

    如果 new priority 后面的参数没有(为空),默认就是 PID。在这种情况下,PID=identifier 的进程的 niceness 值会被设置为<new priority>

    b) 需要的时候中断一个进程的正常执行。这也就是通常所说的“杀死”进程。实质上,这意味着给进程发送一个信号使它恰当地结束运行并以有序的方式释放任何占用的资源。

    按照下面的方式使用 kill 命令杀死进程:

    # kill PID

    另外,你也可以使用pkill结束指定用户(-u)、指定组(-G), 甚至有共同的父进程 ID (-P)的所有进程。这些选项后面可以使用数字或者名称表示的标识符。

    # pkill [options] identifier

    例如:

    杀死组GID=1000的所有进程.

    # pkill -G 1000

    杀死PPID 是 4993的所有进程.

    # pkill -P 4993

    在运行pkill之前,先用pgrep测试结果、或者使用-l选项列出进程名称是一个很好的办法。它需要和pkill相同的参数、但是只会返回进程的 PID(而不会有其它操作),而pkill会杀死进程。

    # pgrep -l -u gacanepa

    用下面的图片说明:

    如何灵活运用Linux 进程资源监控和进程限制如何灵活运用Linux 进程资源监控和进程限制

    总结

    在这篇文章中我们探讨了一些监控资源使用的方法,以便验证 Linux 系统中重要硬件和软件组件的完整性和可用性。我们也学习了如何在特殊情况下采取恰当的措施(通过调整给定进程的执行优先级或者结束进程)。我们希望本篇中介绍的概念能对你有所帮助。


    本文转载自:http://www.linuxprobe.com/linux-process-monitoring.html

    免费提供最新Linux技术教程书籍,为开源技术爱好者努力做得更多更好:http://www.linuxprobe.com/


    展开全文
  • jstat

    linux 监控命令 nmon dstat  top iostat vmstat iftop iotop lsof netstat

    服务器硬件资源指标(cpu、内存、磁盘、网络) dstat top iotop  iostat  vmstat 

    Iostat/iotop:Iostat 查询IO详细信息 ;iotop 查询IO被哪个进行消耗 (Iostat -xm 5)

    lsof:查询进行文件句柄数,结合使用的命令为 ulimit -a | grep 'open files'

    netstat:查询网络连接情况

    Iftop:查询网卡流量

    一、dstat -tcpmail 命令

    安装命令  yum -y install dstat



    cpu利用率 百分比 
    usr用户cpu占了51%
    sys 系统cpu 占了3%
    Idl 闲置cpu 占了45%
    wai 处于等待的进程消耗的cpu

    hip  sip 分表代表硬中断 、软中断次数

    procs 代表进程

    单位个数

    memory

    内存使用率

    单位大小

    Used 使用 

    Buff  作为buffer cache的内存,对块设备的读写进行缓冲

    Cach 作为page cache的内存, 文件系统的cache。

    Free 空闲的物理内存

    不关注这些 ,关注swap 交换缓存 一直使用 系统会出问题   

    • si: 交换内存使用,由磁盘调入内存
    • so: 交换内存使用,由内存调入磁盘

    disk

    磁盘读写dsk  (read writ)

    磁盘看 iostat 中util 如果这个值接近百分之百说明 磁盘有瓶颈

    net

    网络收发(recv  send) 

    paging

    分页统计,大多数情况下这两个数是 0.

    system   

    int (interrupt)系统中断次数、csw (context  switch)代表上下文切换次数

    load avg

    1分钟 平均load ,5分钟平均load  10分钟平均load

    查看网络
    ethool ech0

    Speed: 1000Mb/s   125MB/s 容量 网络容量超过125m 就有问题

      1MB=8Mb

    byte是字节数,bit是位数

    Mbit 是比特位数

    二、iostat   -xm 2  命令 

    iostat用于输出CPU和磁盘输入输出、分区、网络文件系统NFS相关的统计信息。iostat命令用于监控系统设备的输入/输出情况,并生成报告,以便根据统计报告修改系统配置,获取更优的性能。

    帮助查看瓶颈是不是在磁盘这  重点关注之一 util 磁盘利用率 如果达到百分之百了说明 磁盘已经到最大了,出现瓶颈了

    await 代表一次io 在磁盘这的延迟多少毫秒    r/s  w/s  代表每秒读多少次,每秒写多少次


    三、vmstat  1   命令 

    代表每1秒钟输出vmstat 的信息

    swap   si so   有持续不为零 在swap 这存在瓶颈


    r 等待执行的任务数,我测试的服务器目前CPU比较空闲,没什么程序在跑,当这个值超过了CPU数目,就会出现CPU瓶颈了。这个也和top的负载有关系,一般负载超过了3就比较高,超过了5就高,超过了10就不正常了,服务器的状态很危险。top的负载类似每秒的运行队列。如果运行队列过大,表示你的CPU很繁忙,一般会造成CPU使用率很高。

    b 等待IO的进程数量

    memory

    swpd 虚拟内存已使用的大小,如果大于0,表示你的机器物理内存不足了,如果不是程序内存泄露的原因,那么你该升级内存了或者把耗内存的任务迁移到其他机器。

    free   空闲的物理内存的大小,我的机器内存总共G,剩余1381M。

    buff   Linux/Unix系统是用来存储,目录里面有什么内容,权限等的缓存,我本机大概占用38M,做缓冲区内存

    cache cache文件目录系统缓存)做高速缓冲区内存

    swap

    si  每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存不够用或者内存泄露了,要查找耗内存进程解决掉。我的机器内存充裕,一切正常。

    so  每秒虚拟内存写入磁盘的大小,如果这个值大于0,表示物理内存不够用或者内存泄露了,要查找耗内存进程解决掉。我的机器内存充裕,一切正常。

    io 读写

    bi  bi是从磁盘读的速度

    bobo写数据到磁盘的速率

    system

    in 每秒CPU的中断次数,包括时间中断

    cs 每秒上下文切换次数,例如我们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好,太大了,要考虑调低线程或者进程的数目,例如在apache和nginx这种web服务器中,我们一般做性能测试时会进行几千并发甚至几万并发的测试,选择web服务器的进程可以由进程或者线程的峰值一直下调,压测,直到cs到一个比较小的值,这个进程和线程数就是比较合适的值了。系统调用也是,每次调用系统函数,我们的代码就会进入内核空间,导致上下文切换,这个是很耗资源,也要尽量避免频繁调用系统函数。上下文切换次数过多表示你的CPU大部分浪费在上下文切换,导致CPU干正经事的时间少了,CPU没有充分利用,是不可取的。
    cpu
    us 用户CPU时间,us的值比较高时,说明用户进程消耗的cpu时间多,但是如果长期超过50%的使用,那么我们就该考虑优化程序算法或其他措施了

    sy 系统CPU时间,sys的值过高时,说明系统内核消耗的cpu资源多,这个不是良性的表现,我们应该检查原因。如果太高,表示系统调用时间长,例如是IO操作频繁。

    id  空闲 CPU时间,一般来说,id + us + sy = 100,一般我认为id是空闲CPU使用率,us是用户CPU使用率,sy是系统CPU使用率。

    wa 等待IO CPU时间。Wa过高时,说明io等待比较严重,这可能是由于磁盘大量随机访问造成的,也有可能是磁盘的带宽出现瓶颈。

    st 从虚拟设备获得的时间

    四、top命令  输入完top  按数字1  就出来几核cpu ,进程的情况
    Top –p PID H:检查进行下线程CPU消耗


    01:06:48    当前时间
    up 1:22    系统运行时间,格式为时:分
    1 user    当前登录用户数
    load average: 0.06, 0.60, 0.48    系统负载,即任务队列的平均长度。三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。
    第二、三行为进程和CPU的信息。当有多个CPU时,这些内容可能会超过两行。内容如下:

    total 进程总数
    running 正在运行的进程数
    sleeping 睡眠的进程数
    stopped 停止的进程数
    zombie 僵尸进程数
    Cpu(s): 
    0.3% us 用户空间占用CPU百分比
    1.0% sy 内核空间占用CPU百分比
    0.0% ni 用户进程空间内改变过优先级的进程占用CPU百分比
    98.7% id 空闲CPU百分比
    0.0% wa 等待输入输出的CPU时间百分比
    0.0%hi:硬件CPU中断占用百分比
    0.0%si:软中断占用百分比
    0.0%st:虚拟机占用百分比
    最后两行为内存信息。内容如下:

    Mem:
    191272k total    物理内存总量
    173656k used    使用的物理内存总量
    17616k free    空闲内存总量
    22052k buffers    用作内核缓存的内存量
    Swap: 
    192772k total    交换区总量
    0k used    使用的交换区总量
    192772k free    空闲交换区总量
    123988k cached    缓冲的交换区总量,内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,该数值即为这些内容已存在于内存中的交换区的大小,相应的内存再次被换出时可不必再对交换区写入。

    进程信息区统计信息区域的下方显示了各个进程的详细信息。首先来认识一下各列的含义。

    序号  列名    含义
    a    PID     进程id
    b    PPID    父进程id
    c    RUSER   Real user name
    d    UID     进程所有者的用户id
    e    USER    进程所有者的用户名
    f    GROUP   进程所有者的组名
    g    TTY     启动进程的终端名。不是从终端启动的进程则显示为 ?
    h    PR      优先级
    i    NI      nice值。负值表示高优先级,正值表示低优先级
    j    P       最后使用的CPU,仅在多CPU环境下有意义
    k    %CPU    上次更新到现在的CPU时间占用百分比
    l    TIME    进程使用的CPU时间总计,单位秒
    m    TIME+   进程使用的CPU时间总计,单位1/100秒
    n    %MEM    进程使用的物理内存百分比
    o    VIRT    进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
    p    SWAP    进程使用的虚拟内存中,被换出的大小,单位kb。
    q    RES     进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
    r    CODE    可执行代码占用的物理内存大小,单位kb
    s    DATA    可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
    t    SHR     共享内存大小,单位kb
    u    nFLT    页面错误次数
    v    nDRT    最后一次写入到现在,被修改过的页面数。
    w    S       进程状态(D=不可中断的睡眠状态,R=运行,S=睡眠,T=跟踪/停止,Z=僵尸进程)
    x    COMMAND 命令名/命令行
    y    WCHAN   若该进程在睡眠,则显示睡眠中的系统函数名
    z    Flags   任务标志,参考 sched.h

    iftop

    五、iotop 查看当前系统进程的磁盘读写情况。最后一列代表进程的名字


    六、lsof、

    七、netstat、

    八、Iftop、

    JVM监控  jvisualvm  jconsole jstat    jstack  jmap    tprofiler greys

    内存溢出out of memory,JVM分为堆内存溢出和perm区内存溢出,堆内存溢出由什么导致的,怎么定位分析。

    不断的new 对象,不释放 ,会导致内存溢出

    public class Test {
    public static void main(String[] args) throws InterruptecException {
    for(int i =0; i<1000;i++){

    Thread.sleep(1000);
    System.out.println(i);
    }

    }
    }
    javac Test.java 编译
    java Test 


    jps -l

    JVM原理

    heap 堆  perm是不占对内存的

    new 的对象  在堆内存里面,先放到Eden区,Eden区是有限的,Eden满了后会进行一次YGC,YGC完了之后,还有存活的对象,引用还没有释放的对象,被移到S0区,S0区满了之后,Eden还往S0区放,这时,S0于S1空间调换,S0把空间都给S1,S0继续接受YGC完之后存活的对象。S0、S1满了,会往Old区里存,同时进行YGC。Old区满了之后,进行FGC一次,整个堆不在接受新new的对象往里存,就相当整个jvm不提供服务了。FGC的花的时 间,尽量要少FGC,第二要尽量让FGC时间短。堆里存的new 的对象

    Perm 区存的类。对象分两种,非类的对象,类对象object。Old区满了、 Perm区满了 也会存在FGC。


    一、jvisualvm   找到jdk 的bin目录 用jvisualvm 
    监视 线程 visual GC 这三个
    进行线程dump  应用线程mian   从最低下看

    用命令打dump   ps -l  查看java pid号,jstack 进程号 显示java进程的dump 

    jstack 进程号 >jatack.log 就会有日志

    输出成一个文件 在log里就有 

    简介

    VisualVM 是一个工具,它提供了一个可视界面,用于查看 Java 虚拟机 (Java Virtual Machine, JVM) 上运行的基于 Java 技术的应用程序(Java 应用程序)的详细信息。VisualVM 对 Java Development Kit (JDK) 工具所检索的 JVM 软件相关数据进行组织,并通过一种使您可以快速查看有关多个 Java 应用程序的数据的方式提供该信息。您可以查看本地应用程序以及远程主机上运行的应用程序的相关数据。此外,还可以捕获有关 JVM 软件实例的数据,并将该数据保存到本地系统,以供后期查看或与其他用户共享。

    VisualVM 几乎涉及了jvm调优的方方面面。同样是在jdk/bin目录下面双击jvisualvm.exe既可使用,启动起来后和jconsole 一样同样可以选择本地和远程,如果需要监控远程同样需要配置相关参数,主界面如下;

    VisualVM可以根据需要安装不同的插件,每个插件的关注点都不同,有的主要监控GC,有的主要监控内存,有的监控线程等。

    如何安装:

    1、从主菜单中选择“工具”>“插件”。
    2、在“可用插件”标签中,选中该插件的“安装”复选框。单击“安装”。
    3、逐步完成插件安装程序。

    我这里以 Eclipse(pid 22296)为例,双击后直接展开,主界面展示了系统和jvm两大块内容,点击右下方jvm参数和系统属性可以参考详细的参数信息.

    因为VisualVM的插件太多,我这里主要介绍三个我主要使用几个:监控、线程、Visual GC

    监控的主页其实也就是,cpu、内存、类、线程的图表

    线程和jconsole功能没有太大的区别

    Visual GC 是常常使用的一个功能,可以明显的看到年轻代、老年代的内存变化,以及gc频率、gc的时间等。

    以上的功能其实jconsole几乎也有,VisualVM更全面更直观一些,另外VisualVM非常多的其它功能,可以分析dump的内存快照,dump出来的线程快照并且进行分析等,还有其它很多的插件大家可以去探索


    二、jconsole  

    Jconsole(Java Monitoring and Management Console)是从java5开始,在JDK中自带的java监控和管理控制台,用于对JVM中内存,线程和类等的监控,是一个基于JMX(java management extensions)的GUI性能监测工具。jconsole使用jvm的扩展机制获取并展示虚拟机中运行的应用程序的性能和资源消耗等信息。

    直接在jdk/bin目录下点击jconsole.exe即可启动,界面如下:

    在弹出的框中可以选择本机的监控本机的java应用,也可以选择远程的java服务来监控,如果监控远程服务需要在tomcat启动脚本中添加如下代码:

    1
    2
    3
    -Dcom.sun.management.jmxremote.port=6969 
    -Dcom.sun.management.jmxremote.ssl=false 
    -Dcom.sun.management.jmxremote.authenticate=false

    连接进去之后,就可以看到jconsole概览图和主要的功能:概述、内存、线程、类、VM、MBeans

    • 概述,以图表的方式显示出堆内存使用量,活动线程数,已加载的类,CUP占用率的折线图,可以非常清晰的观察在程序执行过程中的变动情况。

    • 内存,主要展示了内存的使用情况,同时可以查看堆和非堆内存的变化值对比,也可以点击执行GC来处罚GC的执行

    • 线程,主界面展示线程数的活动数和峰值,同时点击左下方线程可以查看线程的详细信息,比如线程的状态是什么,堆栈内容等,同时也可以点击“检测死锁”来检查线程之间是否有死锁的情况。

    • 类,主要展示已加载类的相关信息。
    • VM 概要,展示JVM所有信息总览,包括基本信息、线程相关、堆相关、操作系统、VM参数等。
    • Mbean,查看Mbean的属性,方法等。


    三、jstat  -gcutil 进程号 1000       查看gc情况 每一秒显示一次进程号xx 的GC情况 


    S0 s1 e 代表yong区

    O  老年代 o区

    P 持久代

    前五列都代表百分比

    YGC  代表次数相当计数器  单位是次数

     YGCT 代表YGC 一次花了多少时间  秒

    FGC 代表次数相当计数器   单位是次数

    FGCT 代表FGC 一次花了多少时间  秒

    GCT  GCT=YGCT+FGCT 的时间 单位都是秒

    1、O区频繁满了 会产生FGC , 这是系统tps 会骤然下降,过于平凡系统tps 就降为零 ,导致系统挂掉。

    2、O区满了 E区满了  不释放

    3、O p 区满了 都会产生FGC


    写代码 模拟对内存溢出的情况。

    jmap 打印实例信息 

    out of memory jvm内存溢出分两种:heap堆内存溢出和perm区内存溢出。


    Jdk中的bin目录下面 的一些命令

    四、jmap 分析内存 打内存dump的
    jmap(JVM Memory Map)命令用于生成heap dump文件,如果不使用这个命令,还阔以使用-XX:+HeapDumpOnOutOfMemoryError参数来让虚拟机出现OOM的时候·自动生成dump文件。 jmap不仅能生成dump文件,还阔以查询finalize执行队列、Java堆和永久代的详细信息,如当前使用率、当前使用的是哪种收集器等
    option参数
    -dump : 生成堆转储快照
    -finalizerinfo : 显示在F-Queue队列等待Finalizer线程执行finalizer方法的对象
    -heap : 显示Java堆详细信息
    -histo : 显示堆中对象的统计信息
    -permstat : to print permanent generation statistics
    -F : 当-dump没有响应时,强制生成dump快照

    五、 jstack

    jstack用于生成java虚拟机当前时刻的线程快照。线程快照是当前java虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等。 线程出现停顿的时候通过jstack来查看各个线程的调用堆栈,就可以知道没有响应的线程到底在后台做什么事情,或者等待什么资源。 如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的java stack和native stack的信息,从而可以轻松地知道java程序是如何崩溃和在程序何处发生问题。另外,jstack工具还可以附属到正在运行的java程序中,看到当时运行的java程序的java stack和native stack的信息, 如果现在运行的java程序呈现hung的状态,jstack是非常有用的。

    option参数

    -F : 当正常输出请求不被响应时,强制输出线程堆栈
    -l : 除堆栈外,显示关于锁的附加信息
    -m : 如果调用到本地方法的话,可以显示C/C++的堆栈

    jstack + java进程号 ,就



    数据库监控

    redis监控

    展开全文
  • 服务器资源使用情况及硬件监控,是服务器管理员或运维人员必备的技能和工作内容。对于服务器硬件的时时监控,除了需要掌握定的方法外,还常会用到些相应的相关软件程序。当然,运维同仁般都具备定的编程能力,根据...
    服务器资源使用情况及硬件监控,是服务器管理员或运维人员必备的技能和工作内容。对于服务器硬件的时时监控,除了需要掌握定的方法外,还常会用到些相应的相关软件程序。
    当然,运维同仁般都具备定的编程能力,根据服务器情况,编写个便捷、好用和适合自己的服务器硬件监控软件也是很有必要的。
      服务器硬件监控
     
      服务器硬件监控常用方法及相关软件:
      raid卡监控:raid卡常有raid卡megaraid、megaraidsas、lsimpt、smartarray及3ware等几种类型。其相应的监控工具软件有:megarc.bin、MegaCli、mpt-status、hpacucli及tw_cli等工具软件。
        一般品牌服务器例如戴尔、惠普、IBM、华为等 都自带了硬件控制管理系统 。

       服务器故障,能够第一时间发现并处理,是每一个网管都希望能够做到的事情。相对于软件故障,服务器硬件故障更让我们担心。服务器运行超过3年以上,硬盘、内存、电脑每一个组件都会让我们心惊肉跳。尤其是硬盘,故障率高,虽然有RAID保护,但如果一块硬盘损坏未及时发现,再坏一块硬盘将会付出惨重的代价。以RAID5为例,坏一块硬盘后,剩余硬盘压力会很大,如果没有热备盘或及时更换,很容易造成下一块硬盘的损坏。笔者曾亲历过2次1块硬盘损坏未及时发现,另一块硬盘再度损坏的场景。(还好有备机和数据备份,及时还原,仍是一身冷汗)。出了这种问题,数据是否可及时还原,还原后与原系统是否完全一致?不想承担这样的风险,就最好能及时监控、预警、处理,把大代价减成小代价。

         因此硬件故障后及时预警处理,就成为运维&网管最希望达到的效果。目前市面上已经有很多商用的监控软件平台,但单从硬件的角度来说,笔者认为主流服务器厂商自带的监控管理平台更好用、简洁、廉价。如DELL的IDRAC和HP的ILO平台等

         以DELL为例,为大家介绍一下IDRAC的功能和使用,注意:不论是DELL还是HP,远程管理模块都是可选件,在新购服务器时建议都选上,毕竟价格不贵(几百元搞定)。否则等需要时再去购买,安装配置都会比较麻烦,作为生产环境你一定不希望你的服务器关机或重起。

         DELL的远程管理卡在服务器的后面,写着IDRAC字样的网口就是,默认IP:192.168.0.120,账户:root 初始密码:calvin。用笔记本连上网线,将本的IP设成同一段,在IE中输入https://192.168.0.120即可看到登录界面。 管理地址可更改,建议新构网络时直接规划一个管理网段。


    那么问题来了?请看以下文字↓↓↓↓↓

    通过哪些方式可以实现服务器硬件监控


           通过哪些方式可以实现服务器硬件监控?是很多网友们最关心的问题,针对这些以下业内相关专家就来给大家介绍。
          业内相关专家介绍,目前通过2种方式就能实现服务器硬件监控,即:1、使用服务器端check_nrpe调用被监控端的check_openmanage就能来进行实现,大家的话只需要在被监控端安装omsa和check_openmanage就好了;2、也能通过nagios服务器端直接通过check_openmanage来实现服务器硬件监控,使用这种方式的话就是需要在nagios服务端进行安装perl-net-snmp,并在被监控端安装omsa,snmp服务;不过需要提醒大家的是,一定要先能安装snmp服务再来安装omsa,也只有这样的话omsa才能自动进行更改snmp的相关配置文件以达到实现服务器硬件监控目的。
       还有为实现服务器硬件监控配置nagios服务器端的方法步骤为:
       方法步骤一:大家直接需要在nagios服务器上进行安装check_openmanage,详细的情况如下图。
        
       方法步骤二:然后大家就需要能在nagios服务器上进行安装perl-net-snmp了,详细的情况如下图:
        
    当然了为实现服务器硬件监控,配置被监控端的方法步骤为:
       方法步骤一:需要进行安装snmp服务,也就是yum -y install net-snmp net-snmp-devel net-snmp-utils。
       方法步骤二:接着就需要能够进行安装omsa,也就是wget -q -O - http://linux.dell.com/repo/hardware/latest/bootstrap.cgi | bashyum install srvadmin-all。
       方法步骤三:以上方法步骤全部完成后就能再进行查看相关端口了。当有该端口后也就说明了大家已经将srvadmin安装成功,还有当大家进行安装完成后在首次启动的使用也需要动用/opt/dell/srvadmin/sbin/srvadmin-services.sh start,不然的话往往可能会引起出现一些问题的。
       另外为了能够好的实现服务器硬件监控配置,大家就需要对防火墙再进行配置;当大家使用snmp来进行监控的时候,就需要能够对被监控端对nagios服务器开启snmp端口udp161,这样的话整个实现服务器硬件监控配置就全部进行完成了。站长推荐——别不相信微信语音也能被黑客监控到。

    服务器硬件监控之OMSA (戴尔服务器专有其他服务器类似)

    在对服务器的硬件监控上,目前业界主要基于如下两种:

           1、服务器自带的工具,比如HP的hpacucli,DELL的OMSA等

           2、智能平台管理接口 (IPMI,全称Intelligent Platform Management Interface)

           3、通过nagios服务器端直接通过check_openmanage来实现服务器硬件监控,使用这种方式的话就是需要在nagios服务端进行安装perl-net-snmp,并在被监控端安装omsa,snmp服务

           基于以上两种,通过nagios、zabbix或自研运维平台等包裹,进行预警操作。

           由于博主公司使用的服务器全部为DELL PowerEdge系列的,因此博主这里将以如何对DELL PowerEdge系列服务器硬件进行监控这一实际案例为主。


    一、OMSA 介绍

           DELL OMSA的全称为Dell Openmanage Server Administrator,它是戴尔公司基于自主研发力量开发的IT系统管理解决方案,通过与业内领先的系统管理解决方案供应商密切配合,在深入了解用户对系统管理需求的基础上,OMSA系统管理方案可以全面解决系统管理人员最关心的系统部署、系统监控和系统变更三大系统管理问题。它通过提供以下两种方式来对本地和远程的服务器进行管理和监控。

           1、基于Web浏览器的集成图形用户界面(GUI)

           2、操作系统的命令行界面(CLI)工具

    大家可能对DELL的IDRAC更熟悉一点,OMSA其实就是 IDRAC企业版的开源社区版。这里列出IDRAC和OMSA的web界面,两者看着非常相似,功能上也是非常相似。

    IDRAC:

    wKioL1WJG7aT9U-wAANhaTogQ1Q904.jpg

    OMSA:

    wKioL1WJG82ByjVfAANhourPBYI801.jpg


    二、OMSA 部署

           下面介绍如何安装使用OMSA。由于我们公司主要使用的是红帽系列的产品,因此这里列举RHEL6和CentOS6部署方式。

    RHEL 6.X 平台安装 OMSA:

           在RHEL6上部署OMSA,由于DELL售后那边发给我过资料,这里我就不在重复写了,贴上DELL售后的资料,非常的详尽。

           最新版本的OMSA 8.1下载链接:http://downloads.dell.com/FOLDER02876154M/1/OM-SrvAdmin-Dell-Web-LX-8.1.0-1518.RHEL6.x86_64_A00.tar.gz

           安装链接:http://zh.community.dell.com/techcenter/systems-management/w/wiki/561.omsalinux

    CentOS 6.X 平台安装 OMSA

           CentOS 6.x系列的,其实也可以使用和RHEL6一样的方式安装,只不过需要修改脚本里面的一些东西。我们可以使用dell官方提供的yum源,直接使用yum来在CentOS上安装OMSA。

    下面附上安装步骤:

    1、安装dell的yum源

    1
    [root@kvm-phy04-jz ~]# wget -q -O - http://linux.dell.com/repo/hardware/latest/bootstrap.cgi | bash

    2、安装必要的2个包

    1
    [root@kvm-phy04-jz ~]# yum -y install OpenIPMI srvadmin-all

    3、启动服务

    1
    [root@kvm-phy04-jz ~]# /opt/dell/srvadmin/sbin/srvadmin-services.sh start

    4、设置开机自启动

    1
    2
    3
    4
    5
    6
    [root@kvm-phy04-jz ~]# /opt/dell/srvadmin/sbin/srvadmin-services.sh enable
    racsvc          0:off   1:off   2:on    3:on    4:on    5:on    6:off
    dataeng         0:off   1:off   2:on    3:on    4:on    5:on    6:off
    dsm_om_shrsvc   0:off   1:off   2:on    3:on    4:on    5:on    6:off
    dsm_om_connsvc  0:off   1:off   2:off   3:on    4:off   5:on    6:off
    ipmi            0:off   1:off   2:on    3:on    4:on    5:on    6:off

    5、通过web访问OMSA界面

    使用浏览器访问https://ip_address:1311打开OMSA的web页面。这里注意,一定要使用https去访问,否则页面会打不开。

    wKiom1WJGlmgelNUAAFt5LJcIes144.jpg

    注意 : 这里的用户名和密码使用的是系统的用户名密码,这地方和IDRAC是不一样的。

    这样子,OMSA就安装好了,web管理页面也可以使用了。


    精简OMSA组件:

           虽然 OMSA 的web端功能很强大,但是在工作当中,我们的主要目的并非是使用它的web端,更多时间只是想使用它提供的一些命令行工具来获取服务器主要组件的相关信息,比如CPU、内存、硬盘、陈列和主板温度之类的健康状况。因此,我们没有必要安装OMSA的web端。

    下面就是卸载OMSA的web端相关的包:

    1
    [root@kvm-phy04-jz ~]# yum remove -y srvadmin-tomcat srvadmin-jre srvadmin-smweb

    删除相关的无用内容:

    1
    [root@kvm-phy04-jz ~]# rm -rf /opt/dell/srvadmin/lib64/openmanage/apache-tomcat

    上述操作执行完毕之后,OMSA的web端也就基本清理干净了,这里列出系统中安装的和OMSA相关的包:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    [root@kvm-phy04-jz ~]# rpm -qa|grep srvadmin
    srvadmin-omcommon-8.1.0-4.92.1.el6.x86_64
    srvadmin-xmlsup-8.1.0-4.91.1.el6.x86_64
    srvadmin-storelib-8.1.0-4.139.1.el6.x86_64
    srvadmin-storage-cli-8.1.0-4.138.2.el6.x86_64
    srvadmin-racdrsc-8.1.0-4.4.7.el6.x86_64
    srvadmin-storage-snmp-8.1.0-4.138.2.el6.x86_64
    srvadmin-storageservices-cli-8.1.0-4.3.1.el6.x86_64
    srvadmin-oslog-8.1.0-4.85.1.el6.x86_64
    srvadmin-isvc-snmp-8.1.0-4.38.1.el6.x86_64
    srvadmin-rac4-8.1.0-4.1.127.el6.x86_64
    srvadmin-server-cli-8.1.0-4.3.1.el6.x86_64
    srvadmin-omilcore-8.1.0-4.85.1.el6.x86_64
    srvadmin-racadm4-8.1.0-4.1.127.el6.x86_64
    srvadmin-deng-8.1.0-4.8.1.el6.x86_64
    srvadmin-hapi-8.1.0-4.10.2.el6.x86_64
    srvadmin-ominst-8.1.0-4.94.3.el6.x86_64
    srvadmin-omacore-8.1.0-4.94.3.el6.x86_64
    srvadmin-storelib-sysfs-8.1.0-4.1.1.el6.x86_64
    srvadmin-nvme-8.1.0-4.139.1.el6.x86_64
    srvadmin-storage-8.1.0-4.138.2.el6.x86_64
    srvadmin-sysfsutils-8.1.0-4.1.1.el6.x86_64
    srvadmin-deng-snmp-8.1.0-4.8.1.el6.x86_64
    srvadmin-racadm5-8.1.0-4.1.128.el6.x86_64
    srvadmin-idracadm-8.1.0-4.4.7.el6.x86_64
    srvadmin-racsvc-8.1.0-4.1.127.el6.x86_64
    srvadmin-idrac-ivmcli-8.1.0-4.6.3.el6.x86_64
    srvadmin-idrac-8.1.0-4.4.7.el6.x86_64
    srvadmin-storageservices-snmp-8.1.0-4.3.1.el6.x86_64
    srvadmin-rac4-populator-8.1.0-4.1.127.el6.x86_64
    srvadmin-cm-8.1.0-4.1.249.el6.x86_64
    srvadmin-server-snmp-8.1.0-4.3.1.el6.x86_64
    srvadmin-itunnelprovider-8.1.0-4.27.1.el6.x86_64
    srvadmin-omacs-8.1.0-4.92.1.el6.x86_64
    srvadmin-isvc-8.1.0-4.38.1.el6.x86_64
    srvadmin-smcommon-8.1.0-4.138.2.el6.x86_64
    srvadmin-realssd-8.1.0-4.139.1.el6.x86_64
    srvadmin-rac-components-8.1.0-4.4.7.el6.x86_64
    srvadmin-argtable2-8.1.0-4.5.1.el6.x86_64
    srvadmin-rac5-8.1.0-4.1.128.el6.x86_64
    srvadmin-idrac-snmp-8.1.0-4.4.7.el6.x86_64
    srvadmin-idrac-vmcli-8.1.0-4.5.1.el6.x86_64
    srvadmin-storageservices-8.1.0-4.3.1.el6.x86_64
    srvadmin-base-8.1.0-4.3.1.el6.x86_64
    srvadmin-standardAgent-8.1.0-4.3.1.el6.x86_64


    三、OMSA 使用指南

           由于 OMSA 的 web 端已经被我们卸载掉了。因此我们目前想要看到服务器的相关硬件信息就需要使用命令行的方式获取了。那么,这里就介绍如何使用命令获取服务器硬件信息。

           OMSA自带了一些工具来提供给我们命令行的查询和设置接口,这里主要介绍两个,一个是omreport,另一个是omconfig。omreport是用来查询服务器各种硬件状态,omconfig是用来设置硬件的一些属性的。

           我在这里仅列出这两个命令的常用几个命令,更多的命令详情大家可以去如下两个网站查询:

    1
    2
           1、http://www.sxszjzx.com/~t096/manual/sc/Dosa/CLI/report.htm
           2、http://topics-cdn.dell.com/pdf/dell-opnmang-srvr-admin-v8.1_User's%20Guide_en-us.pdf

    命令指南:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    /opt/dell/srvadmin/bin/omreport chassis                     # 显示所有主要组件的常规状态 
    /opt/dell/srvadmin/bin/omreport chassis memory              # 显示内存信息
    /opt/dell/srvadmin/sbin/omreport  chassis temps             # 显示系统主要组件的温度
    /opt/dell/srvadmin/bin/omreport storage adisk controller=0  # 查看磁盘陈列中的硬盘状态
    /opt/dell/srvadmin/bin/omreport storage pdisk controller=0  # 查看物理磁盘信息
    /opt/dell/srvadmin/bin/omreport storage vdisk controller=0  # 查看虚拟硬盘的状态
    /opt/dell/srvadmin/bin/omreport storage controller          # 查看控制器(即RAID卡)的属性
    /opt/dell/srvadmin/bin/omreport storage channel controller=0    # 查看通道的属性
    /opt/dell/srvadmin/bin/omreport storage enclosure controller=0  # 查看enclosure的属性
    /opt/dell/srvadmin/bin/omreport storage battery                 # 查看电池属性
    /opt/dell/srvadmin/bin/omconfig storage controller action=setrebuildrate controller=0 rate=100            # 调整rebuild的速度
    /opt/dell/srvadmin/bin/omconfig  storage vdisk  action=changepolicy controller=0 vdisk=0 readpolicy=ara   # 修改raid的读策略
    /opt/dell/srvadmin/bin/omconfig  storage vdisk  action=changepolicy controller=0 vdisk=0 writepolicy=fwb  # 修改raid的写策略


    命令范例:

    1、查看系统主要组件的温度

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    [root@kvm-phy04-jz ~]# /opt/dell/srvadmin/bin/omreport chassis temps
    Temperature Probes Information
     
    ------------------------------------
    Main System Chassis Temperatures: Ok
    ------------------------------------
     
    Index                     : 0
    Status                    : Ok
    Probe Name                : System Board Inlet Temp
    Reading                   : 26.0 C
    Minimum Warning Threshold : 3.0 C
    Maximum Warning Threshold : 42.0 C
    Minimum Failure Threshold : -7.0 C
    Maximum Failure Threshold : 47.0 C
     
    Index                     : 1
    Status                    : Ok
    Probe Name                : System Board Exhaust Temp
    Reading                   : 31.0 C
    Minimum Warning Threshold : 8.0 C
    Maximum Warning Threshold : 70.0 C
    Minimum Failure Threshold : 3.0 C
    Maximum Failure Threshold : 75.0 C
     
    Index                     : 2
    Status                    : Ok
    Probe Name                : CPU1 Temp
    Reading                   : 36.0 C
    Minimum Warning Threshold : 8.0 C
    Maximum Warning Threshold : 79.0 C
    Minimum Failure Threshold : 3.0 C
    Maximum Failure Threshold : 84.0 C
     
    Index                     : 3
    Status                    : Ok
    Probe Name                : CPU2 Temp
    Reading                   : 30.0 C
    Minimum Warning Threshold : 8.0 C
    Maximum Warning Threshold : 79.0 C
    Minimum Failure Threshold : 3.0 C
    Maximum Failure Threshold : 84.0 C

    2、查看虚拟硬盘的状态

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    [root@kvm-phy04-jz ~]# /opt/dell/srvadmin/bin/omreport storage vdisk controller=0 
    List of Virtual Disks on Controller PERC H310 Mini (Embedded)
     
    Controller PERC H310 Mini (Embedded)
    ID                                : 0
    Status                            : Ok
    Name                              : cislunar_space
    State                             : Ready
    Hot Spare Policy violated         : Not Assigned
    Encrypted                         : Not Applicable
    Layout                            : RAID-10
    Size                              : 836.63 GB (898319253504 bytes)
    T10 Protection Information Status : No
    Associated Fluid Cache State      : Not Applicable
    Device Name                       : /dev/sda
    Bus Protocol                      : SAS
    Media                             : HDD
    Read Policy                       : No Read Ahead
    Write Policy                      : Write Through
    Cache Policy                      : Not Applicable
    Stripe Element Size               : 64 KB
    Disk Cache Policy                 : Disabled

    3、查看控制器(即RAID卡)的属性

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    [root@kvm-phy04-jz ~]# /opt/dell/srvadmin/bin/omreport storage controller  
     Controller  PERC H310 Mini(Embedded)
     
    Controller
    ID                                            : 0
    Status                                        : Non-Critical
    Name                                          : PERC H310 Mini
    Slot ID                                       : Embedded
    State                                         : Degraded
    Firmware Version                              : 20.12.1-0002
    Minimum Required Firmware Version             : 20.13.1-0001
    Driver Version                                : 06.700.06.00-rh1
    Minimum Required Driver Version               : Not Applicable
    Storport Driver Version                       : Not Applicable
    Minimum Required Storport Driver Version      : Not Applicable
    Number of Connectors                          : 2
    Rebuild Rate                                  : 30%
    BGI Rate                                      : 30%
    Check Consistency Rate                        : 30%
    Reconstruct Rate                              : 30%
    Alarm State                                   : Not Applicable
    Cluster Mode                                  : Not Applicable
    SCSI Initiator ID                             : Not Applicable
    Cache Memory Size                             : 0 MB
    Patrol Read Mode                              : Auto
    Patrol Read State                             : Stopped
    Patrol Read Rate                              : 30%
    Patrol Read Iterations                        : 0
    Abort Check Consistency on Error              : Disabled
    Allow Revertible Hot Spare and Replace Member : Enabled
    Load Balance                                  : Not Applicable
    Auto Replace Member on Predictive Failure     : Disabled
    Redundant Path view                           : Not Applicable
    CacheCade Capable                             : Not Applicable
    Persistent Hot Spare                          : Disabled
    Encryption Capable                            : Not Applicable
    Encryption Key Present                        : Not Applicable
    Encryption Mode                               : Not Applicable
    Preserved Cache                               : Not Applicable
    Spin Down Unconfigured Drives                 : Disabled
    Spin Down Hot Spares                          : Disabled
    Spin Down Configured Drives                   : Not Applicable
    Automatic Disk Power Saving (Idle C)          : Not Applicable
    T10 Protection Information Capable            : No


    OK,本篇博文就到此,希望能对大家有所帮助!


    剧透:

          除了OMSA自带的工具,还有一个便捷查询的第三方工具 check_openmanage。不过由于check_openmanage内容蛮多的,我就又拆出来一篇博文,避免本篇文章太长,使读者没有看下去的兴致了。


    nagios监控ESXi硬件


    普通的服务器硬件监控我们可以通过nagios+openmanage来实现,但是vsphere环境中的Esxi主机的硬件监控怎么实现呢?

    这里有两种方案:

    1.通过nagios插件check_esx来实现,这种方式需要安装vmware vsphere sdk for perl工具包

    2.通过nagios插件check_esxi_hardware.py来实现,此插件使用python写的。

    感人感觉第二种方式比较简单些,python在linux天生内置,还需要更多理由吗?

    先看看官网介绍:

    https://www.claudiokuenzler.com/nagios-plugins/check_esxi_hardware.php#.VWV5_JCUfTA

    其中:

    Requirements
    Python must be installed
    - The Python extension pywbem must be installed
    Windows users click here for a step-by-step guide how to install Python and PyWBEM on a Windows server.
    - If there is a firewall between your monitoring and ESXi server, open ports 443 and 5989

    以上是实现监控的先决条件:

    1.python必须安装

    2.python的扩展包pywbem必须安装

    3.你的Esxi主机的443,5989端口必须对nagios监控端开放

    好了,下面就赶紧实施吧!

    1.安装check_essi_hardware.py

     

    ?
    1
    2
    3
    4
    cd /usr/local/nagios/libexec
    wget https://www.claudiokuenzler.com/nagios-plugins/check_esxi_hardware.py
    chown nagios.nagios check_esxi_hardware.py
    chmod755check_esxi_hardware.py

     

    安装完成后,我们来查看下这个插件都有什么参数:

     

    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    [root@nagioslibexec]# ./check_esxi_hardware.py
    Traceback (most recent call last):
      File"./check_esxi_hardware.py", line 222, in <module>
        importpywbem
    ImportError: No module named pywbem
    [root@nagioslibexec]# ./check_esxi_hardware.py -h
    Traceback (most recent call last):
      File"./check_esxi_hardware.py", line 222, in <module>
        importpywbem
    ImportError: No module named pywbem</module></module>

     

    哦,原来pywbem模块没有安装,那就赶紧装下吧。

    2.安装python的第三方模块

     

    ?
    1
    2
    3
    4
    5
    6
    cd /usr/local/src
    wget https://downloads.sourceforge.net/project/pywbem/pywbem/pywbem-0.7/pywbem-0.7.0.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fpywbem%2Ffiles%2Fpywbem%2F&ts=1299742557&use_mirror=voxel
    tar -zxvf  pywbem-0.7.0.tar.gz
    cd pywbem-0.7.0
    python setup.py build
    python setup.py install --record files.txt
    ok,pywbem安装完毕。

     

    注意:(1).不要使用pywbem-0.8.0版本,这个版本有bug导致我们的插件无法使用

    (2).python setup.py install --record files.txt 记录安装目录的目的就是为了方便卸载插件,cat files.txt | xargs rm -rf

    3.使用插件

     

    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    [root@nagioslibexec]# ./check_esxi_hardware.py
    no parameters specified
     
    Usage: check_esxi_hardware.py  https://hostname user password system [verbose]
    example: check_esxi_hardware.py https://my-shiny-new-vmware-server root fakepassword dell
     
    or, using newstyle options:
     
    usage: check_esxi_hardware.py -H hostname -U username -P password [-V system -v -p -I XX]
    example: check_esxi_hardware.py -H my-shiny-new-vmware-server -U root -P fakepassword -V auto -I uk
     
    or, verbosely:
     
    usage: check_esxi_hardware.py --host=hostname --user=username --pass=password [--vendor=system --verbose --perfdata --html=XX]
     
     
    Options:
      --version             show program's version number and exit
      -h, --help            show thishelp message and exit
     
      Mandatory parameters:
        -H HOST, --host=HOST
                            report on HOST
        -U USER, --user=USER
                            user to connect as
        -P PASS, --pass=PASS
                            password,ifpassword matches file:<path>, first line
                            of given file will be used as password
     
      Optional parameters:
        -V VENDOR, --vendor=VENDOR
                            Vendor code: auto, dell, hp, ibm, intel, or unknown
                            (default)
        -v, --verbose       print status messages to stdout (defaultis to be
                            quiet)
        -p, --perfdata      collect performance data forpnp4nagios (defaultis
                            not to)
        -I XX, --html=XX    generate html links forcountry XX (defaultis not to)
        -t TIMEOUT, --timeout=TIMEOUT
                            timeout in seconds - no effect on Windows (default=
                            no timeout)
        -i IGNORE, --ignore=IGNORE
                            comma-separated list of elements to ignore
        --no-power          don't collect power performance data
        --no-volts          don't collect voltage performance data
        --no-current        don't collect current performance data
        --no-temp           don't collect temperature performance data
        --no-fan            don't collect fan performance data</path>
    从上面可以看出,此插件需要用户名,密码连接Esxi主机才能使用。当然为保证安全,只需要在Esxi主机上建立只读的用户名和密码即可。

     

    其中-U 用户名 -P 密码 -V服务器类型,有dell,hp等,根据实际情况-v 打印状态信息-p结合画图工具画图

    -I 输出链接到dell或其他官网,方面找解决方案-t超时时间-i 忽略某项监控内容

    --no-power 不采集电源信息,以下雷同。

    4.给Esxi主机设置只读用户

    (1)先登录Esxi主机,在“本地用户和组”标签中,空白处右键“添加”,即可添加用户。

    \

    (2)将nagios用户设置成“只读角色”。在“权限”标签中,空白处右键“添加权限”,然后按下图操作

    \

    ok,只读用户nagios就添加完毕。

    5.测试

     

    ?
    1
    2
    [root@nagioslibexec]# ./check_esxi_hardware.py -H 10.10.10.1-U nagios -P nagios -V dell
    UNKNOWN: Authentication Error
    又报错了,认证失败。在网上查到原因是Esxi版本不同差异导致,例如我的本地测试机和生产环境都是5.5,但是小版本不一样,也报错了。

     

    解决方案:

    ssh登陆Esxi主机,编辑如下

    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ~ # cat /etc/security/access.conf
    # This file is autogenerated and must not be edited.
     
    +:dcui:ALL
    +:root:ALL
    +:vpxuser:ALL
    +:vslauser:ALL
    -:nagios:ALL
    -:ALL:ALL

     

    将“-:nagios:ALL”去掉,在第二行加上“+:nagios:sfcb”

    这种方式适合在不经常添加用户的情况下使用,只改一次即可;但是经常加用户可能会导致access.conf变化,需要设置计划任务添加“+:nagios:sfcb”

    再测试下:

     

    ?
    1
    2
    [root@nagioslibexec]# ./check_esxi_hardware.py -H 10.10.10.1-U nagios -P nagios -V dell
    OK - Server: Dell Inc. PowerEdge R610 s/n: XXXXXX System BIOS: XXXXXXXXXXX
    ok,监控正常。

     

    6.下面将将其加入到监控系统中吧。

    (1)先在commands.cfg中添加命令。

     

    ?
    1
    2
    3
    4
    5
    vim /usr/local/nagios/etc/objects/commands.cfg
    define command {
        command_name check_esxi_hardware
        command_line $USER1$/check_esxi_hardware.py -H $HOSTADDRESS$ -U $ARG1$ -P $ARG2$ -V $ARG3$ -I isolutions -p -t20 
    }
    (2)添加服务

     

     

    ?
    1
    2
    3
    4
    5
    6
    7
    8
    define service{
        use                     local-service,srv-pnp
        host_name               test
        service_description     esxi_health
        check_command           check_esxi_hardware!nagios!nagios!dell
        service_groups          hardware_health
        notifications_enabled  1  
        }
    nagioscheck

     

    service nagios reload


    (3)监控效果图

    \

    其中href中的链接就是我们在check_esxi_hardware.py中-I参数生成,方便我们直接查找解决方案。


    【总结】
    对于服务器硬件监控是怎么做的?硬件的运行状态,比如硬件的温度,电源模块状态等?

    zabbix有个ipmi接口功能, 是通过ipmi接口去访问服务器的管理口(在操作系统通过ipmitool访问硬件状态信息进行监控)

    不过如果有软件或者脚本工具能读取到相应的信息,可以通过zabbix自定义item,然后把相应的信息传给zabbix就可以了

     直接上方案:OMSA、IPMI+zabbix  可以采用这两个方案 监控服务器硬件 

     nagios 可以也可以(通过nagios插件check_相应模块) 相对复杂点  ——要么就写脚本采集然后提交到数据库吧 商业硬件/嵌入式设备监控价格很贵 

     前提:
    无论采用OMSA还是nagios 都需要提前安装snmp服务(OMSA则要安装对应的卡服务)
    IPMI+zabbix 则不需要 直接通过api调用硬件参数 

     一般品牌服务器例如戴尔、惠普、IBM、华为等 都自带了硬件控制管理系统【需要安装即可对服务器的硬件资源进行查看】 

     简单点的就可以用OMSA,建议软件服务和硬件监控系统分离,不然你的数据库存储要爆炸。


    展开全文
  • 原文链接:http://www.cnblogs.com/defias/p/3426976.html,原文总结得太好,以至于忍不住要转载。。。 目录: ps pstree pidof top free uptime ifuser lsof mpstat ...1)让系统报告详细

    原文链接:http://www.cnblogs.com/defias/p/3426976.html,原文总结得太好,以至于忍不住要转载。。。

    目录:

    ps

    pstree

    pidof

    top

    free

    uptime

    ifuser

    lsof

    mpstat

    vmstst

    pidstat

    iostat

    iotop

    watch

    sar


    1、ps

    1)让系统报告详细的信息。

         在使用ps命令时,如果不采用任何的可选项,则其显示的信息是非常有限的,而且往往只显示当前用户所运行的程序。当系统管理员需要知道应用程序更加详细的运行信息时,如想要知道这个应用程序内存、CPU的占用率情况时,那么就需要加入一些可选项。如系统管理员需要一并查看其它用户所执行的应用程序时,就需 要在这个命令后面采用可选项-al。如此的话,系统会列出系统中所有用户运行的所有程序。如想要知道某个程序CPU与内存的使用情况,而不是只简单的现实 其CPU的使用时间,那么就需要在这个命令后面加入参数-l ,即使用ps –l命令可以让系统显示出应用程序的详细运行信息。关于上面各个字段所代表的含义,大家若有兴趣的话可以查看相关的帮助。一般来说,系统管理员关心的只是 程序的PID号码、内存与CPU的使用率、命令的名字、用户采用的终端等等。其它的信息对于系统管理员来说价值不是很大。

    2)查看后台运行的程序。
         默认情况下,ps命令只显示前台运行的程序,而不会显示后台运行的程序。但是并非所有的程序都是在前台运行。正常情况下,隐藏在后台运行的程序数量要比前 台运行的程序多的多。如随着操作系统启动而启动的不少系统自带程序,其运行的方式都是后台运行。而且有时候,系统出现问题往往是由于后台程序所造成的。如 常见的木马等程序都是在后台所运行的。为此系统管理员相对来说,更加想要知道在后台运行着哪些程序。
         如果要查看后台运行的程序,那就比较复杂一点。因为在不同版本的Linux操作系统中,要显示后台进程其所采用的可选项是不同的。如在红帽子 Linux操作系统中,其实采用参数的形式而不是可选项。即采用ps aux命令可以显示出所有的应用程序(包括前台与后台的)参数与可选项的差异主要在前面又没有这个-符号。如果带有这个符号的就表示这是一个可选项。而如果不带的,就表示这事一个参数。这个符号一般情况下可不能够省。在该写的地方没写,或者不需要些的地方偏偏加上了,则系统都会提示错误信息,说找不到这 个命令。而在其它的Linux系统版本中,可能不能够识别这个aux参数。如在一些Linux操作系统版本中,需要采用-a可选项来完成这个任务。由于系 统版本之间的差异,给系统管理员带来了不少的麻烦。不过值得庆幸的是,各个操作系统版本中都有在线的帮助。如果系统管理员在使用一个新版本的操作系统时, 不知道要显示全部进程该使用哪个可选项时,可以利用ps --heip等命令来查看系统帮助。不过美中不足的是,系统在线帮助都是英文的,对系统管理员的英文水平是一个不小的考验。不过如果要作Linux系统管 理员,这点英文底子还是要有的。因为最新的Linux技术基本上都是先出来英文文档的。其实要掌握最先进的操作系统书籍,大部分的计算机书籍都是英文的。

    3)对程序列表进行排序。
        当运行的应用程序比较多时,系统管理员需要对应用程序进行排序。Ps命令的排序功能是比较强的。主要是因为这个命令有一个--sort参数(注意在这个参 数前面采用的是两个小横杆符号,各位读者不要以为是笔者写错了)。在这个参数后面加上系统管理员想要的排序字段,就可以进行排序了。如这个命令ps –A --sort cmd,就表示显示系统所有的应用程序,并根据程序命令来进行排序。在Linux操作系统参数中,还有一个比较麻烦的事情,就是参数大小写不同往往代表着不同的含义。如上面这个命令,将大写字母A换成是小写字符a,则结果就完全两样了。大写字符A表示所有的应用程序,而小写字符a则表示“all w/ tty except session leaders”。两者有本质的区别。通过这个差异可以用来过滤不同终端登陆帐户所运行的应用程序。

    [root@linux ~]# ps aux
    [root@linux ~]# ps -lA
    [root@linux ~]# ps axjf
    选项/参数:

    -w 显示加宽可以显示较多的资讯
    -au 显示较详细的资讯
    -aux 显示所有包含其他使用者的行程
    -A 显示所有进程(等价于-e)(utility)
    -a 显示一个终端的所有进程,除了会话引线
    -N 忽略选择。
    -d 显示所有进程,但省略所有的会话引线(utility)
    -x 显示没有控制终端的进程,同时显示各个命令的具体路径。dx不可合用。(utility)
    -p pid 进程使用cpu的时间
    -u uid or username 选择有效的用户id或者是用户名
    -g gid or groupname 显示组的所有进程。
    U username 显示该用户下的所有进程,且显示各个命令的详细路径。如:ps U zhang;(utility)
    -f 全部列出,通常和其他选项联用。如:ps -fa or ps -fx and so on.
    -l 长格式(有F,wchan,C 等字段)
    -j 作业格式
    -o 用户自定义格式。
    v 以虚拟存储器格式显示
    s 以信号格式显示
    -m 显示所有的线程
    -H 显示进程的层次(和其它的命令合用,如:ps -Ha)(utility)
    e 命令之后显示环境(如:ps -d e; ps -a e)(utility)
    h 不显示第一行

    l 长格式输出;
    u 按用户名和启动时间的顺序来显示进程;
    j 用任务格式来显示进程;
    f 用树形格式来显示进程;
    a 显示所有用户的所有进程(包括其它用户);
    x 显示无控制终端的进程;
    r 显示运行中的进程;
    ww 避免详细参数被截断;

    ps命令常用用法(方便查看系统进程)
    1)ps a 显示现行终端机下的所有程序,包括其他用户的程序。
    2)ps -A 显示所有进程。
    3)ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。
    4)ps -e 此参数的效果和指定"A"参数相同。
    5)ps e 列出程序时,显示每个程序所使用的环境变量。
    6)ps f 用ASCII字符显示树状结构,表达程序间的相互关系。
    7)ps -H 显示树状结构,表示程序间的相互关系。
    8)ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。
    9)ps s 采用程序信号的格式显示程序状况。
    10)ps S 列出程序时,包括已中断的子程序资料。
    11)ps -t<终端机编号>  指定终端机编号,并列出属于该终端机的程序的状况。
    12)ps u 以用户为主的格式来显示程序状况。
    13)ps x 显示所有程序,不以终端机来区分。
    14)最常用的方法是ps -aux,然后再利用一个管道符号导向到grep去查找特定的进程,然后再对特定的进程进行操作。

    特别说明:
    由于ps能够支持的OS类型相当的多,所以他的参数多的离谱! 而且有没有加上-差很多!详细的用法应该要参考man ps喔!
    范例一:将目前属于您自己这次登入的PID与相关信息列示出来(前台)
    [root@linux ~]# ps -l
    F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
    0 S 0 5881 5654 0 76 0 - 1303 wait pts/0 00:00:00 su
    4 S 0 5882 5881 0 75 0 - 1349 wait pts/0 00:00:00 bash
    4 R 0 6037 5882 0 76 0 - 1111 - pts/0 00:00:00 ps
    上面这个信息其实很多喔!各相关信息的意义为:
    F 代表这个程序的旗标(flag), 4 代表使用者为super user;
    S 代表这个程序的状态(STAT);
    PID 就是这个程序的ID啊!底下的PPID则上父程序的ID;
    C CPU使用的资源百分比
    PRI 这个是Priority(优先执行序)的缩写;
    NI 这个是Nice值;
    ADDR 这个是kernel function,指出该程序在内存的那个部分。如果是个running的程序,一般就是『 - 』的啦!
    SZ 使用掉的内存大小;
    WCHAN 目前这个程序是否正在运作当中,若为-表示正在运作;
    TTY 登入者的终端机位置啰;
    TIME 使用掉的CPU时间。
    CMD 所下达的指令为何!?
    仔细看到每一个程序的PID与PPID的相关性为何喔!上头列出的三个程序中,彼此间可是有相关性的吶!

    范例二:列出目前所有的正在内存当中的程序:
    [root@linux ~]# ps aux
    USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
    root 1 0.0 0.1 1740 540 ? S Jul25 0:01 init [3]
    root 2 0.0 0.0 0 0 ? SN Jul25 0:00 [ksoftirqd/0]
    root 3 0.0 0.0 0 0 ? S< Jul25 0:00 [events/0]
    .....中间省略.....
    root 5881 0.0 0.3 5212 1204 pts/0 S 10:22 0:00 su
    root 5882 0.0 0.3 5396 1524 pts/0 S 10:22 0:00 bash
    root 6142 0.0 0.2 4488 916 pts/0 R+ 11:45 0:00 ps aux
    各相关信息的意义为:
    USER:该process属于那个使用者账号的?
    PID :该process的号码。
    %CPU:该process使用掉的CPU 资源百分比;
    %MEM:该process所占用的物理内存百分比;
    VSZ :该process使用掉的虚拟内存量(Kbytes)
    RSS :该process占用的固定的内存量(Kbytes)
    TTY :该process是在那个终端机上面运作,若与终端机无关,则显示?,另外tty1-tty6是本机上面的登入者程序,若为pts/0等的则表示为由网络连接进主机的程序。
    STAT:该程序目前的状态,主要的状态有:
       R :该程序目前正在运作,或者是可被运作;
       S :该程序目前正在睡眠当中(可说是idle 状态啦!),但可被某些讯号(signal)唤醒。
       T :该程序目前正在侦测或者是停止了;
       Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成zombie(疆尸)程序的状态

       I:空闲 Idle
       D:不可中断 Uninterruptible sleep (ususally IO) 收到信号不唤醒和不可运行, 进程必须等待直到有中断发生。
       T:终止 Terminate 进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行。
       P:等待交换页
       W:无驻留页 has no resident pages 没有足够的记忆体分页可分配。
       X:死掉的进程
       <:高优先级进程 高优先序的进程
       N:低优先 级进程 低优先序的进程
       L:内存锁页 Lock 有记忆体分页分配并缩在记忆体内
       s:进程的领导者(在它之下有子进程);
       l:多进程的(使用 CLONE_THREAD, 类似 NPTL pthreads)
       +:位于后台的进程组

    START:该process 被触发启动的时间;
    TIME :该process 实际使用CPU 运作的时间。
    COMMAND:该程序的实际指令为何?

    范例三:以范例一的显示内容,显示出所有的程序:
    [root@linux ~]# ps -lA
    F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
    4 S 0 1 0 0 76 0 - 435 - ? 00:00:01 init
    1 S 0 2 1 0 94 19 - 0 ksofti ? 00:00:00 ksoftirqd/0
    1 S 0 3 1 0 70 -5 - 0 worker ? 00:00:00 events/0
    .....以下省略.....

    范例四:列出类似程序树的程序显示:
    [root@linux ~]# ps -axjf
    PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND
    0 1 0 0 ? -1 S 0 0:01 init [3]
    1 2 0 0 ? -1 SN 0 0:00 [ksoftirqd/0]
    .....中间省略.....
    1 5281 5281 5281 ? -1 Ss 0 0:00 /usr/sbin/sshd
    5281 5651 5651 5651 ? -1 Ss 0 0:00 \_ sshd: dmtsai[priv]
    5651 5653 5651 5651 ? -1 S 500 0:00 \_ sshd: dmtsai@pts/0
    5653 5654 5654 5654 pts/0 6151 Ss 500 0:00 \_ -bash
    5654 5881 5881 5654 pts/0 6151 S 0 0:00 \_ su
    5881 5882 5882 5654 pts/0 6151 S 0 0:00 \_ bash
    5882 6151 6151 5654 pts/0 6151 R+ 0 0:00 \_ ps -axjf
    还可以使用pstree来达成这个程序树喔!

    范例五:找出与cron与syslog这两个服务有关的PID号码?
    [root@linux ~]# ps aux | egrep '(cron|syslog)'
    root 1539 0.0 0.1 1616 616 ? Ss Jul25 0:03 syslogd -m 0
    root 1676 0.0 0.2 4544 1128 ? Ss Jul25 0:00 crond
    root 6157 0.0 0.1 3764 664 pts/0 R+ 12:10 0:00 egrep(cron|syslog)
    所以号码是1539及1676这两个

     


    2、pstree 
    [root@linux ~]# pstree [-Aup] 
    参数: 
    -A:各程序树之间的连接以ASCII字符来连接; 
    -p:并同时列出每个process的PID; 
    -u:并同时列出每个process的所属账号名称。 
    范例一:列出目前系统上面所有的程序树的相关性: 
    [root@linux ~]# pstree 

    范例二:承上题同时秀出PID与users 
    [root@linux ~]# pstree -aup 
      在括号()内的即是PID以及该程序的owner!不过,由于我是使用root的身份执行此一指令,所以属于root的可能就不会显示出来

     


    3、pidof 
    [root@linux ~]# pidof [-sx] program_name 
    参数: 
    -s:仅列出一个PID而不列出所有的PID 
    -x:同时列出该 program name可能的PPID那个程序的PID 
    范例一:列出目前系统上面init以及syslogd这两个程序的PID 
    [root@linux ~]# pidof init syslogd 
    1 2546 
    理论上,应该会有两个PID才对。上面的显示也是出现了两个PID喔。分别是init及syslogd这两支程序的PID啦。

    范例二:找出bash即以bash为PPID的几个主要的PID 
    [root@linux ~]# pidof -x bash 
    2961 2959 338 
    因为我的系统被我登入之后,我就会主动取得一个bash的程序,所以啰,很自然就会拥有一个PID啊。只要我再以底下的方式,就可以取得我所想要的PID内容。 
    [root@linux ~]# ps aux | egrep '(2961|2959|338)' 
    dmtsai 338 0.0 0.1 6024 1536 pts/0 Ss 16:43 0:00 -bash 
    kiki 2961 0.0 0.1 6025 1526 pts/0 Ss 17:43 0:00 -bash 
    .....以下省略......

     


    4、top

    实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器

    [root@linux ~]# top [-d] | top [-bnp]
    参数:
    -d:后面可以接秒数,就是整个程序画面更新的秒数。预设是5秒;
    -b:以批次的方式执行 top
    通常会搭配数据流重导向来将批次的结果输出成为档案。
    -n: 与-b搭配,意义是需要进行几次top的输出结果。
    -p:指定某些个PID来进行观察监测

    在top执行过程当中可以使用的按键指令:
    ?:显示在top当中可以输入的按键指令;
    P:以CPU的使用资源排序显示;
    M:以Memory的使用资源排序显示;
    N:以PID来排序喔!
    T:由该Process使用的CPU时间累积(TIME+)排序。
    k:给予某个PID一个讯号(signal)
    r:给予某个PID重新制订一个nice值。

    范例一:每两秒钟更新一次top,观察整体信息:
    [root@linux ~]# top -d 2

    范例二:将top的信息进行2次,然后将结果输出到/tmp/top.txt
    [root@linux ~]# top -b -n 2 > /tmp/top.txt

    范例三:假设10604是一个已经存在的PID,仅观察该程序 
    [root@linux ~]# top -d 2 -p10604 

    范例四:承上题,上面的NI值是0,想要改成10的话? 在范例三的top画面当中直接按下r之后会出现如下的图样: 

    top - 13:53:00 up 51 days, 2:27, 1 user, load average: 0.00,0.00, 0.00
    Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie
    Cpu(s): 0.0% us, 0.0% sy, 0.0% ni, 100.0% id, 0.0% wa, 0.0% hi, 0.0% si
    Mem: 385676k total, 371760k used, 13916k free, 131164k buffers
    Swap: 1020116k total, 880k used, 1019236k free, 95772k cached
    PID to renice: 10604
    PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
    10604 root 16 0 5396 1544 1244 S 0.0 0.4 0:00.07 bash
    之后,可以输入nice值了!
    top - 13:53:00 up 51 days, 2:27, 1 user, load average: 0.00,0.00, 0.00
    Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie
    Cpu(s): 0.0% us, 0.0% sy, 0.0% ni, 100.0% id, 0.0% wa, 0.0% hi, 0.0% si
    Mem: 385676k total, 371760k used, 13916k free, 131164k buffers
    Swap: 1020116k total, 880k used, 1019236k free, 95772k cached
    Renice PID 10604 to value: 10
    PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
    10604 root 30 10 5396 1544 1244 S 0.0 0.4 0:00.07 bash

     

    top输出解析:

       top主要分为两个画面,上面的画面为整个系统的资源使用状态,基本上总共有六行,显示的内容依序是:
    第一行:显示系统已启动的时间、目前上线人数、系统整体的负载(load)。 比较需要注意的是系统的负载,三个数据分别代表1,5,10分钟的平均负载。一般来说,这个负载值应该不太可能超过1才对,除非您的系统很忙碌。如果持续高于5的话,那么.....仔细的看看到底是那个程序在影响整体系统吧

    第二行:显示的是目前的观察程序数量,比较需要注意的是最后的zombie那个数值,如果不是0,好好看看到底是那个process变成疆尸了吧
    第三行:显示的是CPU的整体负载,每个项目可使用?查阅。需要观察的是id (idle)的数值,一般来说,他应该要接近100%才好,表示系统很少资源被使用

     
    第四行与第五行:表示目前的物理内存与虚拟内存 (Mem/Swap) 的使用情况。


    第六行以后:这个是当在top程序当中输入指令时,显示状态的地方。top底下的画面,则是每个process使用的资源情况。

    默认情况下仅显示比较重要的PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列。可以通过下面的快捷键来更改显示内容。
    更改显示内容:
    1)通过 f 键可以选择显示的内容。按 f 键之后会显示列的列表,按 a-z 即可显示或隐藏对应的列,最后按回车键确定。
    2)按 o 键可以改变列的显示顺序。按小写的 a-z 可以将相应的列向右移动,而大写的 A-Z 可以将相应的列向左移动。最后按回车键确定。
    3)按大写的 F 或 O 键,然后按 a-z 可以将进程按照相应的列进行排序。而大写的 R 键可以将当前的排序倒转。

     


    5、free
    [root@linux ~]# free [-b|-k|-m|-g] [-t]
    参数: 

    -b  以Byte为单位显示内存使用情况。
    -k  以KB为单位显示内存使用情况。
    -m  以MB为单位显示内存使用情况。
    -g 以GB为单位显示内存使用情况。
    -o  不显示缓冲区调节列。
    -s<间隔秒数>  持续观察内存使用状况。
    -t  显示内存总和列。
    -V  显示版本信息。

    范例一:显示目前系统的内存容量,以MB为单位    
    [root@linux ~]# free -m
    total used free shared buffers cached
    Mem: 376 366 10 0 129 94
    -/+ buffers/cache: 141 235
    Swap: 996 0 995

     

    free输出解析:

    Mem:表示物理内存统计

     

    -/+ buffers/cache:表示物理内存的缓存统计

     

    (注:系统当前真正可用的内存并不是第一行free1标记的值,它仅代表未被分配的内存。而应该是第二行free2标记的值)

     

    Swap:表示硬盘上交换分区的使用情况,已使用、空闲的swap

    1)buffers与cached的区别
    A buffer is something that has yet to be “written” to disk. A cache is something that has been “read” from the disk and stored for later use
    对于应用程序来说,buffers/cached是等于可用的,因为buffer/cached是为了提高文件读取的性能,当应用程序需在用到内存的时候,buffer/cached会很快地被回收。所以从应用程序的角度来说:可用内存 = 系统free memory + buffers + cached,即上面的free2的值。
    buffers是指用来给块设备做的缓冲大小,他只记录文件系统的metadata以及tracking in-flight pages。cached是用来给文件做缓冲。那就是说:buffers是用来存储的,而cached是直接用来记忆我们打开的文件,如果你想知道他是不是真的生效,你可以试一下,先后执行两次命令#man X ,你就可以明显的感觉到第二次的开打的速度快很多。

    2)简述swap
    当可用内存少于额定值的时候,就会开始进行交换.
    如何看额定值(RHEL4.0): #cat /proc/meminfo

    交换将通过三个途径来减少系统中使用的物理页面的个数:
    1)减少缓冲与页面cache的大小,
    2)将系统V类型的内存页面交换出去,
    3)换出或者丢弃页面。(Application 占用的内存页,也就是物理内存不足)。
       少量地使用swap是不是影响到系统性能的。一般来说,swap最好不要被使用,尤其swap最好不要被使用超过20%或以上, 因为Swap的效率跟物理内存实在差很多,而系统会使用到swap,是因为物理内存不足了才会这样做。

    3)使用free命令
          将used的值减去buffer和cache的值就是你当前真实内存使用量。 buffer/cached是为了提高程序执行的性能,当程序使用内存时,buffer/cached会很快地被使用。 所以,以应用角度来看,以(-/+ buffers/cache)的free和used为主,所以我们看这个就好了。

         另外一些常识,Linux为了提高磁盘和内存存取效率, Linux做了很多精心的设计, 除了对dentry进行缓存(用于VFS,加速文件路径名到inode的转换), 还采取了两种主要Cache方式:Buffer Cache和Page Cache。 前者针对磁盘块的读写,后者针对文件inode的读写。这些Cache能有效缩短了I/O系统调用(比如read,write,getdents)的时间。 记住内存是拿来用的,不是拿来看的。不象windows,无论你的真实物理内存有多少,他都要拿硬盘交换文件来读。这也就是windows为什么常常提示虚拟空间不足的原因.你们想想,多无聊,在内存还有大部分的时候,拿出一部分硬盘空间来充当内存。硬盘怎么会快过内存。所以我们看linux,只要不用swap的交换空间,就不用担心自己的内存太少。如果常常swap用很多,可能你就要考虑加物理内存了。这也是linux看内存是否够用的标准。



    6、uptime
    uptime可以显示出top画面的最上面一行!
    [root@linux ~]# uptime
    18:06:30 up 52 days, 6:40, 1 user, load average: 0.00, 0.00, 0.00
    上面表示,目前是18:06 ,本系统已经开机52天又6:40 ,有1个使用者在在线,平均负载很低,所以都是0啊!

     


    7、fuser
    如果当我们要卸载某个装置时,他老是告诉我们device is busy , 那么到底是那个程序在使用这个装置呢?举例来说,当无法 umount /home时, 该怎么办?此时我们可以使用fuser来帮忙啦!
    [root@linux ~]# fuser [-ki] [-signal] file/dir
    参数:
    -k :找出使用该档案/目录的PID ,并试图以SIGKILL这个讯号给予该PID;
    -i :必须与-k配合,在删除PID之前会先询问使用者意愿!
    -signal:例如-1 -15等等,若不加的话,预设是SIGKILL (-9)啰!
    范例一:找出目前所在目录的使用PID为何?
    [root@linux ~]# fuser .
    .: 18852c
    [root@linux ~]# ps aux | grep 18852
    root 18852 0.0 0.4 5396 1588 pts/0 SN 10:12 0:00 bash
    用这个方式就可以得到使用该目录的PID了。此外,为何使用fuser的输出当中,在PID后面会有c呢?他代表的意义为:
    c:在当前的目录下;
    e:可以被执行的;
    f:是一个被开启的档案
    r:代表root directory

    范例二:找到/var底下属于FIFO类型的档案,并且找出存取该档案的程序
    [root@linux ~]# find /var -type p
    /var/spool/postfix/public/qmgr
    /var/spool/postfix/public/pickup
    [root@linux ~]# fuser /var/spool/postfix/public/qmgr
    /var/spool/postfix/public/qmgr: 1666 1675
    [root@linux ~]# ps aux | egrep '(1666|1675)'
    root 1666 0.0 0.3 5640 1516 ? Ss Jul25 0:01 /usr/libexec/postfix/master
    postfix 1675 0.0 0.4 5744 1604 ? S Jul25 0:00 qmgr -l -t fifo -u

    范例三:同范例二,但试图删除该PID?
    [root@linux ~]# fuser -ki /var/spool/postfix/public/qmgr
    /var/spool/postfix/public/qmgr: 1666 1675
    Kill process 1666 ? (y/N) n
    Kill process 1675 ? (y/N) n

     


    8、lsof

    lsof [options] filename
          列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这个列表对系统监测以及排错将是很有帮助的。
         如果说netcat是进行网络诊断的瑞士军刀,那么lsof就是Unix调试的瑞士军刀。Lsof是遵从Unix哲学的典范,它只做一件事情,并且做的相当完美—它可以列出某个进程打开的所有文件信息。打开的文件可能是普通的文件,目录,NFS文件,块文件,字符文件,共享库,常规管道,明明管道,符号链接,Socket流,网络Socket,UNIX域Socket,以及其它更多。因为Unix系统中几乎所有东西都是文件,你可以想象lsof该有多有用。
         在终端下输入lsof即可显示系统打开的文件,因为lsof需要访问核心内存和各种文件,所以必须以root用户的身份运行它才能够充分地发挥其功能。

    1)列出所有打开的文件
    lsof
    COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
    init 1 root cwd DIR 8,1 4096 2 /
    init 1 root rtd DIR 8,1 4096 2 /
    init 1 root txt REG 8,1 150584 654127 /sbin/init
    udevd 415 root 0u CHR 1,3 0t0 6254 /dev/null
    udevd 415 root 1u CHR 1,3 0t0 6254 /dev/null
    udevd 415 root 2u CHR 1,3 0t0 6254 /dev/null
    udevd 690 root mem REG 8,1 51736 302589 /lib/x86_64-linux-gnu/libnss_files-2.13.so
    syslogd 1246 syslog 2w REG 8,1 10187 245418 /var/log/auth.log
    syslogd 1246 syslog 3w REG 8,1 10118 245342 /var/log/syslog
    dd 1271 root 0r REG 0,3 0 4026532038 /proc/kmsg
    dd 1271 root 1w FIFO 0,15 0t0 409 /run/klogd/kmsg
    dd 1271 root 2u CHR 1,3 0t0 6254 /dev/null
    每行显示一个打开的文件,若不指定条件默认将显示所有进程打开的所有文件。lsof输出各列信息的意义如下:
    COMMAND:进程的名称
    PID:进程标识符
    USER:进程所有者
    FD:文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等
    TYPE:文件类型,如DIR、REG等
    DEVICE:指定磁盘的名称
    SIZE:文件的大小
    NODE:索引节点(文件在磁盘上的标识)
    NAME:打开文件的确切名称
    FD列中的文件描述符cwd值表示应用程序的当前工作目录,这是该应用程序启动的目录,除非它本身对这个目录进行更改,txt类型的文件是程序代码,如应用程序二进制文件本身或共享库,如上列表中显示的/sbin/init程序。其次数值表示应用程序的文件描述符,这是打开该文件时返回的一个整数。如上的最后一行文件/dev/initctl,其文件描述符为 10。u 表示该文件被打开并处于读取/写入模式,而不是只读 ? 或只写 (w) 模式。同时还有大写 的W 表示该应用程序具有对整个文件的写锁。该文件描述符用于确保每次只能打开一个应用程序实例。初始打开每个应用程序时,都具有三个文件描述符,从0到2,分别表示标准输入、输出和错误流。所以大多数应用程序所打开的文件的FD都是从3开始。
    与FD列相比,Type列则比较直观。文件和目录分别称为REG和DIR。而CHR和BLK分别表示字符和块设备;或者UNIX、FIFO和IPv4,分别表示UNIX 域套接字、先进先出(FIFO)队列和网际协议(IP)套接字。

    2)找出谁(进程)在使用某个文件
    lsof /path/to/file
    只需要执行文件的路径,lsof就会列出所有使用这个文件的进程,你也可以列出多个文件,lsof会列出所有使用这些文件的进程:lsof /path/to/file1 /path/to/file2
    lsof /etc/passwd 哪个进程在占用/etc/passwd
    lsof /dev/hda6 哪个进程在占用hda6
    lsof /dev/cdrom 哪个进程在占用光驱
    lsof `which httpd` 哪个进程在使用apache的可执行文件

    3)递归查找某个目录中所有打开的文件
    lsof +D /usr/lib
    加上+D参数,lsof会对指定目录进行递归查找,注意这个参数要比grep版本慢:lsof|grep '/usr/lib',之所以慢是因为+D首先查找所有的文件,然后一次性输出。

    4)列出某个用户打开的所有文件
    lsof -u pkrumins
    -u选项限定只列出所有被用户pkrumins打开的文件,你可以通过逗号指定多个用户:lsof -u rms,root,这条命令会列出所有rms和root用户打开的文件。你也可以像下面这样使用多个-u做同样的事情:lsof -u rms -u root

    5)查找某个程序打开的所有文件
    lsof -c apache
    -c选项限定只列出以apache开头的进程打开的文件,所以你可以不用像下面这样写:lsof | grep foo,而使用下面这个更简短的版本:lsof -c foo
    lsof -c sendmail 查看sendmail进程的文件使用情况
    lsof -c courier -u ^zahn 显示出那些文件被以courier打头的进程打开,但是并不属于用户zahn
    也可以只指定进程名称的开头:lsof -c apa 这会列出所有以apa开头的进程打开的文件,同样可以制定多个-c参数:lsof -c apache -c python,这会列出所有由apache和python打开的文件。

    6)组合。列出所有由某个用户或某个进程打开的文件
    lsof -u pkrumins -c apache
    可以组合使用多个选项,这些选项默认进行或关联,也就是说上面的命令会输入由pkrumins用户或是apache进程打开的文件。
    列出所有由一个用户与某个进程打开的文件:lsof -a -u pkrumins -c bash -a参数可以将多个选项的组合条件由或变为与,上面的命令会显示所有由pkrumins用户以及bash进程打开的文件。

    7)列出除root用户外的所有用户打开的文件
    lsof -u ^root
    注意root前面的^符号,它执行取反操作,因此lsof会列出所有root用户之外的用户打开的文件。

    8)取反。列出所有由某个PID对应的进程打开的文件
    lsof -p 1
    -p选项让你可以使用进程id来过滤输出。也可以用逗号来分离多个pid:lsof -p 450,980,333
    列出所有进程打开的文件除了某个pid的:lsof -p ^1 同前面的用户一样,你也可以对-p选项使用^来进行取反。

    9)网络连接
    lsof -i 列出所有网络连接,lsof的-i选项可以列出所有打开了网络套接字(TCP和UDP)的进程。
    lsof -i tcp 列出所有TCP网络连接
    lsof -i udp 列出所有UDP网络连接
    lsof -i :25 找到使用某个端口的进程,:25和-i选项组合可以让lsof列出占用TCP或UDP的25端口的进程。也可以使用/etc/services中制定的端口名称来代替端口号,比如:lsof -i :smtp
    lsof -i udp:53 找到使用某个udp端口号的进程
    lsof -a -u hacker -i 找到某个用户的所有网络连接
    lsof -N 列出所有NFS(网络文件系统)文件
    lsof -U 列出所有UNIX域Socket文件
    lsof -g 1234 列出所有对应某个组id的进程

    10)文件描述符
    lsof -d 2 列出所有以描述符2打开的文件
    lsof -d 0-2 列出所有描述符为0,1,2的文件。
    lsof -d mem 列出所有内存映射文件,-d选项还支持其它很多特殊值

    11)输出使用某些资源的进程pid
    lsof -t -i -t选项输出进程的PID,你可以将它和-i选项组合输出使用某个端口的进程的PID,下面的命令将会杀掉所有使用网络的进程:kill -9 `lsof -t -i`

    12)循环列出文件
    lsof -r 1 -r选项让lsof可以循环列出文件直到被中断,参数1的意思是每秒钟重复打印一次,这个选项最好同某个范围比较小的查询组合使用,比如用来监测网络活动:lsof -r 1 -u john -i -a

     


    9、mpstat

         mpstat(Multiprocessor Statistics)是实时系统监控工具。报告与CPU的一些统计信息,这些信息存放在/proc/stat文件中。在多CPUs系统里,不但能查看所有CPU的平均状况信息,而且能够查看特定CPU的信息。mpstat最大的特点是:可以查看多核心cpu中每个计算核心的统计数据;而类似工具vmstat只能查看系统整体cpu情况。

    mpstat [-P {|ALL}] [internal [count]]
    参数:
    -P {|ALL} 表示监控哪个CPU, cpu在[0,cpu个数-1]中取值
    internal 相邻的两次采样的间隔时间、
    count 采样的次数,count只能和delay一起使用
    当没有参数时,mpstat则显示系统启动以后所有信息的平均值。有interval时,第一行的信息自系统启动以来的平均信息。从第二行开始,输出为前一个interval时间段的平均信息。

    1)该命令将每隔2秒输出一次CPU的当前运行状况信息,一共输出5次,如果没有第二个数字参数,mpstat将每隔两秒执行一次,直到按CTRL+C退出。
    mpstat 2 5

    Linux 2.6.32-71.el6.i686 (Stephen-PC) 11/12/2011 _i686_ (1 CPU)
    04:03:00 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
    04:03:02 PM all 0.00 0.00 0.50 0.00 0.00 0.00 0.00 0.00 99.50
    04:03:04 PM all 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
    04:03:06 PM all 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
    04:03:08 PM all 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
    04:03:10 PM all 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
    Average: all 0.00 0.00 0.10 0.00 0.00 0.00 0.00 0.00 99.90

    第一行的末尾给出了当前系统中CPU的数量。后面的表格中则输出了系统当前CPU的使用状况,以下为每列的含义:
    %user 在internal时间段里,用户态的CPU时间(%),不包含nice值为负进程(usr/total)*100
    %nice 在internal时间段里,nice值为负进程的CPU时间(%) (nice/total)*100
    %sys 在internal时间段里,内核时间(%) (system/total)*100
    %iowait 在internal时间段里,硬盘IO等待时间(%) (iowait/total)*100
    %irq 在internal时间段里,硬中断时间(%) (irq/total)*100
    %soft 在internal时间段里,软中断时间(%) (softirq/total)*100
    %idle 在internal时间段里,CPU除去等待磁盘IO操作外的因为任何原因而空闲的时间闲置时间(%) (idle/total)*100

    计算公式如下:
    total_cur=user+system+nice+idle+iowait+irq+softirq
    total_pre=pre_user+ pre_system+ pre_nice+ pre_idle+ pre_iowait+ pre_irq+ pre_softirq
    user=user_cur – user_pre
    total=total_cur-total_pre
    其中_cur 表示当前值,_pre表示interval时间前的值。上表中的所有值可取到两位小数点。

    2)如果要看每个cpu核心的详细当前运行状况信息,输出如下:
    mpstat -P ALL 2 3
    -P ALL表示打印所有CPU的数据,这里也可以打印指定编号的CPU数据,如-P 0(CPU的编号是0开始的)

     


    10、vmstat

     

          用来获得UNIX系统有关进程、虚存、页面交换空间及CPU活动的信息。这些信息反映了系统的负载情况。vmstat首次运行时显示自系统启动开始的各项统计信息,之后运行vmstat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。
    1)每隔1秒输出一条信息,一共输出3条后退出
    vmstat 1 3
    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 0 531760 67284 231212 108 0 0 260 111 148 1 5 86 8 0
    0 0 0 531752 67284 231212 0 0 0 0 33 57 0 1 99 0 0
    0 0 0 531752 67284 231212 0 0 0 0 40 73 0 0 100 0 0

    有关进程的信息有:(procs)
    r: 在就绪状态等待的进程数,表示运行队列(就是说多少个进程真的分配到CPU),当这个值超过了CPU数目,就会出现CPU瓶颈了。这个也和top的负载有关系,一般负载超过了3就比较高,超过了5就高,超过了10就不正常了,服务器的状态很危险。top的负载类似每秒的运行队列。如果运行队列过大,表示你的CPU很繁忙,一般会造成CPU使用率很高。
    b: 表示阻塞的进程。

    1)有关内存的信息有:(memory)
    swpd: 正在使用的swap大小,单位为KB。
    free: 空闲的内存空间。
    buff: 已使用的buff大小,对块设备的读写进行缓冲。
    cache: 已使用的cache大小,文件系统的cache。

    2)有关页面交换空间的信息有:(swap)
    si: 交换内存使用,由磁盘调入内存,每秒传输的大小。
    so: 交换内存使用,由内存调入磁盘,每秒传输的大小。

    3)有关IO块设备的信息有:(io)
    bi: 从块设备读入的数据总量(读磁盘) (KB/s)
    bo: 写入到块设备的数据总理(写磁盘) (KB/s)

    4)有关故障的信息有:(system)
    in: 在指定时间内的每秒中断次数。
    sy: 在指定时间内每秒系统调用次数。
    cs: 在指定时间内每秒上下文切换的次数。 例如调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好,太大了,要考虑调低线程或者进程的数目,例如在 apache和nginx这种web服务器中,我们一般做性能测试时会进行几千并发甚至几万并发的测试,选择web服务器的进程可以由进程或者线程的峰值一直下调,压测,直到cs到一个比较小的值,这个进程和线程数就是比较合适的值了。系统调用也是,每次调用系统函数,我们的代码就会进入内核空间,导致上下文切换,这个是很耗资源,也要尽量避免频繁调用系统函数。上下文切换次数过多表示你的CPU大部分浪费在上下文切换,导致CPU干正经事的时间少了,CPU没有充分利用,是不可取的。

    5)有关CPU的信息有:(cpu)
    us: 在指定时间间隔内CPU在用户态的利用率。
    sy: 在指定时间间隔内CPU在核心态的利用率。
    id: 在指定时间间隔内CPU空闲时间比。
    wa: 在指定时间间隔内CPU因为等待I/O而空闲的时间比。

    vmstat可以用来确定一个系统的工作是受限于CPU还是受限于内存:如果CPU的sy和us值相加的百分比接近100%,或者运行队列(r)中等待的进程数总是不等于0,且经常大于4,同时id也经常小于40,则该系统受限于CPU;如果bi、bo的值总是不等于0,则该系统受限于内存。

     

     


    11、pidstat

         主要用于监控全部或指定进程占用系统资源的情况,如CPU,内存、设备IO、任务切换、线程等。pidstat首次运行时显示自系统启动开始的各项统计信息,之后运行pidstat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。
    参数:
    -l 显示该进程和CPU相关的信息(command列中可以显示命令的完整路径名和命令的参数)。
    -d 显示该进程和设备IO相关的信息。
    -r 显示该进程和内存相关的信息。
    -w 显示该进程和任务时间片切换相关的信息。
    -t 显示在该进程内正在运行的线程相关的信息。
    -p 后面紧跟着带监控的进程id或ALL(表示所有进程),如不指定该选项,将监控当前系统正在运行的所有进程。

    1)监控pid为1(init)的进程的CPU资源使用情况,其中每隔3秒刷新并输出一次,3次后程序退出
    pidstat -p 1 2 3 -l
    07:18:58 AM PID %usr %system %guest %CPU CPU Command
    07:18:59 AM 1 0.00 0.00 0.00 0.00 0 /sbin/init
    07:19:00 AM 1 0.00 0.00 0.00 0.00 0 /sbin/init
    07:19:01 AM 1 0.00 0.00 0.00 0.00 0 /sbin/init
    Average: 1 0.00 0.00 0.00 0.00 - /sbin/init

    %usr: 该进程在用户态的CPU使用率。
    %system: 该进程在内核态(系统级)的CPU使用率。
    %CPU: 该进程的总CPU使用率,如果在SMP环境下,该值将除以CPU的数量,以表示每CPU的数据。
    CPU: 该进程所依附的CPU编号(0表示第一个CPU)。

    2)监控pid为1(init)的进程的设备IO资源负载情况,其中每隔2秒刷新并输出一次,3次后程序退出
    pidstat -p 1 2 3 -d
    07:24:49 AM PID kB_rd/s kB_wr/s kB_ccwr/s Command
    07:24:51 AM 1 0.00 0.00 0.00 init
    07:24:53 AM 1 0.00 0.00 0.00 init
    07:24:55 AM 1 0.00 0.00 0.00 init
    Average: 1 0.00 0.00 0.00 init

    kB_rd/s: 该进程每秒的字节读取数量(KB)。
    kB_wr/s: 该进程每秒的字节写出数量(KB)。
    kB_ccwr/s: 该进程每秒取消磁盘写入的数量(KB)。

    3)监控pid为1(init)的进程的内存使用情况,其中每隔2秒刷新并输出一次,3次后程序退出
    pidstat -p 1 2 3 -r
    07:29:56 AM PID minflt/s majflt/s VSZ RSS %MEM Command
    07:29:58 AM 1 0.00 0.00 2828 1368 0.13 init
    07:30:00 AM 1 0.00 0.00 2828 1368 0.13 init
    07:30:02 AM 1 0.00 0.00 2828 1368 0.13 init
    Average: 1 0.00 0.00 2828 1368 0.13 init

    minflt/s: 每秒次缺页错误次数(minor page faults),次缺页错误次数意即虚拟内存地址映射成物理内存地址产生的page fault次数
    majflt/s: 每秒主缺页错误次数(major page faults),当虚拟内存地址映射成物理内存地址时,相应的page在swap中,这样的page fault为major page fault,一般在内存使用紧张时产生
    VSZ: 该进程使用的虚拟内存(以kB为单位)
    RSS: 该进程使用的物理内存(以kB为单位)
    %MEM: 该进程使用内存的百分比
    Command: 拉起进程对应的命令

    4)监控pid为1(init)的进程任务切换情况,其中每隔2秒刷新并输出一次,3次后程序退出。
    pidstat -p 1 2 3 -w
    07:32:15 AM PID cswch/s nvcswch/s Command
    07:32:17 AM 1 0.00 0.00 init
    07:32:19 AM 1 0.00 0.00 init
    07:32:21 AM 1 0.00 0.00 init
    Average: 1 0.00 0.00 init

    cswch/s: 每秒任务主动(自愿的)切换上下文的次数。主动切换是指当某一任务处于阻塞等待时,将主动让出自己的CPU资源。
    nvcswch/s: 每秒任务被动(不自愿的)切换上下文的次数。被动切换是指CPU分配给某一任务的时间片已经用完,因此将强迫该进程让出CPU的执行权。

    5)监控pid为1(init)的进程及其内部线程的内存(r选项)使用情况,其中每隔2秒刷新并输出一次,3次后程序退出。需要说明的是,如果-t选项后面不加任何其他选项,缺省监控的为CPU资源
    pidstat -p 1 2 3 -tr
    Linux 2.6.32-71.el6.i686 (Stephen-PC) 11/16/2011 _i686_ (1 CPU)
    07:37:04 AM TGID TID minflt/s majflt/s VSZ RSS %MEM Command
    07:37:06 AM 1 - 0.00 0.00 2828 1368 0.13 init
    07:37:06 AM - 1 0.00 0.00 2828 1368 0.13 |__init

    07:37:06 AM TGID TID minflt/s majflt/s VSZ RSS %MEM Command
    07:37:08 AM 1 - 0.00 0.00 2828 1368 0.13 init
    07:37:08 AM - 1 0.00 0.00 2828 1368 0.13 |__init

    07:37:08 AM TGID TID minflt/s majflt/s VSZ RSS %MEM Command
    07:37:10 AM 1 - 0.00 0.00 2828 1368 0.13 init
    07:37:10 AM - 1 0.00 0.00 2828 1368 0.13 |__init

    Average: TGID TID minflt/s majflt/s VSZ RSS %MEM Command
    Average: 1 - 0.00 0.00 2828 1368 0.13 init
    Average: - 1 0.00 0.00 2828 1368 0.13 |__init

    TGID: 线程组ID。
    TID: 线程ID。
    以上监控不同资源的选项可以同时存在,这样就将在一次输出中输出多种资源的使用情况,如:pidstat -p 1 -dr。

     


     

    12、iostat

          主要用于监控系统设备的IO负载情况,iostat首次运行时显示自系统启动开始的各项统计信息,之后运行iostat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。iostat的数据的主要来源是/proc/partitions。
    -c 只显示CPU行
    -d 显示磁盘行
    -k 以千字节为单位显示磁盘输出
    -m 以M为单位显示磁盘输出
    -t 在输出中包括时间戳
    -x 在输出中包括扩展的磁盘指标

    1)仅显示设备的IO负载,其中每隔1秒刷新并输出结果一次,输出3次后iostat退出
    iostat -d 1 3
    Linux 2.6.32-71.el6.i686 (Stephen-PC) 11/16/2011 _i686_ (1 CPU)
    Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
    sda 5.35 258.39 26.19 538210 54560

    Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
    sda 0.00 0.00 0.00 0 0

    Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
    sda 0.00 0.00 0.00 0 0

    Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
    sda 0.00 0.00 0.00 0 0

    Blk_read/s 每秒块(扇区)读取的数量。
    Blk_wrtn/s 每秒块(扇区)写入的数量。
    Blk_read 总共块(扇区)读取的数量。
    Blk_wrtn 总共块(扇区)写入的数量。

    2)显示和io相关的扩展数据
    iostat -dx 1 3

    Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
    sda 5.27 1.31 2.82 1.14 189.49 19.50 52.75 0.53 133.04 10.74 4.26

    Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
    sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

    Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
    sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

    rrqm/s 队列中每秒钟合并的读请求数量
    wrqm/s 队列中每秒钟合并的写请求数量
    r/s 每秒钟完成的读请求数量
    w/s 每秒钟完成的写请求数量
    rsec/s 每秒钟读取的扇区数量
    wsec/s 每秒钟写入的扇区数量
    avgrq-sz 平均请求扇区的大小
    avgqu-sz 平均请求队列的长度,队列长度越短越好。
    await 平均每次请求的等待时间,这个时间包括了队列时间和服务时间,也就是说,一般情况下,await大于svctm,它们的差值越小,则说明队列时间越短,反之差值越大,队列时间越长说明系统出了问题。
    util 设备的利用率。在统计时间内所有处理IO时间,除以总共统计时间。例如,如果统计间隔1秒,该设备有0.8秒在处理IO,而0.2秒闲置,那么该设备的%util = 0.8/1 = 80%,所以该参数暗示了设备的繁忙程度。一般地,如果该参数是100%表示设备已经接近满负荷运行了(当然如果是多磁盘,即使%util是100%,因为磁盘的并发能力,所以磁盘使用未必就到了瓶颈)。

     


     

    13、iotop

         用来监视磁盘I/O使用状况的top类工具。iotop具有与top相似的UI,其中包括PID、用户、I/O、进程等相关信息。
    参数:
    –version 查看版本信息
    -h, –help 查看帮助信息
    -o, –only 只显示在划硬盘的程序
    -b, –batch 批量处理 用来记录日志
    -n NUM 设定循环几次
    -d SEC, –delay=SEC 设定显示时间间隔

    iotop常用快捷键
    左右箭头 --> 改变排序方式,默认是按IO排序
    r --> 改变排序顺序
    o --> 只显示有IO输出的进程
    p --> 进程/线程的显示方式的切换
    a --> 显示累积使用量
    q --> 退出

    1)直接运行iotop
    Total DISK READ: 6.01 M/s | Total DISK WRITE: 3.85 K/s
    TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
    20074 be/4 hadoop 6.01 M/s 0.00 B/s 0.00 % 4.54 % java -Dproc_datanode -Xmx8192m -server org.apache.hadoop.hdfs.server.datanode.DataNode
    6371 be/4 hadoop 0.00 B/s 3.25 M/s 0.00 % 0.00 % java -Dproc_datanode -Xmx8192m -server org.apache.hadoop.hdfs.server.datanode.DataNode
    8497 be/4 hadoop 0.00 B/s 3.67 M/s 0.00 % 0.00 % java -Dproc_datanode -Xmx8192m -server org.apache.hadoop.hdfs.server.datanode.DataNode
    1 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % init
    2 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kthreadd]
    通过输出结果,我们可以清楚地知晓是什么程序在读写磁盘,速度以及命令行,pid 等信息。


    14、watch

         实时监测命令,watch是一个非常实用的命令,可以帮你实时监测一个命令的运行结果,省得一遍又一遍的手动运行。该命令最为常用的两个选项是-d和-n,其中-n表示间隔多少秒执行次"command",-d表示高亮发生变化的位置。

    用法举例:
    1)每隔一秒执行一次who命令,以监视服务器当前用户登录的状况
    watch -d -n 1 'who'

    2)watch可以同时运行多个命令,命令间用分号分隔。以下命令监控磁盘的使用状况,以及当前目录下文件的变化状况,包括文件的新增、删除和文件修改日期的更新等。
    watch -d -n 1 'df -h; ls -l'

     


    15、sar

    yum安装:yum install sysstat (sar是后台进程sadc的前端显示工具,安装名为“sysstat”的包后,sadc就会自动从内核收集报告并保存)

          sar(System Activity Reporter系统活动情况报告)是目前Linux上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等。
    常用格式:
    sar [options] [-A] [-o file] t [n]
    其中:
    t为采样间隔,n为采样次数,默认值是1;
    -o file表示将命令结果以二进制格式存放在文件中,file 是文件名。
    options 为命令行选项,sar命令常用选项如下:

    -A:所有报告的总和
    -u:输出CPU使用情况的统计信息
    -v:输出inode、文件和其他内核表的统计信息
    -d:输出每一个块设备的活动信息
    -r:输出内存和交换空间的统计信息
    -b:显示I/O和传送速率的统计信息
    -a:文件读写情况
    -c:输出进程统计信息,每秒创建的进程数
    -R:输出内存页面的统计信息
    -y:终端设备活动情况
    -w:输出系统交换活动信息

    1)CPU资源监控
    每10秒采样一次,连续采样3次,观察CPU的使用情况,并将采样结果以二进制形式存入当前目录下的文件test中,需键入如下命令:
    sar -u -o test 10 3

    17:06:16 CPU %user %nice %system %iowait %steal %idle
    17:06:26 all 0.00 0.00 0.20 0.00 0.00 99.80
    17:06:36 all 0.00 0.00 0.20 0.00 0.00 99.80
    17:06:46 all 0.00 0.00 0.10 0.00 0.00 99.90
    Average: all 0.00 0.00 0.17 0.00 0.00 99.83

    CPU:all 表示统计信息为所有 CPU 的平均值。
    %user:显示在用户级别(application)运行使用 CPU 总时间的百分比。
    %nice:显示在用户级别,用于nice操作,所占用 CPU 总时间的百分比。
    %system:在核心级别(kernel)运行所使用 CPU 总时间的百分比。
    %iowait:显示用于等待I/O操作占用 CPU 总时间的百分比。
    %steal:管理程序(hypervisor)为另一个虚拟进程提供服务而等待虚拟 CPU 的百分比。
    %idle:显示 CPU 空闲时间占用 CPU 总时间的百分比。

    a、若%iowait的值过高,表示硬盘存在I/O瓶颈
    b、若%idle的值高但系统响应慢时,有可能是 CPU 等待分配内存,此时应加大内存容量
    c、若%idle的值持续低于1,则系统的 CPU 处理能力相对较低,表明系统中最需要解决的资源是 CPU 。
    d、如果要查看二进制文件test中的内容,需键入如下sar命令:sar -u -f test

    2)inode、文件和其他内核表监控
    每10秒采样一次,连续采样3次,观察核心表的状态,需键入如下命令:
    sar -v 10 3

    17:10:49 dentunusd file-nr inode-nr pty-nr
    17:10:59 6301 5664 12037 4
    17:11:09 6301 5664 12037 4
    17:11:19 6301 5664 12037 4
    Average: 6301 5664 12037 4

    dentunusd:目录高速缓存中未被使用的条目数量
    file-nr:文件句柄(file handle)的使用数量
    inode-nr:索引节点句柄(inode handle)的使用数量
    pty-nr:使用的pty数量

    3) 内存和交换空间监控
    每10秒采样一次,连续采样3次,监控内存分页:
    sar -r 10 3

    kbmemfree:这个值和free命令中的free值基本一致,所以它不包括buffer和cache的空间.
    kbmemused:这个值和free命令中的used值基本一致,所以它包括buffer和cache的空间.
    %memused:这个值是kbmemused和内存总量(不包括swap)的一个百分比.
    kbbuffers和kbcached:这两个值就是free命令中的buffer和cache.
    kbcommit:保证当前系统所需要的内存,即为了确保不溢出而需要的内存(RAM+swap).
    %commit:这个值是kbcommit与内存总量(包括swap)的一个百分比.

    4)内存分页监控
    每10秒采样一次,连续采样3次,监控内存分页:
    sar -B 10 3

    pgpgin/s:表示每秒从磁盘或SWAP置换到内存的字节数(KB)
    pgpgout/s:表示每秒从内存置换到磁盘或SWAP的字节数(KB)
    fault/s:每秒钟系统产生的缺页数,即主缺页与次缺页之和(major + minor)
    majflt/s:每秒钟产生的主缺页数.
    pgfree/s:每秒被放入空闲队列中的页个数
    pgscank/s:每秒被kswapd扫描的页个数
    pgscand/s:每秒直接被扫描的页个数
    pgsteal/s:每秒钟从cache中被清除来满足内存需要的页个数
    %vmeff:每秒清除的页(pgsteal)占总扫描页(pgscank+pgscand)的百分比

    5)I/O和传送速率监控
    每10秒采样一次,连续采样3次,报告缓冲区的使用情况,需键入如下命令:
    sar -b 10 3

    18:51:05 tps rtps wtps bread/s bwrtn/s
    18:51:15 0.00 0.00 0.00 0.00 0.00
    18:51:25 1.92 0.00 1.92 0.00 22.65
    18:51:35 0.00 0.00 0.00 0.00 0.00
    Average: 0.64 0.00 0.64 0.00 7.59

    tps:每秒钟物理设备的 I/O 传输总量
    rtps:每秒钟从物理设备读入的数据总量
    wtps:每秒钟向物理设备写入的数据总量
    bread/s:每秒钟从物理设备读入的数据量,单位为 块/s
    bwrtn/s:每秒钟向物理设备写入的数据量,单位为 块/s

    6)进程队列长度和平均负载状态监控
    每10秒采样一次,连续采样3次,监控进程队列长度和平均负载状态:
    sar -q 10 3

    19:25:50 runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15
    19:26:00 0 259 0.00 0.00 0.00
    19:26:10 0 259 0.00 0.00 0.00
    19:26:20 0 259 0.00 0.00 0.00
    Average: 0 259 0.00 0.00 0.00

    runq-sz:运行队列的长度(等待运行的进程数)
    plist-sz:进程列表中进程(processes)和线程(threads)的数量
    ldavg-1:最后1分钟的系统平均负载(System load average)
    ldavg-5:过去5分钟的系统平均负载
    ldavg-15:过去15分钟的系统平均负载

    7)系统交换活动信息监控
    每10秒采样一次,连续采样3次,监控系统交换活动信息:
    sar - W 10 3

    19:39:50 pswpin/s pswpout/s
    19:40:00 0.00 0.00
    19:40:10 0.00 0.00
    19:40:20 0.00 0.00
    Average: 0.00 0.00

    pswpin/s:每秒系统换入的交换页面(swap page)数量
    pswpout/s:每秒系统换出的交换页面(swap page)数量

    8)设备使用情况监控
    每10秒采样一次,连续采样3次,报告设备使用情况,需键入如下命令:
    sar -d 10 3 -p

    17:45:54 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
    17:46:04 scd0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
    17:46:04 sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
    17:46:04 vg_livedvd-lv_root 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
    17:46:04 vg_livedvd-lv_swap 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

    参数-p可以打印出sda,hdc等磁盘设备名称,如果不用参数-p,设备节点则有可能是dev8-0,dev22-0
    tps:每秒从物理磁盘I/O的次数.多个逻辑请求会被合并为一个I/O磁盘请求,一次传输的大小是不确定的.
    rd_sec/s:每秒读扇区的次数.
    wr_sec/s:每秒写扇区的次数.
    avgrq-sz:平均每次设备I/O操作的数据大小(扇区).
    avgqu-sz:磁盘请求队列的平均长度,avgqu-sz的值较低时,设备的利用率较高
    await:从请求磁盘操作到系统完成处理,每次请求的平均消耗时间,包括请求队列等待时间,单位是毫秒(1秒=1000毫秒).
    svctm:系统处理每次请求的平均时间,不包括在请求队列中消耗的时间.
    %util:I/O请求占CPU的百分比,比率越大,说明越饱和,当%util的值接近100%时,表示设备带宽已经占满。

    9)要判断系统瓶颈问题,有时需几个 sar 命令选项结合起来
    怀疑CPU存在瓶颈,可用 sar -u 和 sar -q 等来查看
    怀疑内存存在瓶颈,可用 sar -B、sar -r 和 sar -W 等来查看
    怀疑I/O存在瓶颈,可用 sar -b、sar -u 和 sar -d 等来查看

    10)分析网卡流量
    sar -n { DEV | EDEV | NFS | NFSD | SOCK | ALL }
    sar提供六种不同的语法选项来显示网络信息。-n选项使用6个不同的开关:DEV | EDEV | NFS | NFSD | SOCK | ALL 。DEV显示网络接口信息,EDEV显示关于网络错误的统计数据,NFS统计活动的NFS客户端的信息,NFSD统计NFS服务器的信息,SOCK显示套接字信息,ALL显示所有5个开关。它们可以单独或者一起使用。

    a)sar -n DEV 2 10
    Linux 2.6.18-53.el5PAE (localhost.localdomain) 03/29/2009

    01:39:40 AM IFACE rxpck/s txpck/s rxbyt/s txbyt/s rxcmp/s txcmp/s rxmcst/s
    01:39:42 AM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
    01:39:42 AM eth1 131.34 104.98 119704.48 36110.45 0.00 0.00 0.00
    01:39:42 AM sit0 0.00 0.00 0.00 0.00 0.00 0.00 0.00

    01:39:42 AM IFACE rxpck/s txpck/s rxbyt/s txbyt/s rxcmp/s txcmp/s rxmcst/s
    01:39:44 AM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
    01:39:44 AM eth1 168.00 165.50 114496.50 83938.50 0.00 0.00 0.00
    01:39:44 AM sit0 0.00 0.00 0.00 0.00 0.00 0.00 0.00

    IFACE:LAN接口
    rxpck/s:每秒钟接收的数据包
    txpck/s:每秒钟发送的数据包
    rxbyt/s:每秒钟接收的字节数
    txbyt/s:每秒钟发送的字节数
    rxcmp/s:每秒钟接收的压缩数据包
    txcmp/s:每秒钟发送的压缩数据包
    rxmcst/s:每秒钟接收的多播数据包


    b)sar -n EDEV 2 10
    Linux 2.6.18-53.el5PAE (localhost.localdomain) 03/29/2009

    01:42:18 AM IFACE rxerr/s txerr/s coll/s rxdrop/s txdrop/s txcarr/s rxfram/s rxfifo/s txfifo/s
    01:42:20 AM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
    01:42:20 AM eth1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
    01:42:20 AM sit0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

    IFACE:LAN接口
    rxerr/s:每秒钟接收的坏数据包
    txerr/s:每秒钟发送的坏数据包
    coll/s:每秒冲突数
    rxdrop/s:因为缓冲充满,每秒钟丢弃的已接收数据包数
    txdrop/s:因为缓冲充满,每秒钟丢弃的已发送数据包数
    txcarr/s:发送数据包时,每秒载波错误数
    rxfram/s:每秒接收数据包的帧对齐错误数
    rxfifo/s:接收的数据包每秒FIFO过速的错误数
    txfifo/s:发送的数据包每秒FIFO过速的错误数

    c)sar -n SOCK 2 10
    Linux 2.6.18-53.el5PAE (localhost.localdomain) 03/29/2009

    01:44:32 AM totsck tcpsck udpsck rawsck ip-frag
    01:44:34 AM 243 9 8 0 0
    01:44:36 AM 242 9 7 0 0
    01:44:38 AM 238 9 7 0 0
    01:44:40 AM 238 9 7 0 0

    totsck:使用的套接字总数量
    tcpsck:使用的TCP套接字数量
    udpsck:使用的UDP套接字数量
    rawsck:使用的raw套接字数量
    ip-frag:使用的IP段数量

    展开全文
  • Linux 性能监控分析

    2015-11-03 21:44:39
    一、 Linux性能分析—内存 1. 内存工作机制 当有应用需要读写磁盘数据时,由系统把相关数据从磁盘读取到内存,如果物理内存不够,则把内存中的部分数据导入到磁盘,从而把磁盘的部分空间当作虚拟内存来使用,也...
  • GitHub Linux下网络监控工具总结 AderXCoding/system/tools/network_monitor本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可, 转载请注明出处 对任何规模的业务来说, 网络监控工具都...
  • 一段时间以来,我们在网上向读者介绍了如何为Linux以及类Linux操作系统配置多种不同的性能监控工具。在这篇文章中我们将罗列一系列使用最频繁的性能监控工具,并对介绍到的每一个工具提供了相应的简介链接,大致将其...
  • 随着互联网行业的不断发展,各种监控工具多得不可胜数。这里列出网上最全的监控工具。让你可以拥有超过80种方式来管理你的机器。在本文中,我们主要包括以下方面:命令行工具网络相关内容系统相关的监控工具日志监控...
  • top命令是linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况: 前半部分是系统统计信息,后半部分是进程信息。从左到右依次表示:系统当前时间,系统运行时间,当前登录用户数。load average...
  • 大家好今天给大家带来zabbix3.4.8监控主机,那么最近由于我个人的关系。没有及时的更新文章所以,很抱歉那么今天我分享的内容是zabbix3.4.8监控服务器。本章的具体监控服务器如下: 服务器的CPU使用率 服务器的...
  • 零、Linux系统监控命令速查手册命令功能应用用法举例 free查看内存使用情况,包括物理内存和虚拟内存free -h或free -m vmstat对系统的整体情况进行统计,包括内核进程、虚拟内存、磁盘、陷阱和 CPU 活动的统计信息...
  • 硬件资源 本视频监控系统主要采用的硬件是GEC210为主板的开发板和USB数码高清摄像头,开发板将从USB摄像头收集到的视频数据发送到网络服务器,然后电脑和手机客户端通过网络服务器将视频数据接收并显示。可能有人想...
  • 通过Python开发对服务器硬件资源监控,通过图表进行实时展现,实现基本的运维管理功能。
  • 倍易电脑硬件管理软件跨平台应用,电脑设备管理软件,电脑硬件管理软件,硬件资产管理软件,电脑硬件资产管理...Linux,Apple Mac,Unix等操作系统 监控硬件变化公司有任何机器出现了配置的变化,包括硬件软件的变化
  • 开源运维监控产品*************************************************************************************************** Zabbix 推荐星级:★★★★★ Zabbix是一个基于WEB界面的提供分布式系统监控以及...
  • 您需要监控 Linux 服务器的性能吗?试试用这些内置命令和附加工具吧!大多数 Linux 发行版都附带了大量的监控工具。这些工具提供了获取系统活动的相关指标。您可以使用这些工具来查找性能问题的可能原因。本文提到的...
  • top命令相当于window系统的任务管理器,这个命令可以让我们轻松的查看到linux当前负载的实时数据,便于我们更好的管理系统合理作出调整; top命令比window系统任务管理器更强大,通过相应参数可以更直观快速输出...
  • Ganglia监控软件主要是用来监控系统性能的软件,如:cpu 、mem、硬盘利用率, I/O负载、网络流量情况等,通过曲线很容易见到每个节点的工作状态,对合理调整、分配系统资源,提高系统整体性能起到重要作用。...
  • 基本概念 QPS:query per second, 1秒内完成的请求数 RT:response time, 1个请求完成的时间 Throughput越大,Latency会越差。因为请求量过大,系统太繁忙,所以响应速度自然会低 Latency越好,能支持的Throughput...
  • 2016年11月10日 21:36:06阅读数:1926 我们监控我们的操作系统的时候如果可以把各个硬件监控信息生成形象化的分析报表图对于我们来说是件太好的事情了,而通过nom和nmon_analyser两者的结合完全可以实现我们的...
1 2 3 4 5 ... 20
收藏数 47,951
精华内容 19,180
关键字:

linux硬件资源监控