如何监控服务器的磁盘性能

如何监控服务器的磁盘性能,第1张

Linux服务器性能监测是很重要的工作,服务器运行应该提供最有效的系统性能。当服务器系统性能突然低于平均应有的情况,问题可能来自在执行的进程、内存的使用率、磁盘的性能、网络流量和CPU 的压力。在预算短缺的今天,理解如何优化系统性能比以往任何时候都重要。 要实现它的前提是,你必须充分了解自己的计算机和网络,从而找到真正的瓶颈所在。本文提供一些基础的工具来辨别和处理一些性能问题。使用的Linux 发行版本是Red Hat Enterprise Linux 4,工作过程是:首先查看整个系统的状态,然后是检查特定的子系统。 Linux服务器进行性能监控有几种方法,每种方法都各有其优缺点。 使用SNMP等标准工具 标准及非标准工具能执行一个或多个收集、合并及传输阶段,如rstatd或SNMP工具,然而标准的rstat后台程序提供的信息是有限的,速度慢而且效率低。 内核模块 几个系统监控工程利用内核模块来存取监控数据。一般情况下,这是很有效的收集系统数据的方法。然而这种方法存在的问题是,当主内核源内有其它改变时,必须保持代码一致性。一个内核模块可能与用户想使用的其它内核模块相冲突。此外,在使用监控系统之前,用户必须获得或申请模块。 /proc虚拟文件系统 /proc虚拟文件系统是一个较快的、高效率执行系统监控的方法。使用/proc的主要缺点是必须保持代码分析与/proc 文件格式改变的同步。事实表明,Linux内核的改变比/proc 文件格式的改变要更频繁,所以,用/proc虚拟文件系统比用内核模块存在的问题要少。本文介绍的方法即基于/proc虚拟文件系统。 一、 /proc文件系统特点 Linux 系统向管理员提供了非常好的方法,使他们可以在系统运行时更改内核,而不需要重新引导内核系统。这是通过 /proc 虚拟文件系统实现的。/proc 文件虚拟系统是一种内核和内核模块用来向进程 (process) 发送信息的机制 (所以叫做 /proc)。这个伪文件系统让你可以和内核内部数据结构进行交互,获取 有关进程的有用信息,在运行中 (on the fly) 改变设置 (通过改变内核参数)。 与其他文件系统不同,/proc 存在于内存之中而不是硬盘上。不用重新启动而去看 CMOS ,就可以知道系统信息。这就是 /proc 的妙处之一。 小提示: 每个Linux系统根据软硬件不同/proc 虚拟文件系统的内容也有些差异。/proc 虚拟文件系统有三个很重要的目录:net,scsi和sys。Sys目录是可写的,可以通过它来访问或修改内核的参数,而net和scsi则依赖于内核配置。

Monit安装与配置

一、简介

Monit是一个在类unix平台下用于监视进程、文件、目录和设备的软件,可以修复停止运作或运作异常的程序,适合处理那些由于多种原因导致的软件错误。

二、安装

假定下面的安装和配置均在root身份下进行。

安装很简单,下载monit的源代码(现在最新版本是4101)monit-4101targz,将其放到适合的目录中,然后解压,configure(默认设置即可),make,make install 。具体在终端中使用如下命令:

tar –xzf monit-4101targz

cd monit-4101

/configure

make

make install

很快就可以安装完毕。

三、配置

安装完毕后,在monit源代码的目录将monit的配置文件monitrc拷贝到/etc目录下,使用命令:

cp monitrc /etc

注意/etc/monitrc这个文件的访问权限不能大于0700,所以可能还需要修改它的访问权限:

chmod 600 /etc/monitrc

然后打开/etc/monitrc这个文件进行配置,monit已经将大部分的配置的例子放在了里面,多数配置只需将配置前面的#(注释)去掉再做相应修改即可。我们主要用monit来监视tomcat服务器,所以配置如下:

set daemon 120 # 设置monit作为守护进程运行,并且每2分钟监视一次

# 2分钟是默认的时间间隔,从网上的看到的多个配置的例子

# 看到的时间间隔也是2分钟,应该是比较合理的

set logfile /var/log/monitlog # 设置日志文件的位置,如果要写入系统日志可以

# set logfile syslog

set httpd port 3000 and # monit内置了一个用于查看被监视服务

# 状态的http服务器,注意在防火墙中开启

# 该端口1,否则非localhost无法访问

use address 1921681184 # 设置这个http服务器的地址

# 若设置成localhost则只允许本地访问

allow localhost # 允许本地访问

allow 19216811/2552552550 # 允许内网访问

allow admin:monit11 # 设置使用用户名admin和密码monit11

# 来访问这个地址

set mailserver localhost # 设置邮件服务,设置后monit会将提示以

# 邮件的方式发送这里使用localhost为邮

# 件服务器地址,前提是本地已安装并开启

# 了sendmail服务

set alert 88fly@163com # 收邮件地址,如果要发送到多个地址

# 可以写多条这样的设置

# 下面设置监视tomcat

check process tomcat with pidfile /var/run/catalinapid # 这个要另外说明2

start program = "/etc/initd/tomcat start" # 设置启动命令

stop program = "/etc/initd/tomcat stop" # 设置停止命令

if 9 restarts within 10 cycles then timeout # 设置在10个监视周期内重

# 启了9次则超时,不再监视

# 这个服务。原因另外说明3

if cpu usage > 90% for 5 cycles then alert # 如果在5个周期内该服务

# 的cpu使用率都超过90%

# 则提示

# 若连续5个周期打开url都失败(120秒超时,超时也认为失败)

# 则重启服务

if failed url timeout 120 seconds for 5 cycles then restart

if failed url timeout 120 seconds for 5 cycles then restart

1可以使用命令:

/sbin/iptables -A INPUT -i eth0 -p tcp --dport 2812 -j ACCEPT

/sbin/service iptables save

2使用/var/run/catalinapid这个pid文件来检查tomcat这个服务(服务名可以随便起),tomcat进程默认是不使用pid文件的,pid文件需要显式为tomcat设置,可以打开tomcat目录下的bin目录,打开catalinash文件,在开头(但不是第一行)处加入:

CATALINA_PID=/var/run/catalinapid

即可指定pid文件,然后重启tomcat,这样就可以monit的配置中指定pid文件了。

3设置超时后不再监视是为了让服务不要一直重启,如果连续重启多次不成功,极有可能再重启下去也不会成功的。并且tomcat的重启需要占用大量系统资源,假如一直重启下去,反而会使其它服务也无法正常运作。

如果要监视其它服务,可以加入更多的监视逻辑,例如要监视mysql服务,可以:

check process mysql with pidfile /var/run/mysqld/mysqldpid

start program = /etc/initd/mysqld start"

stop program = "/etc/initd/mysqld stop"

if failed host 127001 port 3306 then restart

if 5 restarts within 5 cycles then timeout

监视ssh服务:

check process sshd with pidfile /var/run/sshdpid

start program "/etc/initd/sshd start"

stop program "/etc/initd/sshd stop"

if failed port 22 protocol SSH then restart

if 5 restarts within 5 cycles then timeout

如果监视的服务比较多,可以将各个服务的监视逻辑放在不同的文件,然后使用include命令包含进来,使配置文件更加清晰。例如:

include /etc/monit/includes/mysqld

上面的设置完后,设置monit随系统启动,在/etc/inittab文件的最后加入

# Run monit in standard run-levels

mo:2345:respawn:/usr/local/bin/monit -Ic /etc/monitrc

然后使用命令

telinit q

启动monit。

四、要注意的问题

由于将monit设置成了守护进程,并且在inittab中加入了随系统启动的设置,则monit进程如果停止,init进程会将其重启,而monit又监视着其它的服务,这意味着monit所监视的服务不能使用一般的方法来停止,因为一停止,monit又会将其启动要停止monit所监视的服务,应该使用monit stop name这样的命令,例如要停止tomcat:

monit stop tomcat

要停止全部monit所监视的服务可以使用monit stop all

要启动某个服务可以用monit stop name这样的命令,启动全部则是monit start all

以上转自:

今天研究了下monit 如上兄弟写的很详细,就直接拿来主义了,补充下短信告警

因公司有短信接口所以就直接发送告警,如下:

监控本机部分性能:

check system 127001

if loadavg (5min) > 4 for 4 times 5 cycles then exec "/etc/monit/script/sendsms sysload 5min >4"

if memory usage > 90% then exec "/etc/monit/script/sendsms 127001 memory useage>90%"

if cpu usage (user) > 70% for 4 times within 5 cycles then exec "/etc/monit/script/sendsms cpu(user) >70%"

if cpu usage (system) > 30% for 4 times within 5 cycles then exec "/etc/monit/script/sendsms cpu(system) >30% "

if cpu usage (wait) > 20% for 4 times within 5 cycles then exec "/etc/monit/script/sendsms system busy! cpu(wait) >20%"

监控远程机器的部分端口:

check host Unicom_mobi with address 2119024651

if failed icmp type echo count 10 with timeout 20 seconds then exec "/etc/monit/script/sendsms Unicom_mobi 2119024651 ping failed!"

if failed port 22 type tcp with timeout 10 seconds for 2 times within 3 cycles then exec "/etc/monit/script/sendsms unicom 2119024651:2222 connect failed!"

if failed port 9528 type tcp with timeout 10 seconds for 2 times within 3 cycles then exec "/etc/monit/script/sendsms unicom 2119024651:9528 connect failed!"

if failed port 9529 type tcp with timeout 10 seconds for 2 times within 3 cycles then exec "/etc/monit/script/sendsms unicom 2119024651:9529 connect failed!"

if failed port 9530 type tcp with timeout 10 seconds for 2 times within 3 cycles then exec "/etc/monit/script/sendsms unicom 2119024651:9530 connect failed!"

monit好处是可以在监控故障设置重启服务和执行自定义脚本,如下

check file passwd path /etc/passwd

# if failed md5 checksum

# then exec "/usr/bin/killall -q monit"

2 check filesystem root with path /dev/mapper/VolGroup00-LogVol00

if space usage > 80% for 5 times within 15 cycles then exec "/etc/monit/script/clear_coresh"

else if succeed for 1 times within 2 cycles then exec "/etc/monit/script/sendsms '/dev/sda1 usage > 90% clear core file succeed!'>/dev/null 2"

用Nmon监控Linux系统性能的方法请参见下面介绍(配图):

1、安装Nmon

2、一旦安装完成,则可以通过在终端执行 nmon 命令启动它。

Nmon命令执行之后,大家可以看到如下输出:

3、从上图中大家可以看到,Nmon 命令行工具是一个用户交互的应用程序,大家可以非常方便地使用键盘快捷键来查看相关统计信息

q : 停止并退出Nmon

h : 查看帮助信息

c : 查看 CPU 统计信息

m : 查看内存统计信息

d : 查看磁盘统计信息

k : 查看内核统计信息

n : 查看网络统计信息

N : 查看 NFS 统计信息

j : 查看文件系统统计信息

t : 查看 Top 进程统计信息

V : 查看虚拟内存统计信息

v : 详细输出模式

4、查看 CPU 统计信息

如果你想查看 CPU 性能信息,可以直接按 c 键:

5、查看 Top 进程统计信息

如果你想查看 Top 进程统计信息,可以直接按 t 键:

6、查看网络统计信息

如果你想查看网络统计信息,可以直接按 n 键:

7、磁盘I/O图

使用 d 键可以查看磁盘统计信息:

8、查看内核统计信息

如果你想查看内核统计信息,可以直接按 k 键:

9、获取系统信息

如果要查看 Linux 的系统信息,如:系统架构、操作系统版本、Linux 版本则可以使用 r 键,这对系统管理员非常有用。

以上是基础使用方法。下面再补充一些命令和方法:

1、启动

打开nmon所在的目录:cd /usr/local/nmon修改启动文件的访问权限:chmod 755 nmon_x86_rhel52启动nmon:/nmon_x86_rhel52如果要采样nmon的数据保存成文件,可以/nmon_x86_rhel52 -fT -s 30 -c 120其中30表示每隔30秒nmon取一次系统性能数据,120表示取120次;这样nmon将会在运行开始算起连续取得30sX120=60分钟,可根据实际需要时间调整;当运行以上命令后该目录下会生成一个nmon文件,该文件会根据间隔时间被写入性能数据,当一段时间后再查看该文件,文件字节变大

利用nmonanalyser分析nmon文件

当测试结束的同时ftp到服务器上将nmon文件get下来,打开nmon_analyserzip 包下的nmon analyser v338xls 文件,点击Analyse nomn data按钮,选择之前get来下的nmon文件。(如果报告以下宏的安全级别太高错误,则在“工具 -- 宏 --安全性”里把级别调低,然后重新打开 nmon analyser v338xls 文件)待分析结束后会生成性能分析结果文件(文件格式为xls,其中包括CPU,IO,内存等性能分析报告)。分析结果中有很多数据和图形,简要介绍主要的性能参数图像

41 系统汇总(对应excel标签的‘SYS_SUMM’)蓝线为cpu占有率变化情况;粉线为磁盘IO的变化情况;

42磁盘读写情况汇总(对应excel标签的‘DISK_SUMM’)蓝色为磁盘读的速率KB/sec紫色为磁盘写的速率KB/sec

43内存情况汇总(对应excel标签的‘MEM’)曲线表示内存剩余量(MB)分析数据得到的报告文件(xls)中包含很多性能分析结果数据,根据自己的需要查看。

2、nmon运行本身就消耗系统资源的;另外如果取到nmon文件后确定不再需要nmon继续收集信息则应kill掉nmon;命令:

ps -A | grep nmon #得到pid

kill -9 pid

suse10 enterprise sp2:

nmon_x86_rhel3

使用对应的操作系统文件:chmod +x nmon_x86_ubuntu810mv nmon_x86_ubuntu810 /usr/local/bin/nmon

对于 Debian 还要做以下操作(不做也同样能运行):apt-get install lsb-releaselsb_release -d | sed 's/Description:\t//' > /etc/debian_release

然后直接运行 nmon 即可。

采集数据并生成报表:采集数据:nmon -s10 -c60 -f -m /home/

参数解释:-s10 每 10 秒采集一次数据。-c60 采集 60 次,即为采集十分钟的数据。-f 生成的数据文件名中包含文件创建的时间。-m 生成的数据文件的存放目录。

这样就会生成一个 nmon 文件,并每十秒更新一次,直到十分钟后。生成的文件名如: hostname_090824_1306nmon ,"hostname" 是这台主机的主机名。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 如何监控服务器的磁盘性能

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情