大型网站的监控、报警与故障转移

2014-11-24 18:46:20 · 作者: · 浏览: 2

现代大型互联网公司主要有电子商务公司、社交网站公司和搜索引擎公司。在电子商务网站公司中,taobao.com的点击量在国内是最高的。日点击量20亿以上。而这个点击量还不是均匀分不到24个小时,而是分布在几个时间段。因为人们的购物时间是集中在几个不同的时间段的。这样,平均每小时的点击量更高。在2010年Taobao.com的交易额为300亿元,而平均每分钟交易额为5-10万元。如果taobao.com的服务器宕机一小时,公司的直接损失为300-600万,在交易高峰期可能更多。而在交易高分期,宕机的概率更大,因为服务器的负载在交易高峰期是最高的。由此可见监控和预警在大型网站的日常运营中是非常重要的。


在整个网站的后台架构中,物理设备主要由各种主机和交换设备组成。所以对整个后台系统的监控主要从主机监控和交换设备监控为主。根据监控粒度以及业务需求,需要对应用进程进行监控比如web server 、数据库等。数据库(比如MySQL)监控,如果监控粒度比较大,那么可以从以下几个方面展开监控:


1) 监控连接数


2) 监控时间段慢查询次数


3) 监控查询缓存使用情况


4) 监控主从延迟时间


5) 监控innodb buffer pool size使用情况


6) 监控sql线程和io线程(有replication需求的架构)


7) 监控大结果集查询语句


8) MySQL的存活及data file&log file这些是更基本的


一台主机包含cpu、内存、外设等设备,而cpu、内存、外设由总线相连(SMP架构,NUMA架构监控类似)。如图8-2所示。




图8-2


如图所示,主机由cpu、外设、内存、总线组成。而一台主机要对外提供访问,需要由网卡提供网络接入。所以对一台主机的监控从cpu、内存、外设以及网卡入手。


常用的监控软件有Nagios、Cacti、Mrtg等。如果公司有需求,可以自己开发相应的绘图软件及数据采集软件完成监控展示、报警和故障转移等功能。下面使用Mrtg再结合shell程序实现监控,给出一个主机监控解决方案。


对主机监控,主要从cpu、内存、外设、网卡使用情况及性能进行监控。包括cpu的使用量及空闲量、内存的使用量及空闲量、磁盘的使用量及读写速度、网卡的出入流量等。因为利用Mrtg进行监控,所以之前要安装SNMP和M rtg软件。



主要监控cpu的使用百分比,空闲百分比。在成功安装snmp和mrtg的前提下,主要步骤如下(整个监控项目部署在/root/Desktop/monitor下):


(1)编写shell监控程序 cpuinfo.sh并赋权限为750。


[root@localhost monitor]# cat cpuinfo.sh


#!/bin/bash


#author longxibendi


#blog http://blog.csdn.net/longxibendi


#function getcpu usage information


/usr/bin/sar -u 1 3 > cpu.log


cat cpu.log | grep Average | awk '{ print$3+$5;}'


cat cpu.log | grep Average | awk '{ print$8;}'


/usr/bin/uptime


/sbin/ifconfig | grep "inet addr" |head -n 1 | awk '{print $2;}'



(2配置mrtg的配置文件mrtg.cfg添加以下内容。


Target[localhost_cpu]:`/root/Desktop/monitor/cpuinfo.sh`


Xsize[localhost_cpu]: 300


Ysize[localhost_cpu]: 100


Ytics[localhost_cpu]: 10


MaxBytes[localhost_cpu]: 100


Title[localhost_cpu]: CPU State


PageTop[localhost_cpu]:

CPU Stateof Server


ShortLegend[localhost_cpu]: %


YLegend[localhost_cpu]: CPU (%)


Legend1[localhost_cpu]: Used


Legend2[localhost_cpu]: Total


LegendI[localhost_cpu]: CPU Used


LegendO[localhost_cpu]: CPU IDEL


Options[localhost_cpu]: growright,gauge,nopercent



(3)制作index.html并生成监控数据


indexmaker /etc/mrtg/mrtg.cfg >/var/www/html/index.html


LANG=C LC_ALL=C /usr/bin/mrtg /etc/mrtg/mrtg.cfg



该监控方法是先通过执行程序cpuinfo.sh得到cpu的使用量和空闲量,然后通过mrtg把相应的数据绘画出来,形成图形。结果如图8-2-1-1-1所示。




图 8-2-1-1-1


如图8-2-1-1-1所示,在纵坐标中,蓝色线条表示CPU空闲量,绿色线条表示CPU使用量。横坐标为时间轴。改图为一天的CPU使用情况的统计信息。此外MRTG还会统计处一周、一月、一年CPU的使用情况。分别入下图8-2-1-1-2、8-2-1-1-3、8-2-1-1-4所示。




图8-2-1-1-2




图8-2-1-1-3




图8-2-1-1-4