善用脚本 让你的Nagios记录系统监控日志.doc_第1页
善用脚本 让你的Nagios记录系统监控日志.doc_第2页
善用脚本 让你的Nagios记录系统监控日志.doc_第3页
善用脚本 让你的Nagios记录系统监控日志.doc_第4页
善用脚本 让你的Nagios记录系统监控日志.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

善用脚本 让你的Nagios记录系统监控日志(附vmstat详解) 摘要:Nagios是一个有着强大报警功能的系统监测工具,不过美中不足的是Nagios并没有提供记录状态和日志的功能,无法满足分析系统繁忙原因的需求。本文提供一段脚本,可以以vmstat为基础实现这个需求,在系统繁忙时分离出日志,供系统组同事们一起分析问题。 【51CTO独家特稿】我是一名linux/unix系统工程师,平时用Nagios自动监测公司的内网开发环境及外网应用环境。Nagios报警功能很强大,但有时我们的系统组有这个需求,特别是系统繁忙时希望能留下日志,以供分析:到底是受到了攻击,还是开发人员设置不当,亦或是运维人员改动了系统配置等。机器少时可能问题不大,但公司的CDN服务器集群是一百多台,目前看形势还在增长,所以我想设计一个shell脚本来作Nagios的补充,在系统繁忙时分离出日志,供系统组同事们一起分析问题,得出问题的症结所在。这里介绍下以vmstat为基础的系统监控脚本/root/monitor.sh此脚本设计思想与功能实现:此脚本设计为Nagios监控补遗,Nagios是即时监控服务器状态并即时报警,但美中不足的不能记录其状态及日志,所以设计此脚本;此脚本已在FreeBSD上成功调试运行,亦适用于RHEL/Centos系统;这里以常用生产服务器HPDL380G6(英特尔至强E55402.53GHz双四核)为依据,r的阀值为4;脚本内容如下1. #!/bin/bash 2. while: 3. do 4. vmr=vmstat|tail-1|awkprint$1 5. if$vmr-gt4 6. then 7. date/root/monitor.txt 8. vmstat/root/monitor.txt 9. netstat-anp/root/monitor.txt 10. ps-aux/root/monitor.txt 11. last/root/monitor.txt 12. tail-10/var/log/messages/root/monitor.txt 13. fi 14. sleep6015. done 16. 此脚本可放至后台运行 sh /root/monitor.sh & ,如遇CPU繁忙的情况,它会自动记载系统日志等以供分析。这里补充下vmstat的详细信息。这部分资料参考南非蜘蛛,如有问题可咨询本文作者抚琴煮酒:。用vmstat监视内存使用情况 vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、CPU活动进行监视。它是对系统的整体情况进行统计,不足之处是无法对某个进程进行深入分析。vmstat的语法如下:vmstat -V -n delay count其中,V表示打印出版本信息;n表示在周期性循环输出时,输出的头部信息仅显示一次;delay是两次输出之间的延迟时间;count是指按照这个时间间隔统计的次数。对于vmstat输出各字段的含义,可运行man vmstat查看。vmstat命令有四个可选标志可供使用。如果机器有虚拟地址缓存-c标志就改变输出报告缓存刷新统计数据。报告包括自从系统启动后每种缓存刷新全部总量。六个缓存类型是用户,上下文,区域,段,页,部分页。-i标志 使输出变为报告中断的数量。如果给出设备名,如d1,d2等,监控将在设备级*执行,(*注,参阅第十二章有关打开设备级监控的信息。)并报告每个给定设备的统计信息。修改普通报告来显示交换而非页面调度活动的信息。这选项改变显示的两个字段:si(换入)和so(换出)替代了re和mf字段。值得注意是,interval 和count选项对-i或-s选项是非法的。vmstat 参数详解procs:r-在运行队列中等待的进程数 b-在等待io的进程数 w-可以进入运行队列但被替换的进程memoyswap-现时可用的交换内存(k表示) free-空闲的内存(k表示)pagesre回收的页面 mf非严重错误的页面 pi进入页面数(k表示) po出页面数(k表示) fr空余的页面数(k表示) de提前读入的页面中的未命中数 sr通过时钟算法扫描的页面disk 显示每秒的磁盘操作。 s表示scsi盘,0表示盘号fault 显示每秒的中断数 in设备中断 sy系统中断 cycpu交换cpu 表示cpu的使用状态cs用户进程使用的时间 sy系统进程使用的时间 idcpu空闲的时间如果 r经常大于 4 ,且id经常少于40,表示cpu的负荷很重。如果pi,po 长期不等于0,表示内存不足。如果disk 经常不等于0, 且在 b中的队列 大于3, 表示 io性能不好。由vmstat看服务器一般VMSTAT工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数。如:oraclebrucelau oracle$ vmstat 1 2 procs memory swap io system CPUr b w swpd free buff cache si so bi bo in cs us sy id1 0 0 0 271844 186052 255852 0 0 2 6 102 10 0 0 1000 0 0 0 271844 186052 255852 0 0 0 0 104 11 0 0 100(注:目前系统几乎空闲,并且不同操作系统VMSTAT输出内容有所不同)目前说来,对于服务器监控有用处的度量主要有:r(运行队列)pi(页导入)us(用户CPU)sy(系统CPU)id(空闲)通过VMSTAT识别CPU瓶颈 r(运行队列)展示了正在执行和等待CPU资源的任务个数。当这个值超过了CPU数目,就会出现CPU瓶颈了。获得CPU个数的命令(LINUX环境):cat /proc/cpuinfo|grep processor|wc l当r值超过了CPU个数,就会出现CPU瓶颈,解决办法大体几种:1.最简单的就是增加CPU个数2.通过调整任务执行时间,如大任务放到系统不繁忙的情况下进行执行,进尔平衡系统任务3. 调整已有任务的优先级通过VMSTAT识别CPU满负荷首先需要声明一点的是,vmstat中CPU的度量是百分比的。当ussy的值接近100的时候,表示CPU正在接近满负荷工作。但要注意的是,CPU满负荷工作并不能说明什么,UNIX总是试图要CPU尽可能的繁忙,使得任务的吞吐量最大化。唯一能够确定CPU瓶颈的还是r(运行队列)的值。通过VMSTAT识别RAM瓶颈数据库服务器都只有有限的RAM,出现内存争用现象是Oracle的常见问题。首先察看RAM的数量,命令如下(LINUX环境):rootbrucelau root#free total used free shared buffers cachedMem: 1027348 873312 154036 185736 187496 293964-/+ buffers/cache: 391852 635496Swap: 2096440 0 2096440当然可以使用top等其他命令来显示RAM。当内存的需求大于RAM的数量,服务器启动了虚拟内存机制,通过虚拟内存,可以将RAM段移到SWAP DISK的特殊磁盘段上,这样会出现虚拟内

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论