飞信服务在地震软件系统中的集成和应用1

2012-11-26 06:46王小明
震灾防御技术 2012年4期
关键词:短消息备份上海市

王小明

(上海市地震局,上海 201203)

引言

上海市地震局承担着上海市行政区范围内的地震监测预报、地震灾害预防和地震紧急救援等政府行政管理职能和各区、县防震减灾的指导工作。随着国家“九五”、“十五”、“十一五”各项目的逐步完成,上海市地震局逐步实现了数字地震观测网、地震前兆观测网(阴朝民,2001)、强震观测网、地震信息通信网和地震应急指挥系统的建设。在这当中,各个地震系统中的应用软件成为地震工作者极为重要的工作工具,各软件之间相互协调、相互合作,实现了地震监测预报以及震情分析等工作内容(中华人民共和国国家标准,2003)。上海市地震局地震监测设备网络管理平台(以下简称网络监控平台)以及值班系统都以邮件或书面通知的方式来告知用户。其中网络监控平台(王小明,2011)监控了上海市地震局在18个区县部署的地震监测网络设备以及局中心的所有服务器和网络设备,网络管理人员需要在第一时间知道所有设备的状态变换情况,以便及时对线路或者设备故障进行处理,将故障对中心业务的影响降低到最小;由于业务的特殊需求,上海市地震局各部门都安排了24小时值班人员,为此需要一套自动短消息通知系统,排班之后定时向值班人员发送短消息通知,提醒值班人员注意值班时间及上传日志时间;上海市地震局OA办公系统的后台数据库设置为每月月初一次的自动备份频率,系统管理人员如果不在电脑旁边,就无法得知备份的结果是否成功,这就需要一套短消息通知系统来告知系统管理人员数据库备份结果,方便管理员及时对数据库进行管理维护。综合以上种种需求,迫切需要开发一套能够集成在上述三套系统之上的短消息通知系统,第一时间通知用户设备状态变化、值班日程安排、数据库备份结果等。

1 飞信服务工作机制

飞信服务的工作机制如图1所示。

图1 飞信服务工作机制Fig.1 Working mechanism of Fetion service

飞信服务有以下几方面的优点。首先,它可以为用户提供一个通信平台,在该平台之上,只要用户有可用网络,无论是Internet、GPRS、WIFI、3G、Satellite等,都可以与另一方进行信息交互,使得通信依赖的物理媒介更加广泛,大大降低了受限程度,为用户通信方式提供更加多元化的选择。其次,飞信服务在移动系统中是免费的,只要用户使用的是移动设备,那么所有短消息的通信都是免费的,这样就大大节省了通信费用成本,对于在上海市18个区县都部署了地震监测设备的上海市地震局而言,可节约很大一笔通信费用开支。第三,实现了PC、PAD、手机等个人设备之间的互通。随着飞信服务的兴起,PC与手机间的通信已经普及,而各种预装了操作系统的个人掌上设备,如iPad等,也逐渐加入了与PC、手机等彼此之间相互通信的群体里,这就解决了通信工具单一化的问题,使得用户能够灵活的使用各种工具进行通信,对于上海市地震局地震网络监测设备统一管理平台,主要实现了PC到手机的短消息告警故障通知,大大提高了工作效率。

2 飞信服务在Linux系统下的开发部署

2.1 系统选择

上海市地震局网络监控平台搭建在Linux环境下,为了使飞信服务能够为该监控平台服务,我们选择了Linux系统作为飞信服务的安装平台。上海市地震局OA办公自动化系统同样搭建在Linux环境下,其数据库采用的是Linux下的MySql,这也要求我们必须将飞信服务部署在Linux系统中,才能实现OA数据库的自动备份及短消息通知功能。值班人员的短消息通知同样可以在Linux环境下实现,综合上述种种原因,我们最终选择Linux系统(罗琳,2010)作为部署飞信服务的操作系统。

2.2 安装部署飞信客户端和LIB库

tar xvfz fetion_linux_20080402.tar.gz

cp sms /usr/bin/

tar xvfz lib_lin_32.tar.gz

cd library_linux32

cp *.* /lib/

cp *.* /usr/lib/

2.3 测试飞信服务

cd /usr/bin

./sms -h

出现如图2所示界面,说明飞信服务已经正常运行。

图2 飞信服务帮助界面Fig.2 The help interface of Fetion service

至此,基于Fetion的短消息发送平台已经搭建完成,我们需要将其它应用与该短消息发送平台结合起来,方便其为其它应用服务。

3 基于飞信的短消息通知系统在地震若干软件系统中的集成应用

3.1 飞信服务在网络监控平台上的应用

网络监控平台部署在上海市地震局信息中心,以此为中心,上海市 18个区县部署的地震监测网络设备为节点,组成了整个上海市地震局网络拓扑结构,如图3所示。

图3 上海市地震局网络拓扑结构Fig.3 Network topology of the SHEA

该网络监控平台实现了全年不间断监控(翟炯等,1997),监控对象包含18个区县台点地震监测设备、服务器、网络设备、卫星设备、UPS等,实现了所有设备的统一集中式监控,能够实时响应设备故障信息,分析故障内容。网络监控平台全年不间断监控所有台站网络设备及中心服务器,能够在第一时间发现拓扑结构中的故障节点,并通过邮件通知网管人员(许登旺等,2007)。系统故障邮件通知流程如图4所示。

由于故障信息的不确定性,网管人员无法做到全年每天 24小时在电脑面前观察故障消息,且由于物理网络环境的局限性,网管人员无法第一时间打开邮箱查看故障信息并处理故障,导致故障处理效率下降。上海市地震局网络监控平台在开发过程中预留了短消息通知的接口,本文旨在研究将短消息发布软件(Fetion)与网络监控平台相结合,发送故障告警信息至网管人员手机,保证网管人员第一时间知晓故障信息,并迅速做出故障判断,处理故障,减少故障对上海市地震局各业务系统的影响。新的基于短消息和邮件的系统故障发现流程如图5所示。

图4 系统故障邮件通知流程图Fig.4 flowchart of system failure notification by e-mail

图5 基于短信、邮件的故障发现流程图Fig.5 Flowchart of system failure notification by SMS and e-mail

上海市地震局网络监控平台基于Nagios软件架构,其整体架构中预留了适合编程人员开发的API接口,如图6所示。

故障告警消息通知接口所在位置为 Nagios配置文件中的/etc/objects目录下,其中的commands文件需要重新编写,使整个网络监控平台能够将故障信息在第一时间以短信发送到网管人员手机上,相关的具体代码如下:

# notifiy service by fetion

define command{

command_name notify-service-by-sms

command_line /usr/local/fx/fetion --mobile=13xxxxxxxxx --pwd=xxxxxx--to=$CONTACTPAGER$ --msg-utf8=" $HOSTNAME$ $SERVICEDESC$ is $SERVICESTATE$ on$TIME$ result is $SERVICEOUTPUT$ " --exit-on-verifycode=1

}

# notifiy host by fetion

define command{

command_name notify-host-by-sms

command_line /usr/local/fx/fetion --mobile=13xxxxxxxxx --pwd=xxxxxx--to=$CONTACTPAGER$ --msg-utf8=" $HOSTNAME$ is $HOSTSTATE$ on $TIME$ result is$HOSTOUTPUT$ " --exit-on-verifycode=1

}

# 'notify-host-by-email' command definition

define command{

command_name notify-host-by-email

command_line/usr/bin/printf "%b" "***** Nagios ***** Notification Type:$NOTIFICATIONTYPE$ Host: $HOSTNAME$ State: $HOSTSTATE$ Address: $HOSTADDRESS$ Info: $HOSTOUTPUT$ Date/Time: $LONGDATETIME$ " | /usr/bin/mail -s "**$NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **" $CONTACTEMAIL$

}

# 'notify-service-by-email' command definition

define command{

command_name notify-service-by-email

command_line /usr/bin/printf "%b" "***** Nagios ***** Notification Type:$NOTIFICATIONTYPE$ Service: $SERVICEDESC$ Host: $HOSTALIAS$ Address:$HOSTADDRESS$ State: $SERVICESTATE$ Date/Time: $LONGDATETIME$ Additional Info: $SERVICEOUTPUT$" | /usr/bin/mail -s "** $NOTIFICATIONTYPE$ Service Alert:$HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" $CONTACTEMAIL$

}

图6 上海市地震局网络监控平台整体架构Fig.6 Framework of monitoring network platform for SHEA

3.2 飞信服务在值班系统上的应用

为了保障上海市地震局业务系统和地震监测设备正常运行,上海市地震局技术保障部实行全年每天24小时待班制度,结合上海市地震局网络监控平台,对突发的网络、地震监测设备、服务器等故障进行及时快速处理,并做故障登记。另外,值班人员每日、每周、每月需要向中国地震局上报信息、台站运行率统计等日志,上报具有严格的时间限制,必须在规定时间段内完成,否则按照缺报处理,影响上海市地震局的信息评比质量和结果。为了提高技术保障部值班人员的工作效率,同时为了对技术保障部值班人员进行日常工作的督促,提高上海市地震局信息评比的质量和水平,需要开发一套值班短消息通知系统。

上海市地震局技术保障部值班系统是为技术保障部值班人员开发的一套日常值班系统(刘剑云等,2010),包含了故障处理记录、日报月报上传、服务器运行率查询及资料文档查询等功能模块,需要将飞信服务与值班系统结合使用。

为了实现短消息通知技术保障部值班人员,我们使用Linux系统下的计划任务调度常驻命令crontab。Linux任务调度的工作主要分为以下两类:

(1)系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存等;

(2)个人执行的工作:某个用户定期要做的工作,例如每隔 10分钟检查邮件服务器是否有新邮件,这些工作可由每个用户自行设置,Crontab是UNIX系统下的定时任务触发器,其使用者的权限记载在下列两个文件中:

/etc/cron.deny:该文件中所列的用户不允许使用Crontab命令;

/etc/cron.allow:该文件中所列的用户允许使用Crontab命令。

上述两个文件有优先级高低之分:如果两个文件同时存在,那么/etc/cron.allow 优先,如果两个文件都不存在,那么只有超级用户可以安排作业。每个用户都会生成一个自己的crontab文件。这些文件在/var/spool/cron目录下,如:

[root@dave ~]# cd /var/spool/cron

[root@dave cron]# ls

oracle root

上述两个文件中内容与各自用户登录界面下执行crontab –l所显示的内容相同。

本文在root用户下执行定时计划任务,任务内容由值班人员的排班情况来确定,每日早上8点通知值班人员当天值班,每日早上10点通知当天值班人员上传当日日志,每月5日上午9点通知当天值班人员上传每月信息安全月报,每月1日至5日上午9点通知当日值班人员上传中国地震局月报统计信息,具体代码如下(以上海市地震局技术保障部2012年4月值班排班为例):

# 值班通知 (2012.04)

#值班人员01

0 8 4,10,16,23,28 4 * /usr/local/fx/fetion --mobile=mobile --pwd=password--to=mobile01 --msg-utf8="今日值班!!!" --exit-on-verifycode=1

#值班人员02

0 8 3,9,18,21,27 4 * /usr/local/fx/fetion --mobile=mobile --pwd=password--to=mobile02 --msg-utf8="今日值班!!!" --exit-on-verifycode=1

#值班人员03

0 8 5,7,11,17,29 4 * /usr/local/fx/fetion --mobile=mobile --pwd=password--to=mobile03 --msg-utf8="今日值班!!!" --exit-on-verifycode=1

#值班人员04

0 8 2,6,14,24,26 4 * /usr/local/fx/fetion --mobile=mobile --pwd=password--t

o=mobile04 --msg-utf8="今日值班!!!" --exit-on-verifycode=1

#值班人员05

0 8 8,12,15,20,30 4 * /usr/local/fx/fetion --mobile=mobile --pwd=password--to=mobile05 --msg-utf8="今日值班!!!" --exit-on-verifycode=1

#值班人员06

0 8 1,13,19,22,25 4 * /usr/local/fx/fetion --mobile=mobile --pwd=password--to=mobile06 --msg-utf8="今日值班!!!" --exit-on-verifycode=1

# 日志上传通知 (2012.04)

#值班人员01

0 10 4,10,16,23,28 4 * /usr/local/fx/fetion --mobile=mobile --pwd=password--to=mobile01 --msg-utf8="请注意上传日志!!!" --exit-on-verifycode=1

#值班人员02

0 10 3,9,18,21,27 4 * /usr/local/fx/fetion --mobile=mobile --pwd=password--to=mobile02 --msg-utf8="请注意上传日志!!!" --exit-on-verifycode=1

#值班人员03

0 10 5,7,11,17,29 4 * /usr/local/fx/fetion --mobile=mobile --pwd=password--to=mobile03 --msg-utf8="请注意上传日志!!!" --exit-on-verifycode=1

#值班人员04

0 10 2,6,14,24,26 4 * /usr/local/fx/fetion --mobile=mobile --pwd=password--to=mobile04 --msg-utf8="请注意上传日志!!!" --exit-on-verifycode=1

#值班人员05

0 10 8,12,15,20,30 4 * /usr/local/fx/fetion --mobile=mobile --pwd=password--to=mobile05 --msg-utf8="请注意上传日志!!!" --exit-on-verifycode=1

#值班人员06

0 10 1,13,19,22,25 4 * /usr/local/fx/fetion --mobile=mobile --pwd=password--to=mobile06 --msg-utf8="请注意上传日志!!!" --exit-on-verifycode=1

# 信息安全月报通知

0 9 5 * * /usr/local/fx/fetion --mobile=mobile --pwd=password --to=mobile01--msg-utf8="安全月报统计上传" --exit-on-verifycode=1

# 国家局月报通知

0 9 1-5 * * /usr/local/fx/fetion --mobile=mobile --pwd=password --to=mobile02--msg-utf8="国家局月报统计上传" --exit-on-verifycode=1

0 9 1-5 * * /usr/local/fx/fetion --mobile=mobile --pwd=password --to=mobile03--msg-utf8="国家局月报统计上传" --exit-on-verifycode=1

0 9 1-5 * * /usr/local/fx/fetion --mobile=mobile --pwd=password --to=mobile04--msg-utf8="国家局月报统计上传" --exit-on-verifycode=1

上述代码以crontab文件形式存储在短消息通知服务器上,并通过Linux系统的计划调度任务来进行周期巡检,符合内容的命令将会被执行,即通过Fetion短消息通知相关值班人员。

3.3 飞信服务在OA数据库备份系统上的应用

上海市地震局OA办公自动化系统于2009年初开始运行,该系统部署在SUSE Linux系统之上,服务器采用B/S架构,数据库软件采用的是MySql,根据上海市地震局网络管理的相关规定,OA系统数据库需要每月月初进行备份,保证OA系统的正常运行。OA系统共有3个数据库,分别是netoffice、dagl、easycms。其中netoffice数据库包含了网络办公系统所需要的一些库表;dagl数据库包含了文件归档功能所需要的一些库表;easycms数据库包含了整个OA网站模板所需要的一些库表。手工备份上述3个数据库需要执行下面的命令:

mysqldump -u root -p netoffice > back_netoffice

mysqldump -u root -p easycms > back_easycms

mysqldump -u root -p dagl > back_dagl

备份成功后,在当前路径下将会出现3个备份的数据库文件back_netoffice、back_dagl、back_easycms。为了实现 OA办公自动化系统数据库的自动备份功能,同样需要使用 Linux系统下的计划任务调度常驻命令crontab,另外,数据库管理员DBA需要知道数据库备份结果,这就要求我们将飞信服务与数据库备份指令结合使用,流程示意图如图7所示。

图7 OA数据库备份流程图Fig.7 Flowchart of OA database backup

具体代码:

# OA DB(netoffice,dagl,easycms) backup on 1st of every month

30 1 1 * * /home/autobackup

其中autobackup为可执行脚本,该脚本控制数据库的自动备份及短消息的通知,代码如下:

#!/bin/sh

#File:/home/autobackup.sh

#Database info

DB_NAME1="netoffice"

DB_NAME2="dagl"

DB_NAME3="easycms"

DB_USER="root"

DB_PASS=""

#Others vars

BIN_DIR="/usr/bin"

BACK_DIR="/home/DB_BACKUP"

DATE=`date +%F`

#TODO

cd $BACK_DIR

$BIN_DIR/mysqldump --opt -u$DB_USER $DB_NAME1 > $BACK_DIR/back_$DB_NAME1$DATE

status=$?

case $status in

0 )

/usr/local/fx/fetion --mobile=mobile --pwd=password--to=mobile01 --msg-utf8="backup DB $DB_NAME1 success!" --exit-on-verifycode=1

;;

1 )

/usr/local/fx/fetion --mobile=mobile --pwd=password--to=mobile01 --msg-utf8="backup DB $DB_NAME1 failed!" --exit-on-verifycode=1

;;

esac

sleep 5

$BIN_DIR/mysqldump --opt -u$DB_USER $DB_NAME2 > $BACK_DIR/back_$DB_NAME2$DATE

status=$?

case $status in

0 )

/usr/local/fx/fetion --mobile=mobile --pwd=password --to=mobile01 --msg-utf8="backup DB $DB_NAME2 success!" --exit-on-verifycode=1

;;

1 )

/usr/local/fx/fetion --mobile=mobile --pwd=password --to=mobile01 --msg-utf8="backup DB $DB_NAME2 failed!" --exit-on-verifycode=1

;;

esac

sleep 5

$BIN_DIR/mysqldump --opt -u$DB_USER $DB_NAME3 > $BACK_DIR/back_$DB_NAME3$DATE

status=$?

case $status in 0 )

/usr/local/fx/fetion --mobile=mobile --pwd=password --to=mobile01 --msg-utf8="backup DB $DB_NAME3 success!" --exit-on-verifycode=1

;;1 )

/usr/local/fx/fetion --mobile=mobile --pwd=password --to=mobile01 --msg-utf8="backup DB $DB_NAME3 failed!" --exit-on-verifycode=1

;;

esac

4 飞信服务在各系统中集成应用展示

(1)飞信服务结合上海市地震局网络监控平台应用展示(图8)

图8 台站设备告警短信通知Fig.8 Station device alarm notification by SMS

(2)飞信服务结合值班系统应用展示(图9)

(3)飞信服务在上海市地震局OA数据库备份系统上的应用展示(图10)

图9 值班短信通知Fig.9 Duty notification by SMS

图10 OA数据库备份短信通知Fig.10 Notification of OA database backup by SMS

5 结论

中国移动飞信服务,使短消息通知在我们日常生活中起着不可或缺的作用,而飞信服务在Linux系统下的成功部署,是短消息通知功能与上海市地震局各业务系统相结合的前提,在该前提下,上海市地震局网络监控平台短消息告警得以实现,上海市地震局保障中心技术保障部值班短消息通知得以实现,上海市地震局OA办公自动化平台数据库自动备份短消息通知得以实现。所有上述业务系统与飞信服务的有机结合,提高了办公人员的业务水平和能力,提高了办公人员故障处理效率,提高了数据库备份机制的安全性,提高了中心网络设备和服务器的运行效率,提高了台站网络运行率。

飞信服务与上海市地震局各业务系统相结合使用,使办公人员受益匪浅,但同样也应该看到不足之处。由于飞信服务是免费的,每天通过PC客户端向手机最多能够发送600条短消息,每月最多能够发送5000条短消息,这就使得飞信服务与上海市地震局业务系统的结合使用受到一定的限制。尽管当前上述三个业务系统与飞信服务结合使用没有发现任何问题,但需要未雨绸缪,需要考虑网络监控平台上面设备的增加对短消息告警的影响,需要考虑值班人员的增加对短消息通知的影响,需要考虑数据库周期备份机制的变化对短消息通知的影响,还需要考虑其它业务系统与飞信服务结合使用之后对短消息通知的影响。今后仍将对不足之处进一步改善,在地震各业务系统进一步推广飞信服务,使得飞信服务能够更好地为地震系统各项业务工作服务。

刘剑云,马晨阳,2010. PHP+MySQL网站开发应用. 北京:中国铁道出版社.

罗琳,2010. 即用即查Linux命令行实例参考手册. 北京:中国铁道出版社.

王小明,2011. 基于Nagios软件的上海市地震局地震监测设备网络管理系统的开发和应用. 上海:防震减灾学术分论坛论文汇编.

许登旺,邹天思,潘凯华,2007. PHP程序开发范例宝典. 北京:人民邮电出版社.

阴朝民,2001. 地震前兆台网技术. 北京:地震出版社.

翟炯,石祥生,石秋云,1997. TCP/IP网络管理. 北京:电子工业出版社.

中华人民共和国国家标准,2003. 地震灾害预测及其信息管理系统技术规范(GB/T 19428-2003). 北京:中国标准出版社.

猜你喜欢
短消息备份上海市
VSAT卫星通信备份技术研究
上海市风华初级中学
上海市房地产学校
创建vSphere 备份任务
基于北斗通信终端的数据转发控制器设计
腾势400 用在上海市区的来回穿梭克服里程焦虑
旧瓶装新酒天宫二号从备份变实验室
基于3G的VPDN技术在高速公路备份链路中的应用
移动网短消息业务流程及案例分析
小灵通里的父爱