本章主要从大型网站的后台监控机制、报警机制和故障转移、服务切换等内容来论述。然后给出一个监控、报警和故障转移的解决方案。

本章主要从大型网站的后台监控机制、报警机制和故障转移、服务切换等内容来论述。然后给出一个监控、报警和故障转移的解决方案。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所示。

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


图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所示。

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


图 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所示。

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


图8-2-1-1-2

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


图8-2-1-1-3

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


图8-2-1-1-4

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

09-18 23:14