IT运维之Linux服务器监控方案.doc_第1页
IT运维之Linux服务器监控方案.doc_第2页
IT运维之Linux服务器监控方案.doc_第3页
IT运维之Linux服务器监控方案.doc_第4页
IT运维之Linux服务器监控方案.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

IT运维之Linux服务器监控方案随着Linux应用日益广泛,绝大部分的网络服务器都使用Linux操作系统。为了全面掌握网络服务器的运行状况和趋势,需要对服务器进行全面的监控。 利用Linux发行版搭建一个网络服务器可能对于许多人都是一件很容易的事情,但网络服务器正式上线后,服务器数据流动、连接数、网络流量、系统负荷等各方面都会增加,安全问题也随之而来,再考虑到日志、数据库的重要性,我想无论是哪一位系统管理员,都应该迫不及待地想把服务器上线的前期工作做好吧。 那我们究竟需要做好哪些工作准备呢?之前有看过一篇文章说到系统管理员应该定期完成的九件事情,我分析过后,认为有几件事情是必须得做的。首先是备份,做好定时备份策略,备份所有你认为重要的数据,并且定期检查你的备份是否有效、全面;日志轮换,无论你想用哪种轮换方式,控制日志增长避免驱动器已满是你的目的;做一定的安全措施,如防火墙iptables的访问控制,用denyhosts防止黑客远程暴力破解,mysql远程登录权限等等;最后就是服务器监控,也是我主要想讲述的内容。对于服务器的硬件资源、性能、带宽、端口、进程、服务等都必须有一个可靠和持续的监测,统计分析每天的各种数据,从而能及时反映出服务器哪里存在性能瓶颈、安全隐患等。另外是要有危机意识,就是了解服务器有可能出现哪些严重的问题,出现这些问题后该如何去迅速处理。比如数据库的数据丢失,日志容量过大,被黑客入侵等等。说到底,预防是关键。 监控,是预防的其中的一项重要工作。这里先说说我需要监控的内容。系统负载、cpu使用率、内存占用、磁盘空间、网络流量、端口、进程、apache或tomcat的连接数、mysql的运行状态这些都是我想要监控的东西,但又能做到多少呢,我只能尽力而为了。要了解服务器每时每刻的整体运行状态,单靠几个Linux自带的性能监测命令是很难实现的。所以,利用shell脚本和开源监控工具进行服务器监控成为了我的两个主要的选择。 利用shell脚本监控能够很好把握的监控的内容,时间,警告峰值,以及方便地进行告警通知,自定义监控日志内容等等;而许多开源的监控工具都十分方便和实用,比如有zabbix、cacti、nagios等,而且能够针对不同的监控内容,生成好看的便于观察的曲线图,多数的开源监控工具都比较成熟,至于哪个好用就得用过才知道。由于这些监控工具都有许多热血人士写了安装和使用的文档,我这里就不写进来了。想了解下的朋友也可以到我的博客上走走,在这里我主要是把自己写的一些shell监控脚本分享一下,希望大家能给点意见。 我这里写了四个脚本(performance.sh 性能监控,process.sh 进程监控,network.sh 流量监控,tongji.sh流量分析统计),并使用crontab定时执行脚本进行监控数据的记录,形成每天的监控日志放在如下相应的文件夹,并且超过自己设定的告警值后发邮件通知,如果是腾讯企业邮箱,163邮箱那些有免费短信通知功能的可以尝试一下,收到邮件告警后很快就能收到短信了,十分方便。性能监控脚本#!/bin/bash#监控cpu系统负载IP=ifconfig eth0 | grep inet addr | cut -f 2 -d : | cut -f 1 -d cpu_num=grep -c model name /proc/cpuinfocount_uptime=uptime |wc -wload_15=uptime | awk print $count_uptimeaverage_load=echo scale=2;a=$load_15/$cpu_num;if(length(a)=scale(a) print 0;print a | bc average_int=echo $average_load | cut -f 1 -d . load_warn=0.70 if $average_int -gt 0thenecho $IP服务器单个核心15分钟的平均负载为$average_load,超过警戒值1.0,请立即处理!$(date +%Y%m%d/%H:%M:%S) /usr/monitor/performance/performance_$(date +%Y%m%d).logecho $IP服务器单个核心15分钟的平均负载为$average_load,超过警戒值1.0,请立即处理!$(date +%Y%m%d/%H:%M:%S) | mail -s $IP服务器系统负载严重告警 XXXXelseecho $IP服务器单个核心15分钟的平均负载值为$average_load,负载正常 $(date +%Y%m%d/%H:%M:%S)/usr/monitor/performance/performance_$(date +%Y%m%d).logfi#监控cpu使用率cpu_idle=top -b -n 1 | grep Cpu | awk print $5 | cut -f 1 -d . if $cpu_idle -lt 20 thenecho $IP服务器cpu剩余$cpu_idle%,使用率已经超过80%,请及时处理。/usr/monitor/performance/performance_$(date +%Y%m%d).logecho $IP服务器cpu剩余$cpu_idle%,使用率已经超过80%,请及时处理! | mail -s $IP服务器cpu告警 XXXXelseecho$IP服务器cpu剩余$cpu_idle%,使用率正常/usr/monitor/performance/performance_$(date +%Y%m%d).logfi#监控交换分区swap_total=free -m | grep Swap | awk print $2swap_free=free -m | grep Swap | awk print $4swap_used=free -m | grep Swap | awk print $3if $swap_used -ne 0 thenswap_per=0echo scale=2;$swap_free/$swap_total | bcswap_warn=0.20swap_now=expr $swap_per $swap_warnif $swap_now -eq 0 then echo $IP服务器swap交换分区只剩下 $swap_free M 未使用,剩余不足20%,使用率已经超过80%,请及时处理。/usr/monitor/performance/performance_$(date +%Y%m%d).logecho $IP服务器swap交换分区只剩下 $swap_free M 未使用,剩余不足20%, 使用率已经超过80%, 请及时处理。 | mail -s $IP服务器内存告警 XXXXelse echo $IP服务器swap交换分区剩下 $swap_free M未使用,使用率正常/usr/monitor/performance/performance_$(date +%Y%m%d).log fielse echo $IP服务器交换分区未使用 /usr/monitor/performance/performance_$(date +%Y%m%d).logfi#监控磁盘空间disk_sda1=df -h | grep /dev/sda1 | awk print $5 | cut -f 1 -d %if $disk_sda1 -gt 80 then echo $IP服务器 /根分区 使用率已经超过80%,请及时处理。/usr/monitor/performance/performance_$(date +%Y%m%d).logecho $IP服务器 /根分区 使用率已经超过80%,请及时处理。 | mail -s $IP服务器硬盘告警 XXXXelse echo $IP服务器 /根分区 使用率为$disk_sda1%,使用率正常/usr/monitor/performance/performance_$(date +%Y%m%d).logfi#监控登录用户数users=uptime |awk print $6if $users -gt 2 thenecho $IP服务器用户数已经达到$users个,请及时处理。/usr/monitor/performance/performance_$(date +%Y%m%d).logecho $IP服务器用户数已经达到$users个,请及时处理。 | mail -s $IP服务器用户登录数告警 XXXXelse echo $IP服务器当前登录用户为$users个,情况正常/usr/monitor/performance/performance_$(date +%Y%m%d).logfi#性能监控日志 /usr/monitor/performance/performance_%Y%m%d.log进程监控脚本#!/bin/bashIP=ifconfig eth0 | grep inet addr | cut -f 2 -d : | cut -f 1 -d tomcat_dir=/opt/apache-tomcat-7.0.8mysql_dir=/usr/local/mysql/bin/mysqld_safevsftp_dir=/usr/sbin/vsftpdssh_dir=/usr/sbin/sshdfor dir in $tomcat_dir $mysql_dir $vsftp_dir $ssh_dir doprocess_count=$(ps -ef | grep $dir | grep -v grep | wc -l) for service in tomcat mysql vsftp ssh do echo $dir |grep -q $service if $? -eq 0 then if $process_count -eq 0 then echo $service is down at $(date +%Y%m%d%H:%M:%S) /usr/monitor/process/process_$(date +%Y%m%d).log echo $service is down at $(date +%Y%m%d%H:%M:%S) | mail -s $IP服务器 $service服务关闭告警 XXXX else echo $service is running at $(date +%Y%m%d%H:%M:%S) /usr/monitor/process/process_$(date +%Y%m%d).log fi else continue fi donedone#进程监控日志 /usr/monitor/process/process_%Y%m%d.log流量监控脚本#!/bin/bash#R1=cat /sys/class/net/eth0/statistics/rx_bytesT1=cat /sys/class/net/eth0/statistics/tx_bytessleep 1R2=cat /sys/class/net/eth0/statistics/rx_bytesT2=cat /sys/class/net/eth0/statistics/tx_bytesTBPS=expr $T2 - $T1RBPS=expr $R2 - $R1TKBPS=expr $TBPS / 1024RKBPS=expr $RBPS / 1024echo 上传速率 eth0: $TKBPS kb/s 下载速率 eth0: $RKBPS kb/s at $(date +%Y%m%d%H:%M:%S) /usr/monitor/network/network_$(date +%Y%m%d).log#流量监控日志 /usr/monitor/network/network_$(date +%Y%m%d).log流量分析脚本#!/bin/bash#TX=0;RX=0;MAX_TX=0;MAX_RX=0;while read linedo a=echo $line | grep eth0 |awk print $3if $a -ge 0 then TX=$a if $TX -ge $MAX_TX then MAX_TX=$TX fifi b=echo $line | grep eth0 |awk print $7if $b -ge 0 then RX=$b if $RX -ge $MAX_RX then MAX_RX=$RX fifidone /usr/monitor/network/tongji.log echo 最高下载速度为 $MAX_RX kb/s at $(date +%Y%m%d)/usr/monitor/network/tongji.log#流量分析日志 /usr/monitor/network/tongji.log 利用脚本进行系统监控是一个不错的选择,简单实用。之后我还想到用shell脚本进行对myqsl的监控,对日志增长的监控,对apache连接数监控等等,这个有待后面的研究了。 利用shell脚本进行监控当然是方便,可靠,但单靠一堆数据日志,很难发现什么趋势变化,再加上当你维护的服务器量较多的时候,更是手忙脚乱的。这里我推荐一些开源的监控工具来帮助大家更好地去做好系统监控。 Cacti,是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具。它通过snmpget来获取数据,使用 RRDtool绘画图形。在众多监测图形分析工具中,RRDTool所画的图是最好看的,而且Cacti还能定制模板,按需增加插件,功能十分强大。想要实现异常通知功能的话,可以整合Nagios来一起使用。Nagios是一个监视系统运行状态和网络信息的监视系统。能监视所指定的本地或远程主机以及服务,同时提供异常通知功能等。同时提供一个WEB界面以方便系统管理人员查看网络状态,各种系统问题,以及日志等等。Cacti+Nagios这个组合很好用,但配置过程比较复杂,大家可以尝试去搭建一个这样的实用而方便的分布式监控系统。 另外一个要介绍的监控工具叫Zabbix,除了能监视各种网络参数,保证服务器系统的安全运营之外,还能提供如短信、邮件、jabber等通知机制以让系统管理员快速定

温馨提示

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

评论

0/150

提交评论