Linux CPU监控指标

Linux发送监控指标到内部邮箱

数据库的健康监控是个非常重要的工作,重要的指标\KPI监控结果会有专门的采集、监控、告警系统来做相关事情。
而一些不是非常重要的或者还在设计和调试阶段的相关指标,我只是想发送到我自己邮箱,本文就针对在服务器上配置邮件发送监控数据的过程说明。

服务器版本为RHEL 6.2:
[[email protected]
~]# cat /etc/issue
Red Hat Enterprise Linux Server release 6.2 (Santiago)
Kernel \r on an \m

停用相关服务器:
[[email protected]
etc]# service sendmail stop
[[email protected]
etc]# service postfix stop
[[email protected]
etc]# service sendmail status
sendmail 已停
sm-client 已停
[[email protected]
etc]# service postfix status
master 已停

接下来的步骤比较重要,默认情况下服务器使用的SMTP并没办法发送邮件到企业组织内部邮箱,对此需要配置企业组织的邮箱信息:
[[email protected]
etc]# tail /etc/mail.rc
# For Linux and BSD, this should be set.
set bsdcompat

set from=[发送人邮箱地址]
set smtp=[smtp服务器地址]
set smtp-auth-user=[邮箱用户名]
set smtp-auth-password=[邮箱密码]
set smtp-auth=login

威尼斯网址开户网站,手工测试发送邮件:
[[email protected]
etc]# echo hello world |mail -s “test”
[email protected]
[[email protected]
etc]# python dbcheck.py >dbcheck.txt;cat dbcheck.txt|mail -s
dbcheck
[email protected]
[[email protected]
etc]# python dbcheck.py >dbcheck.txt;mail -s dbcheck
[email protected]<dhcheck.txt
[[email protected]
etc]# python dbcheck.py|mail -s dbcheck
[email protected]

发送邮件shell脚本:
[[email protected]]$
cat /home/pg/PycharmProjects/dbcheck.sh
#!/bin/sh
. /etc/profile
. ~/.bash_profile
python /home/pg/PycharmProjects/dbcheck.py|mail -s “dbcheck `date +%F’
‘%T`”
[email protected]

设置定时调度任务,CRON调用shell脚本:
[[email protected]]$
crontab -l
*/1 * * * * sh /home/pg/PycharmProjects/dbcheck.sh
1>>/home/pg/check.log 2>&1
-EOF-

数据库的健康监控是个非常重要的工作,重要的指标\KPI监控结果会有专门的采集、监控、告警系统来做相关事…

进程监控:top

Linux CPU监控指标

Linux提供了非常丰富的命令可以进行CPU相关数据进行监控,例如:top、vmstat等命令。top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态。如果在前台执行该命令,它将独占前台,直到用户终止该程序为止,比较准确的说,top命令提供了实时的对系统处理器的状态监视,它将显示系统中
CPU 最“敏感”的任务列表。该命令可以按 CPU
使用,内存使用和执行时间对任务进行排序;而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定。 

  
 top命令提供如下参数:     top [-] [d delay] [p
pid] [q] [c] [C] [S] [s] [i] [n iter] [b]

选项名 称         说明
d  delay   指定每两次屏幕信息刷新之间的时间间隔(delay 即为具体的间隔时间数值,它的单位是秒),可以使用 s交互命令来改变之。 
p pid 通过指定监控进程 ID(pid)来仅仅监控某个进程的状态。
q 该选项将使 top 没有任何延迟的进行刷新。如果调用程序有超级用户权限,那么 top 将以尽可能高的优先级运行。 
c 显示整个命令行而不只是显示命令名。 
C 显示 CPU 总体信息而取代分别显示每个 CPU 的信息,此参数仅对SMP 系统有效。 
S 指定累计模式。
s 使 top 命令在安全模式中运行。这将去除交互命令所带来的潜在危险。
i 使 top 不显示任何闲置或者僵死进程。 
n  iter 指定 top命令迭代输出的次数,iter为具体的迭代次数值。
b "Batch"方式运行top,在这种方式下,所有来自终端的输入都将被忽略(当然除了ctrl+c),该参数可以结合参数“n"运行指定迭代次数退出或者该进程被杀死。这是运行top输出到哑终端或输到非终端的默认运行方式

  示例一
                                                                
                                                                 
                                                                 
在控制台输入“top”,回车如下:
威尼斯网址开户网站 1
top命令输出信息包含两部分内容:
第一部分为统计信息,包含五行数据信息;第二部分为详细信息,显示了各个进程的详细信息。
  有必要了解下统计信息部分的输出信息内容的含义:

输出信息 说明
19:47:24 当前时间
up 15 min 系统运行时间
2 users 当前登录用户数,这里是jzhou和root
load average:0.02 , 0.14 , 0.21 系统负载,即任务队列的平均长度。三个数值分别为1分钟、5分钟、15分钟前到现在的平均值,即0.02,0.14,0.21
Tasks:122 total, 1 running,120 sleeping,0 stopped,1 zombie 122个进程(任务),其中有2个处于运行状态,120个处于睡眠状态,没有停止的进程,有1个僵尸进程
Cpus:0.7%us,0.7%sy,0.0%ni,97.6%id,0.0%wa,0.7%hi,0.3%si,0.0%st Cpu运行状态,用户进程(user)占用CPU的0.7%,系统进程(system)占用CPU的0.7%,用户进程没有改变过优先级的进程,所以user nice值为0.0%,97.6%的CPU处于空闲状态(idle),没有等待的输入输出,所以iowait的值也为0.0%,硬件请求终端时间(hardware interrupt)占CPU的0.7%,软终端请求时间占CPU的0.3%,st代表steal time,具体作用不是很清楚,网上说是为其它CPU预留的,不清楚
Mem:1035244k total,537528k used,497716k free,25816k buffers 内存总量为1035244k,已使用的内存总量为537528k,497716k为空闲内存总量,25816k用作内核缓存的内存总量。(这是虚拟机的情况,物理机好像还有其它参数)
Swap:0k total,0k used,0k free,351392k cached 交换分区总量为0k,使用的交换分区总量为0k,空闲交换分区总量为0k,351392k为缓冲的交换区总量(cached)、内存中的内容被患处到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,该数值即为这些内容已存在于内存中的交换区的大小。相应的内存再次被换出时可不必再对交换区写入。

然后看看详细信息部分输出的信息的内容:

输出信息 说明
PID 进程标识符
USER 进程所有者用户名
PR/PRI 进程执行的优先级
NI NICE值,负值表示高优先级,正值表示低优先级
VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR 共享内存大小,单位kb
S/STAT 进程状态
D:不可中断的睡眠状态
R:正在运行,或在队列中的进程
S:处于休眠状态
T:停止或被追踪
Z:僵尸进程
W:进入内存交换
X:死掉的进程

%CPU 上次更新到现在的CPU时间占用百分比
%MEN 进程使用的物理内存百分比
TIME+ 进程使用的CPU时间总计,单位1/100s
COMMAND 进程被执行的命令名称

  示例二                              
                                                                       
                                                         
                                                vmstat
命令,可以使您能够在同一行看到系统的内存、CPU
等使用情况,通常您可以用该命令来查看CPU 的利用率和饱和度。  先连接两个概念: CPU利用率:CPU利用率可以使用 vmstat通过从
100减去 id 或者 us与 sy之和来计算CPU 利用率 CPU饱和度:CPU 饱和度可以通过 vmstat
命令的“procs:r”来作为衡量标准,由于它是所有 cpu
运行队列的合计值,因此将 procs:r 除以 CPU
数目所得到的值可与其他服务器相比较。 任何持续不变的非零值都会引起性能的下降,但性能的下降是逐渐的。
  vmstat命令参数如下:
vmstat [-n] [delay
[count]]  也有必要了解下vmstat命令参数的含义:

参数名称 说明
n 通过这个开关参数,如果启用它则仅显示一次表头信息
delay 指定每两次屏幕信息刷新之间的时间间隔,单位:s
count 在结合delay参数使用时,如果给指定数值,则运行指定的次数后退出,否则将无限次运行

在控制台输入“vmstat –n
1”,回车执行后,该命令即为仅显示一次标头信息,每隔 1 秒钟显示一次
vmstat监控信息 威尼斯网址开户网站 2
然后了解下输出信息内容各部分代表的含义:
威尼斯网址开户网站 3
 
 威尼斯网址开户网站 4   示例三                              
                                                                       
                                                         
                                                               
    还可以通过“uptime”命令来获得 CPU
平均负载的情况。平均负载的计算通常描述为可运行和运行线程的平均数目。举例来说,如果一枚单CPU
服务器上有1 个运行线程占用了 CPU,有3
个运行进程在调度程序队列中,那么平均负载即为 1+3=4。对于一枚 16CPU
的服务器,负载是16 个运行线程,有 24
个运行进程在调度程序队列中,那么平均负载是 40。如果平均负载始终高于CPU
的数目,则可能导致应用程序性能的下降。需要说明的是平均负载只适用于CPU
负载的初始估算,深入的分析我们还需要借助于其他工具来做。再对
CPU平均负载有一个初步了解以后,让我们来看看该命令是如何使用的,它的输出内容又包含那些内容。
因为“uptime”命令仅提供了一个可选参数项“V”,即:显示该命令的版本信息,所以不用叙述了。
  在控制台输入“uptime”,回车执行后,运行结果:
威尼斯网址开户网站 5
可以看到“load
average:0.53,0.65,0.34”即为 CPU 平均负载对应系统在第 1分钟,5 分钟和
15 分钟的平均负载值。同时它们也代表 CPU 利用率和饱和度。如果 CPU
数目和平均负载的值相等,通常代表 100%的 CPU利用率,小于
CPU数目,则表示利用率小于 100%,大于 CPU数目需要用饱和度来衡量。

本文永久更新链接地址:

CPU监控指标
Linux提供了非常丰富的命令可以进行CPU相关数据进行监控,例如:top、vmstat等命令。top是一个动态显示过程,即可以通过用…

Linux提供了非常丰富的命令可以进行CPU相关数据进行监控,例如:top、vmstat等命令。top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态。如果在前台执行该命令,它将独占前台,直到用户终止该程序为止,比较准确的说,top命令提供了实时的对系统处理器的状态监视,它将显示系统中
CPU 最“敏感”的任务列表。该命令可以按 CPU
使用,内存使用和执行时间对任务进行排序;而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定。 

虚拟内存统计:vmstat

vmstat 2 1(隔2秒,采样一次)
测试参数

r :表示运行队列,如果运行队列过大,表示你的CPU很繁忙,一般会造成CPU使用率很高
b :表示阻塞的进程数
swpd :虚拟内存已使用的大小,如果大于0,表示你的机器物理内存不足了,如果不是程序内存泄露的原因,
那么你该升级内存了或者把耗内存的任务迁移到其他机器
free :空闲的物理内存的大小
buff : 系统占用的缓存大小
cache:直接用来记忆我们打开的文件,给文件做缓冲
si :每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存不够用或者内存泄露了
us :用户CPU时间 sy :系统CPU时间
so : 每秒虚拟内存写入磁盘的大小,如果这个值大于0,同上。
sy : 系统CPU时间,如果太高,表示系统调用时间长,例如是IO操作频繁。
id: 空闲 CPU时间,一般来说,id+ us + sy =100
wt : 等待IO CPU时间。

  
 top命令提供如下参数:

列出打开的文件:lsof

    top [-] [d delay]
[p pid] [q] [c] [C] [S] [s] [i] [n iter] [b]

网络包分析器:tcpdump

sudo apt-get update
sudo apt-get install tcpdump
tcpdump -h
sudo tcpdump -i eth0 -c 3

-i 查看命令帮助
-i 网络接口
-c 需要输出包数量
选项名 称         说明
d  delay   指定每两次屏幕信息刷新之间的时间间隔(delay 即为具体的间隔时间数值,它的单位是秒),可以使用 s交互命令来改变之。 
p pid 通过指定监控进程 ID(pid)来仅仅监控某个进程的状态。
q 该选项将使 top 没有任何延迟的进行刷新。如果调用程序有超级用户权限,那么 top 将以尽可能高的优先级运行。 
c 显示整个命令行而不只是显示命令名。 
C 显示 CPU 总体信息而取代分别显示每个 CPU 的信息,此参数仅对SMP 系统有效。 
S 指定累计模式。
s 使 top 命令在安全模式中运行。这将去除交互命令所带来的潜在危险。
i 使 top 不显示任何闲置或者僵死进程。 
n  iter 指定 top命令迭代输出的次数,iter为具体的迭代次数值。
b "Batch"方式运行top,在这种方式下,所有来自终端的输入都将被忽略(当然除了ctrl+c),该参数可以结合参数“n"运行指定迭代次数退出或者该进程被杀死。这是运行top输出到哑终端或输到非终端的默认运行方式

网络状态统计:netstat

netstat -h (查看帮助)
netstat -r
netstat -i (查看网络接口)

 

进程监控:Htop

sudo apt-get install htop
htop

示例一
                                                                
                                                                 
                                                               
 

监控linux磁盘I/O:iotop

这个命令只有在kernelv2.6.20及以后的版本中才有,python基本需要2.7及以上版本

在控制台输入“top”,回车如下:

输入/输出统计:iostat

sudo apt-get install sysstat
iostat

avg-cpu段:
%user: 在用户级别运行所使用的CPU的百分比
%nice:优先进程消耗的CPU时间,占所有CPU的百分比
%system: 在系统级别(kernel)运行所使用CPU的百分比
%iowait: CPU等待硬件I/O时,所占用CPU百分比
%steal: 管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比
%idle: CPU空闲时间的百分比

Device段:
tps: 每秒钟发送到的I/O请求数
KB_read /s: 每秒读取的block数
KB_wrtn/s: 每秒写入的block数
KB_read: 启动到现在 读入的block总数
KB_wrtn: 启动到现在写入的block总数

威尼斯网址开户网站 6

实时局域网ip监控:IPTraf

sudo apt-get install iptraf
sudo iptraf
sudo iptraf -h

top命令输出信息包含两部分内容:

服务管理程序:sysv-rc-conf

sudo apt-get install sysv-rc-conf
sudo sysv-rc-conf

删除apache2随机器启动的服务,并查看其他

sudo update-rc.d -f apache2 remove
sudo update-rc.d

第一部分为统计信息,包含五行数据信息;第二部分为详细信息,显示了各个进程的详细信息。

监视每个进程使用的网络带宽:NetHogs

sudo apt-get install nethogs
sudo nethogs

 

监视网络带宽:iftop

sudo apt-get install iftop
sudo iftop

有必要了解下统计信息部分的输出信息内容的含义:

进程监控,资源监控,文件监控system Monitor

sudo apt-get install gnome-system-monitor
gnome-system-monitor
输出信息 说明
19:47:24 当前时间
up 15 min 系统运行时间
2 users 当前登录用户数,这里是jzhou和root
load average:0.02 , 0.14 , 0.21 系统负载,即任务队列的平均长度。三个数值分别为1分钟、5分钟、15分钟前到现在的平均值,即0.02,0.14,0.21
Tasks:122 total, 1 running,120 sleeping,0 stopped,1 zombie 122个进程(任务),其中有2个处于运行状态,120个处于睡眠状态,没有停止的进程,有1个僵尸进程
Cpus:0.7%us,0.7%sy,0.0%ni,97.6%id,0.0%wa,0.7%hi,0.3%si,0.0%st Cpu运行状态,用户进程(user)占用CPU的0.7%,系统进程(system)占用CPU的0.7%,用户进程没有改变过优先级的进程,所以user nice值为0.0%,97.6%的CPU处于空闲状态(idle),没有等待的输入输出,所以iowait的值也为0.0%,硬件请求终端时间(hardware interrupt)占CPU的0.7%,软终端请求时间占CPU的0.3%,st代表steal time,具体作用不是很清楚,网上说是为其它CPU预留的,不清楚
Mem:1035244k total,537528k used,497716k free,25816k buffers 内存总量为1035244k,已使用的内存总量为537528k,497716k为空闲内存总量,25816k用作内核缓存的内存总量。(这是虚拟机的情况,物理机好像还有其它参数)
Swap:0k total,0k used,0k free,351392k cached 交换分区总量为0k,使用的交换分区总量为0k,空闲交换分区总量为0k,351392k为缓冲的交换区总量(cached)、内存中的内容被患处到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,该数值即为这些内容已存在于内存中的交换区的大小。相应的内存再次被换出时可不必再对交换区写入。

然后看看详细信息部分输出的信息的内容:

输出信息 说明
PID 进程标识符
USER 进程所有者用户名
PR/PRI 进程执行的优先级
NI NICE值,负值表示高优先级,正值表示低优先级
VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR 共享内存大小,单位kb
S/STAT 进程状态
D:不可中断的睡眠状态
R:正在运行,或在队列中的进程
S:处于休眠状态
T:停止或被追踪
Z:僵尸进程
W:进入内存交换
X:死掉的进程

%CPU 上次更新到现在的CPU时间占用百分比
%MEN 进程使用的物理内存百分比
TIME+ 进程使用的CPU时间总计,单位1/100s
COMMAND 进程被执行的命令名称

 

示例二                              
                                                                       
                                                         
                                               

vmstat
命令,可以使您能够在同一行看到系统的内存、CPU
等使用情况,通常您可以用该命令来查看CPU 的利用率和饱和度。 

先连接两个概念:

CPU利用率:CPU利用率可以使用 vmstat通过从
100减去 id 或者 us与 sy之和来计算CPU 利用率

CPU饱和度:CPU 饱和度可以通过 vmstat
命令的“procs:r”来作为衡量标准,由于它是所有 cpu
运行队列的合计值,因此将 procs:r 除以 CPU
数目所得到的值可与其他服务器相比较。

任何持续不变的非零值都会引起性能的下降,但性能的下降是逐渐的。

 

vmstat命令参数如下:

vmstat [-n] [delay
[count]] 

也有必要了解下vmstat命令参数的含义:

参数名称 说明
n 通过这个开关参数,如果启用它则仅显示一次表头信息
delay 指定每两次屏幕信息刷新之间的时间间隔,单位:s
count 在结合delay参数使用时,如果给指定数值,则运行指定的次数后退出,否则将无限次运行

在控制台输入“vmstat –n
1”,回车执行后,该命令即为仅显示一次标头信息,每隔 1 秒钟显示一次
vmstat监控信息

威尼斯网址开户网站 7

然后了解下输出信息内容各部分代表的含义:

威尼斯网址开户网站 8

 
 威尼斯网址开户网站 9

 

示例三                              
                                                                       
                                                         
                                                               

    还可以通过“uptime”命令来获得 CPU
平均负载的情况。平均负载的计算通常描述为可运行和运行线程的平均数目。举例来说,如果一枚单CPU
服务器上有1 个运行线程占用了 CPU,有3
个运行进程在调度程序队列中,那么平均负载即为 1+3=4。对于一枚 16CPU
的服务器,负载是16 个运行线程,有 24
个运行进程在调度程序队列中,那么平均负载是 40。如果平均负载始终高于CPU
的数目,则可能导致应用程序性能的下降。需要说明的是平均负载只适用于CPU
负载的初始估算,深入的分析我们还需要借助于其他工具来做。再对
CPU平均负载有一个初步了解以后,让我们来看看该命令是如何使用的,它的输出内容又包含那些内容。

因为“uptime”命令仅提供了一个可选参数项“V”,即:显示该命令的版本信息,所以不用叙述了。

 

在控制台输入“uptime”,回车执行后,运行结果:

威尼斯网址开户网站 10

可以看到“load
average:0.53,0.65,0.34”即为 CPU 平均负载对应系统在第 1分钟,5 分钟和
15 分钟的平均负载值。同时它们也代表 CPU 利用率和饱和度。如果 CPU
数目和平均负载的值相等,通常代表 100%的 CPU利用率,小于
CPU数目,则表示利用率小于 100%,大于 CPU数目需要用饱和度来衡量。

本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-03/114335.htm

威尼斯网址开户网站 11

相关文章