好文档 - 专业文书写作范文服务资料分享网站

IT运维之Linux服务器监控方案

天下 分享 时间: 加入收藏 我要投稿 点赞

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 \ cpu_num=`grep -c 'model name' /proc/cpuinfo`

count_uptime=`uptime |wc -w`

load_15=`uptime | awk '{print $'$count_uptime'}'`

average_load=`echo \print 0;print a\

average_int=`echo $average_load | cut -f 1 -d \ load_warn=0.70

if [ $average_int -gt 0 ] then

echo \服务器单个核心15分钟的平均负载为$average_load,超过警戒值1.0,请立即处理!!!$(date +%Y%m%d/%H:%M:%S)\+%Y%m%d).log

echo \服务器单个核心15分钟的平均负载为$average_load,超过警戒值1.0,请立即处理!!!$(date +%Y%m%d/%H:%M:%S)\| mail -s \服务器系统负载严重告警\XXXX@qq.com

else

echo \服务器单个核心15分钟的平均负载值为$average_load,负载正常 $(date +%Y%m%d/%H:%M:%S)\ fi

#监控cpu使用率

cpu_idle=`top -b -n 1 | grep Cpu | awk '{print $5}' | cut -f 1 -d \ if [ $cpu_idle -lt 20 ] then

echo \服务器cpu剩余$cpu_idle%,使用率已经超过80%,请及时处理。\

echo \服务器cpu剩余$cpu_idle%,使用率已经超过80%,请及时处理!!!\| mail -s \服务器cpu告警\XXXX@qq.com

else echo \服务器cpu剩余$cpu_idle%,使用\ fi

率正常

#监控交换分区

swap_total=`free -m | grep Swap | awk '{print $2}'` swap_free=`free -m | grep Swap | awk '{print $4}'`

swap_used=`free -m | grep Swap | awk '{print $3}'`

if [ $swap_used -ne 0 ] then

swap_per=0`echo \ swap_warn=0.20

swap_now=`expr $swap_per \\> $swap_warn` if [ $swap_now -eq 0 ] then

echo \服务器swap交换分区只剩下 $swap_free M 未使用,剩余不足20%,使用率已经超过80%,请及时处理。\+%Y%m%d).log

echo \服务器swap交换分区只剩下 $swap_free M 未使用,剩余不足20%, 使用率已经超过80%, 请及时处理。\服务器内存告警\XXXX@qq.com

else

echo \服务器swap交换分区剩下 $swap_free M未使用,使用率正常\ fi

else

echo \服务器交换分区未使用\ >>/usr/monitor/performance/performance_$(date +%Y%m%d).log fi

#监控磁盘空间

disk_sda1=`df -h | grep /dev/sda1 | awk '{print $5}' | cut -f 1 -d \ if [ $disk_sda1 -gt 80 ] then

echo \服务器 /根分区 使用率已经超过80%,请及时处理。\

echo \服务器 /根分区 使用率已经超过80%,请及时处理。 \服务器硬盘告警\XXXX@qq.com else

echo \服务器 /根分区 使用率为$disk_sda1%,使用率正常\ fi

#监控登录用户数

users=`uptime |awk '{print $6}'` if [ $users -gt 2 ] then

echo \服务器用户数已经达到$users个,请及时处理。\

echo \服务器用户数已经达到$users个,请及时处理。\服务器用户登录数告警\XXXX@qq.com

else

echo \服务器当前登录用户为$users个,情况正常\ fi

###############################################################################

性能监控日志 /usr/monitor/performance/performance_%Y%m%d.log

进程监控脚本

############################################################################### #!/bin/bash

IP=`ifconfig eth0 | grep \

tomcat_dir=\

mysql_dir=\ vsftp_dir=\ ssh_dir=\

for dir in $tomcat_dir $mysql_dir $vsftp_dir $ssh_dir do

process_count=$(ps -ef | grep \

for service in tomcat mysql vsftp ssh do

echo \ if [ $? -eq 0 ] then

if [ $process_count -eq 0 ] then

echo \is down at $(date +%Y%m%d%H:%M:%S)\

echo \mail -s \服务器 $service服务关闭告警\XXXX@qq.com

else echo \is running at $(date +%Y%m%d%H:%M:%S)\ fi else

continue fi done done

###############################################################################

进程监控日志 /usr/monitor//process/process_%Y%m%d.log

流量监控脚本

############################################################################### #!/bin/bash #

R1=`cat /sys/class/net/eth0/statistics/rx_bytes` T1=`cat /sys/class/net/eth0/statistics/tx_bytes` sleep 1

R2=`cat /sys/class/net/eth0/statistics/rx_bytes` T2=`cat /sys/class/net/eth0/statistics/tx_bytes` TBPS=`expr $T2 - $T1` RBPS=`expr $R2 - $R1` TKBPS=`expr $TBPS / 1024` RKBPS=`expr $RBPS / 1024`

echo \上传速率 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

IT运维之Linux服务器监控方案

IT运维之Linux服务器监控方案随着Linux应用日益广泛,绝大部分的网络服务器都使用Linux操作系统。为了全面掌握网络服务器的运行状况和趋势,需要对服务器进行全面的监控。利用Linux发行版搭建一个网络服务器可能对于许多人都是一件很容易的事情,但网络服务器正式上线后,服务器数据流动、连接数、网络流量、系统负荷等各方面都会增加,安全问题也随之而来,
推荐度:
点击下载文档文档为doc格式
22av141zp56trx01723y3gzju6vsnw00dia
领取福利

微信扫码领取福利

微信扫码分享