大型网站的监控、报警与故障转移
本章主要从大型网站的后台监控机制、报警机制和故障转移、服务切换等内容来论述。然后给出一个监控、报警和故障转移的解决方案。
本章主要从大型网站的后台监控机制、报警机制和故障转移、服务切换等内容来论述。然后给出一个监控、报警和故障转移的解决方案。 1.1 监控预警
现代大型互联网公司主要有电子商务公司、社交网站公司和搜索引擎公司。在电子商务网站公司中,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这些是更基本的
1.2 主机监控一台主机包含cpu、内存、外设等设备,而cpu、内存、外设由总线相连(SMP架构,NUMA架构监控类似)。如图8-2所示。
图8-2
如图所示,主机由cpu、外设、内存、总线组成。而一台主机要对外提供访问,需要由网卡提供网络接入。所以对一台主机的监控从cpu、内存、外设以及网卡入手。
常用的监控软件有Nagios、Cacti、Mrtg等。如果公司有需求,可以自己开发相应的绘图软件及数据采集软件完成监控展示、报警和故障转移等功能。下面使用Mrtg再结合shell程序实现监控,给出一个主机监控解决方案。
1.2.1 全方位监控主机对主机监控,主要从cpu、内存、外设、网卡使用情况及性能进行监控。包括cpu的使用量及空闲量、内存的使用量及空闲量、磁盘的使用量及读写速度、网卡的出入流量等。因为利用Mrtg进行监控,所以之前要安装SNMP和M rtg软件。
1.2.1.1 cpu监控
主要监控cpu的使用百分比,空闲百分比。在成功安装snmp和mrtg的前提下,,主要步骤如下(整个监控项目部署在/root/Desktop/monitor下):
(1)编写shell监控程序 cpuinfo.sh并赋权限为750。
[root@localhost monitor]# cat cpuinfo.sh
#!/bin/bash
#author longxibendi
#blog
#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