您的位置:首页 > 运维架构 > Linux

linux 系统负载&监控指标及使用工具 笔记

2011-07-10 12:24 796 查看
系统监控

==========

1.进程

2.CPU

3.Mem/Swap

4.I/O

5.network

==========

===============

系统资源查看

---------------

系统使用

--------

# w

# uptime

# last

# lastlog

# ac -p

# ac -d --每天总共登陆时间

---------

硬件信息

---------

# dmidecode

# lsmod/lspci/lsusb/lsof

# cat /proc/cpuinfo

# getconf LONG_BIT

# cat /proc/meminfo

# free -m

# sfdisk -s

# fdisk -l

# df -Th

--------

网络信息

--------

# ethtool eth0

# ifconfig

# cat /proc/net/bonding/bond0

# cat /etc/sysconfig/network

# cat /etc/sysconfig/network-scripts/ifcfg-bond0

# cat /etc/resolv.conf

--------

进程信息

--------

# ps -aux

# ps -ef

# top

--------

系统日志

--------

# tail -n 50 /var/log/messages

# cat /var/log/dmesg

===============================

判定系统资源利用状况的一般准则:

Load:以处理器核心数为基本参考单位:

负载范围 负载等级

----------------------------------------------

<核心数量 x 0.25 低

核心数量 x 0.25 - 核心数量 x 0.65 合理

核心数量 x 0.65 - 核心数量 x 0.8 高

>核心数量 x 0.8 过载

核心数量 x 0.35 - 核心数量 x 0.6 最佳

如:2*4核 2.8-4.8 为最佳

CPU:算法:100%-Idle% = CPU Load%

负载范围 负载等级

------------------------------------------------

<25% 低

25% - 65% 合理

65% - 80% 高

>80% 过载

35% - 60% 最佳

内存;算法:(物理内存-inactive-free)/物理内存 = Memory Usage%

负载范围 负载等级

---------------------------

<50% 低

50% - 90% 合理

>90% 高

使用swap空间 过载

硬盘:tps

Tps 负载等级

---------------------------

<110tps 低

110tps – 385tps 合理

>385tps 高

网络(带宽和segments/sec)

负载范围 负载等级

--------------------------

<18Mbps 低

18Mbps – 54Mbps 合理

54Mbps – 72Mbps 高

>15000segments/sec

>72Mbps 过载

-----------------------------------------------------------------

| 好 | 坏 | 差

-----------------------------------------------------------------

CPU | user%+sys% <70% | user%+sys% =85% | user%+sys% >=90%

-----------------------------------------------------------------

内存 | Swap In(si) =0 | Per CPU with 10 | More Swap IN &

| Swap Out(so) =0 | page/s | Swap Out

-----------------------------------------------------------------

磁盘 | iostat% <20% | iowait% =35% | iowait% >=50%

-----------------------------------------------------------------

sysstat软件包 --强大的监控功能

vmstat,iostat,mpstat,sar

=====================================

vmstat(Virtual Meomory Statistics)

=====================================

[root@localhost ]# vmstat 5 3

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------

r b swpd free buff cache si so bi bo in cs us sy id wa st

1 0 116 48824 14980 718704 0 0 217 374 602 459 3 4 93 1 0

0 0 116 48824 14988 718704 0 0 0 6 1005 151 0 0 100 0 0

0 0 116 48824 14996 718704 0 0 0 2 1006 160 0 0 100 0 0

以5秒为时间间隔,连续收集3次性能数据

r 在运行队列中等待的进程数

b 在等待io的进程数

---------------------------------------

swpd 已经使用的交换内存

free 空闲的物理内存

buff 用作缓冲区的内存数

cache 用作高速缓存的内存数

-----------------------------------------

si 从磁盘交换到内存的交换页数量(kb/秒)

so 从内存交换到磁盘的交换页数据(kb/秒)

-----------------------------------------

bi 发送到块设备的块数(块/秒)

bo 从块设备中接受的块数(块/秒)

-----------------------------------------

in 每秒的中断数,包括时钟中断

cs 每秒的上下文切换的次数 这个进程切换的过程被称作上下文切换

-----------------------------------------

us 用户进程使用的cpu的时间(%)

sy 系统进程使用的cpu时间(%)

id CPU空闲时间(%)

wa 等待IO所消耗的CPU的时间(%)

st 从虚拟设备中获得的时间(%)

=============================

CPU监控 mpstat

=============================

[root@localhost ]# mpstat 2

Linux 2.6.18-164.el5 (localhost.localdomain) 2010年11月24日

10时19分41秒 CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s

10时19分43秒 all 0.00 12.44 31.84 8.21 0.50 0.25 0.00 46.77 1130.35

10时19分45秒 all 0.00 13.00 35.75 4.50 0.00 0.25 0.00 46.50 1066.33

irq:硬中断所占用的CPU时间

soft:软中断所占用的CPU时间

steal:虚拟设备所占用的CPU时间

intr/s:每秒钟处理的中断次数(秒/次)

==========================

//磁盘监控 iostat

==========================

[root@localhost]# iostat -t -d -k 5

Linux 2.6.18-164.el5 (localhost.localdomain) 2010年11月24日

Time: 10时20分51秒

Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn

sda 40.39 495.17 757.57 2222936 3400926

sda1 0.05 0.24 0.01 1094 30

sda2 0.05 0.16 0.03 737 116

sda3 40.28 494.71 757.54 2220893 3400780

hdc 0.09 1.81 0.00 8140 0

tps:每秒I/O操作次数,

该设备每秒的传输次数(Indicate the number of transfers per second that were issued to the device.)。“一次传输”意思是

“一次I/O请求”。多个逻辑请求可能会被合并为“一次I/O请求”。“一次传输”请求的大小是未知的。

=================

//网络监控

=================

ping的使用

-----------------

[root@myserver ~]# ping 192.168.1.200

PING 192.168.1.200 (192.168.1.200) 56(84) bytes of data.

64 bytes from 192.168.1.200: icmp_seq=1 ttl=64 time=1.56 ms

64 bytes from 192.168.1.200: icmp_seq=2 ttl=64 time=1.70 ms

64 bytes from 192.168.1.200: icmp_seq=3 ttl=64 time=0.832 ms

64 bytes from 192.168.1.200: icmp_seq=4 ttl=64 time=0.370 ms

--- 192.168.1.200 ping statistics ---

4 packets transmitted, 4 received, 0% packet loss, time 3000ms

rtt min/avg/max/mdev = 0.370/1.115/1.700/0.543 ms

每条返回信息,表示响应的数据包情况

icmp_seq:数据包的序号,

ttl:生存周期

time:数据包响应时间,从发出请求包到接收到响应包。

--------------

netstat的使用

--------------

[root@myserver ~]# netstat -i

Kernel Interface table

Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg

eth0 1500 0 630782 89 3 0 617467 0 0 0 BMRU

lo 16436 0 5617 0 0 0 5617 0 0 0 LRU

virbr0 1500 0 0 0 0 0 1197 0 0 0 BMRU

------------

-i选项可以监控主机网络接口的统计信息,显示数据包发送和接收的情况。

MTU:最大传输单元,即网络接口传输数据包的最大值。

Met:为度量值,越小优先级越高。

[root@test204 ~]# netstat -antp

Active Internet connections (servers and established)

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name

tcp 0 0 127.0.0.1:2208 0.0.0.0:* LISTEN 3127/hpiod

tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN -

tcp 0 0 0.0.0.0:997 0.0.0.0:* LISTEN 31769/rpc.rquotad

tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 32126/mysqld

tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 24034/smbd

tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 31707/portmap

tcp 0 0 0.0.0.0:1011 0.0.0.0:* LISTEN 31784/rpc.mountd

tcp 0 0 10.13.4.204:53 0.0.0.0:* LISTEN 25764/named

tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 25764/named

tcp 0 0 0.0.0.0:886 0.0.0.0:* LISTEN 2824/rpc.statd

tcp 0 0 0.0.0.0:23 0.0.0.0:* LISTEN 3182/xinetd

tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 3163/cupsd

tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 25764/named

tcp 0 0 0.0.0.0:40540 0.0.0.0:* LISTEN -

tcp 0 0 0.0.0.0:445 0.0.0.0:* LISTEN 24034/smbd

tcp 0 0 127.0.0.1:2207 0.0.0.0:* LISTEN 3132/python

tcp 0 0 :::8080 :::* LISTEN 13406/httpd

tcp 0 0 :::80 :::* LISTEN 13406/httpd

tcp 0 0 ::1:53 :::* LISTEN 25764/named

tcp 0 0 :::22 :::* LISTEN 3994/sshd

tcp 0 0 ::1:953 :::* LISTEN 25764/named

tcp 0 0 :::443 :::* LISTEN 13406/httpd

tcp 0 0 :::8443 :::* LISTEN 13406/httpd

tcp 0 0 ::ffff:10.13.4.204:22 ::ffff:10.13.114.134:2057 ESTABLISHED 7813/0

tcp 0 0 ::ffff:10.13.4.204:22 ::ffff:10.13.114.165:49621 ESTABLISHED 9034/1

-----------------

netstat主要用户检测主机的网络配置和状况,可以查看显示网络连接(进站和出站)、系统路由表、网络接口状态。

网络协议就是网络中传递、管理信息的一些规范。

Proto:协议类型

Local Address:显示主机名和服务名称,使用-n选项,显示主机的IP地址及端口号。

Foreign Address

State:连接状态。LISTEN:表示监听状态,等待接收入站请求。

ESTABLISHED:表示本机已经与其他主机建立好连接。

TIME_WAIT:等待足够的时间以确保远程TCP接收到连接中断请求的确认。

---------------

sar的使用

---------------

[root@localhost]# sar -n DEV 5 3

Linux 2.6.18-164.el5 (localhost.localdomain) 2010年11月24日

10时21分43秒 IFACE rxpck/s txpck/s rxbyt/s txbyt/s rxcmp/s txcmp/s rxmcst/s

10时21分48秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00

10时21分48秒 eth0 0.60 0.00 38.25 0.00 0.00 0.00 0.00

10时21分48秒 sit0 0.00 0.00 0.00 0.00 0.00 0.00 0.00

10时21分48秒 virbr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00

rxpck/s:每秒接收的数据包

rxbyt/s:每秒接收的字节数

rxcmp/s:每秒接收的压缩数据包

rxmcst/s:每秒接收的多播数据包

=================

//TOP综合监控

=================

top - 10:22:26 up 1:16, 4 users, load average: 1.26, 0.73, 0.32 //uptime

Tasks: 153 total, 1 running, 151 sleeping, 0 stopped, 1 zombie(僵死)

Cpu(s): 2.2%us, 4.1%sy, 0.6%ni, 90.6%id, 1.7%wa, 0.3%hi, 0.5%si, 0.0%st

Mem: 1026868k total, 1015176k used, 11692k free, 85216k buffers

Swap: 2562356k total, 116k used, 2562240k free, 618820k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

1 root 15 0 10348 632 540 S 0.0 0.1 0:00.93 init

2 root RT -5 0 0 0 S 0.0 0.0 0:00.41 migration/0

3 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0

4 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/0

5 root RT -5 0 0 0 S 0.0 0.0 0:00.16 migration/1

6 root 34 19 0 0 0 S 0.0 0.0 0:00.20 ksoftirqd/1

7 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/1

8 root 10 -5 0 0 0 S 0.0 0.0 0:00.06 events/0

9 root 10 -5 0 0 0 S 0.0 0.0 0:00.01 events/1

10 root 13 -5 0 0 0 S 0.0 0.0 0:00.01 khelper

19 root 11 -5 0 0 0 S 0.0 0.0 0:00.02 kthread

24 root 10 -5 0 0 0 S 0.0 0.0 0:00.25 kblockd/0

25 root 10 -5 0 0 0 S 0.0 0.0 0:01.27 kblockd/1

26 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 kacpid

87 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 cqueue/0

88 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 cqueue/1

91 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 khubd

--------------------------------------------------------------------------------

Cpu(s): 2.2%us, 4.1%sy, 0.6%ni, 90.6%id, 1.7%wa, 0.3%hi, 0.5%si, 0.0%st

us 用户进程

sy 系统进程

ni 改变过优先级的用户进程

id 空闲cpu

wa 等待io所占的百分比

hi 硬件中断

si 软件中断

st 虚拟设备

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

序号列名含义

PID 进程id

PPID 父进程id

RUSER Realusername

UID 进程所有者的用户id

USER 进程所有者的用户名

GROUP 进程所有者的组名

TTY 启动进程的终端名。不是从终端启动的进程则显示为?

PR 优先级

NI nice值。负值表示高优先级-20,正值表示低优先级19

P 最后使用的CPU,仅在多CPU环境下有意义

%CPU 上次更新到现在的CPU时间占用百分比

TIME 进程使用的CPU时间总计,单位秒

TIME+ 进程使用的CPU时间总计,单位1/100秒

%MEM 进程使用的物理内存百分比

VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES

SWAP 进程使用的虚拟内存中,被换出的大小,单位kb。

RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA

CODE 可执行代码占用的物理内存大小,单位kb

DATA 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb

SHR 共享内存大小,单位kb

nFLT 页面错误次数

nDRT 最后一次写入到现在,被修改过的页面数。

S 进程状态。

D= 不可中断的睡眠状态

R= 运行

S= 睡眠

T= 跟踪/停止

Z= 僵尸进程

COMMAND 命令名/命令行 进程名称

WCHAN 若该进程在睡眠,则显示睡眠中的系统函数名

Flags 任务标志,参考sched.h

僵尸进程简介:

因此可知,子进程并没有如期消失,而是转化为僵死进程继续占用系统进程表资源。如果系统存在大量的僵死进程,就会过多占用进程表空

间,影响新进程的产生。对于僵死进程,不能奢望通过kill命令杀死之,因为它已经"死"了,不再接收任何系统信号。

当子进程终止时,它释放资源,并且发送SIGCHLD信号通知父进程。父进程接收SIGCHLD信号,调用wait返回子进程的状态,并且释放系统进

程表资源。故如果子进程先于父进程终止,而父进程没有调用wait接收子进程信息,则子进程将转化为僵死进程,直到其父进程结束。

------------------

ps的使用

------------------

# ps -ef

UID PID PPID C STIME TTY TIME CMD

root 1 0 0 12:19 ? 00:00:00 init [3]

root 2 1 0 12:19 ? 00:00:00 [migration/0]

root 3 1 0 12:19 ? 00:00:00 [ksoftirqd/0]

root 4 1 0 12:19 ? 00:00:00 [watchdog/0]

root 5 1 0 12:19 ? 00:00:00 [migration/1]

# ps -aux

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

root 1 0.0 0.1 2072 616 ? Ss 12:19 0:00 init [3]

root 2 0.0 0.0 0 0 ? S< 12:19 0:00 [migration/0]

root 3 0.0 0.0 0 0 ? SN 12:19 0:00 [ksoftirqd/0]

root 4 0.0 0.0 0 0 ? S< 12:19 0:00 [watchdog/0]

# ps -el

TTY 该进程建立时所对应的终端,'?'表示该进程不占用终端

WCHAN 等待频道,为'-'时,表示进程正在执行,waiting for表示进程就绪

TIME 进程已执行的时间

C 进程使用CPU的估算

stat 用字符表示目前进程的状态

? 该进程未占用终端

PROCESS STATE CODES

Here are the different values that the s, stat and state output specifiers (header "STAT" or "S") will display to describe

the state of a process.

D Uninterruptible sleep (usually IO)

R Running or runnable (on run queue)

S Interruptible sleep (waiting for an event to complete)

T Stopped, either by a job control signal or because it is being traced.

W paging (not valid since the 2.6.xx kernel)

X dead (should never be seen)

Z Defunct ("zombie") process, terminated but not reaped by its parent.

For BSD formats and when the stat keyword is used, additional characters may be displayed:

< high-priority (not nice to other users)

N low-priority (nice to other users)

L has pages locked into memory (for real-time and custom IO)

s is a session leader

l is multi-threaded (using CLONE_THREAD, like NPTL pthreads do)

+ is in the foreground process group

//实时监控内存

# watch -n 1 -d free

===========================

//查看系统负载

---------------------------

系统平均负载,被定义为在特定时间间隔内运行队列中的平均进程数目。如果一个进程没有在等待

I/O操作的结果并主动进入等待状态(即没有被调用或没有被停止),则其位于运行队

列中。

[root@localhost ~]# uptime

9:15pm up 3 days, 4:32, 3 users, load average:4.61 4.36 4.15

[root@localhost ~]# cat /proc/loadavg

4.61 4.36 4.15 9/84 5662

每个值的含义为:

参数 解释

lavg_1 (4.61) 1-分钟平均负载 注:若是双CPU,则每个CPU的1min内的平均任务数为4.61/2=2.305

lavg_5 (4.36) 5-分钟平均负载

lavg_15(4.15) 15-分钟平均负载

nr_running (9) 在采样时刻,运行队列的任务的数目,与/proc/stat的procs_running表示相同意思

nr_threads (84) 在采样时刻,系统中活跃的任务的个数(不包括运行已经结束的任务)

last_pid(5662) 最大的pid值,包括轻量级进程,即线程。

2011-01-11

-------------------------

# watch -n 3 -d free --即时查看内存信息,`-n`后接更新时间 `-d`表示高亮显示变动

# lsof -i :25 --查看25端口的详细信息及运行情况

# iptables -L --查看防火墙当前情况

# cat /etc/mtab --查看系统临时挂载文件系统

# sync --将内存中数据写入磁盘

# ssh-keygen -t rsa --生成ssh公钥

# nmap localhost --查看系统当前使用端口

# rndc status --控制域名服务运行的工具

# dmidecode |grep -i serial\ number --查看SN,dmidecode可查看BIOS中信息

# for i in `cat aaa`;do ssh -o ConnectTimeout=2 $i "hostname;reboot;exit";done --批量操作

# getconf LONG_BIT --查看CPU多少位

01.17

--------------------------

# ll /lib/modules/2.6.18-53.el5/kernel/drivers/net/ --查看系统驱动目录中对应的网卡芯片模块文件

* 一般情况下,broadcom芯片对应tg3.ko,bnx2.ko,bcm57xx等,

Inter 芯片对应e1000.ko,e10000e.ko等

VIA 芯片对应via-rhine.ko,via-velocity.ko等

RealTek 芯片对应8139cp.ko,8139too.ko等

# lsmod --查看当前系统加载的模块信息

//利用lsof监控系统进程与程序

# lsof /var/log/messages --显示使用该文件的进程

COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME

syslogd 2727 root 2w REG 8,6 7059 2359420 /var/log/messages

# lsof -c nfs --显示 nfs 进程现在打开的文件

# lsof -g 3626 --3626是gid,显示gid为3626进程组打开的文件情况

# lsof -p 1 --1是pid,显示pid为1的进程所打开的文件及相关进程

# lsof -i (tcp):22 --通过监听指定的端口,协议和主机等信息,显示符合条件的进程信息

=====================

//kill 关闭进程的使用

=====================

# kill -l --查看所有信号的类型

# kill -9 PID :表示强制结束进程,SIGKILL

# kill -2 PID :表示结束进程,常用的‘Ctrl+C’就是一个kill -2信号

# kill -15 PID:表示正常结束进程,是kill的缺省选项,默认值

# killall httpd --终止httpd所有相关进程,与kill不同,killall后跟进程名字

# pkill -kill -t pts/12 #踢掉用户

# fuser -km /dev/cdrom --删除使用该设备的所有进程

====================

//硬件浏览器

--------------------

--BIOS,即基本输入/输出系统,是硬件自带的在计算机没有访问磁盘上程序之前决定机器基本功能的软件系统。BIOS包含控制键盘、

显示屏幕、磁盘驱动器,串行通信设备和其他功能的控制代码。bios存储在主板上的ROM芯片,现很多设计的bios在机器启动

时能从ROM被复制到RAM中运行

dmidecode 工具

---------------------------

1.biosdecode --bios信息查看工具,

1>.SMBIOS,以结构方式保存用于管理的系统信息,我们可以用SMBIOS获得系统类型、功能、操作状态,以及系统组将的安

装日期

2>.PnPBIOS(即插即用BIOS),硬件和对应软件自动分配资源,即把设备及其驱动程序配对,并建立通信信道。

3>.ACPI(高级配置电源界面),电源管理。

2.dmidecode --硬件浏览,与linux下lspci相比,信息更多

# dmidecode |grep -A20 "Processor" --检测中央处理器

# dmidecode |grep -i serial\ number --查看主板SN

# dmidecode |grep -A16 "Memory Device" --显示内存条安装情况

# dmidecode |grep -A2 "AGP" --查看主板的AGP总线插槽
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: