出家如初,成佛有余

基于nagios的运营监控系统安装配置指南

Posted in Uncategorized by chuanliang on 2008/01/31

1 目标

基于nagios及cacti搭建网络及系统监控系统,在系统出现故障时候,第一时间以邮件及手机短信方式通知管理员,及时排查并解决系统故障。

2 相关软件版本说明

操作系统:RedHat AS 4.0

Nagios: nagios 2.10

Nagios Plugins:nagios-plugins-1.4.11

Nagios Core Addons:

NRPE:2.11

NSCA:2.7.2

Apache HTTPD: 2.0.52

安装操作系统时候,建议采用完整的安装方式,需要安装httpd、gd-devel、libpng-devel、libjpeg-devel几个包。

如果需要监控mysql,对mysql用的也是Redhat AS缺省安装

3 nagios安装配置指南

3.1 Nagios系统的结构图

clip_image002[4]

3.2 安装Nagios

3.3 安装nagios的插件

3.3.1 建立需要的目录,并赋予权限

useradd nagios

mkdir /usr/local/nagios

mkdir /usr/local/nagios/libexec

chown -R nagios:nagios /usr/local/nagios

3.3.2 解压nagios的安装包:

tar xzvf nagios-2.10.tar.gz

3.3.3 编译安装nagios

cd nagios-2.10;

./configure –prefix=/usr/local/nagios –with-cgiurl=/nagios/cgi-bin

–with-htmurl=/nagios –with-nagios-user=nagios –with-nagios-group=nagios;

make all;

make install;

make install-init;

make install-commandmode;

make install-config;

3.3.4 安装Nagios plugins

tar xzvf nagios-plugins-1.4.7.tar.gz

cd /nagios-plugins-1.4.7

./configure –prefix=/usr/local/nagios –with-cgiurl=nagios/cgi-bin

–with-mysql=/usr –enable-ssl –enable-command-args

make;

make install;

注意:此处要对mysql进行监控,采用的mysql是安装时候AS自带的mysql,安装路径为/usr(包含lib/mysql)

Nagios的安装路径为/usr/local/nagios/libexec,安装成功后确认/usr/local/nagios/libexec下有相关的脚本(例如check_http),如果没有安装到此处,修改resource.cfg中的$USER1$

3.3.5 apache 配置

l 修改/etc/httpd/conf/httpd.conf,在文件末尾添加如下内容:

ScriptAlias /nagios/cgi-bin “/usr/local/nagios/sbin/”

<Directory “/usr/local/nagios/sbin/”>

Options ExecCGI

AllowOverride None

Order allow,deny

Allow from all

AuthName “Nagios Access”

AuthType Basic

AuthUserFile /usr/local/nagios/etc/htpasswd.users

Require valid-user

</Directory>

Alias /nagios “/usr/local/nagios/share/”

<Directory “/usr/local/nagios/share/”>

Options None

AllowOverride None

Order allow,deny

Allow from all

AuthName “Nagios Access”

AuthType Basic

AuthUserFile /usr/local/nagios/etc/htpasswd.users

Require valid-user

</Directory>

l 创建nagios管理员nagiosadmin的用户认证密码文件

htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

注意:这里的用户既是apache的nagios管理界面的登录认证用户也和nagios监控中的权限有关联。

l 重启apache使apache的配置生效.

apachectl restart

3.3.6 Nagios配置

在/usr/local/nagios的etc目录下的配置文件有:

Config file Description

cgi.cfg CGI脚本的相关设定,如用户认证等

commands.cfg commands定义文件

localhost.cfg localhost本机的一个配置范例

nagios.cfg nagios的主配置文件

resource.cfg 监控使用到的脚本文件

根据具体使用情况,将配置文件的结构做以下规划,为了方便将来的维护和管理:

配置文件结构如下:

etc/ |– cgi.cfg

|– commands.cfg

|– nagios.cfg

|– resource.cfg

(以上为nagios系统主配置文件)

etc/servers |– contacts.cfg 管理人员和管理人员组的的默认初始化设定文件

|– hosts.cfg 服务器的默认初始化设定文件

|– services.cfg 监控服务的默认初始化设定文件

|– timeperiod.cfg 时间周期默认初始化设定文件

以上为监控服务相关的配置文件,都是由原localhost.cfg文件中拆分出来的,这样方面理解和管理。

l 建立servers目录

mkdir /usr/local/nagios/etc/servers

chown –R nagios.nagios /usr/local/nagios/etc/servers

chown –R 755 /usr/local/nagios/etc/servers

l 设置 cgi.cfg :

authorized_for_system_information=nagiosadmin

authorized_for_configuration_information=nagiosadmin

authorized_for_system_commands=nagiosadmin

authorized_for_all_services=nagiosadmin

authorized_for_all_hosts=nagiosadmin

authorized_for_all_service_commands=nagiosadmin

authorized_for_all_host_commands=nagiosadmin

以上设定nagiosadmin为nagios最高权限,有权查看所有hosts和services的状态.

l 设置nagios.cfg :

#cfg_file=/usr/local/nagios/etc/localhost.cfg

cfg_file=/usr/local/nagios/etc/servers/contacts.cfg

cfg_file=/usr/local/nagios/etc/servers/hosts.cfg

cfg_file=/usr/local/nagios/etc/servers/hostgroups.cfg

cfg_file=/usr/local/nagios/etc/servers/services.cfg

cfg_file=/usr/local/nagios/etc/servers/timeperiods.cfg

cfg_file=/usr/local/nagios/etc/commands.cfg

#cfg_dir=/usr/local/nagios/etc/servers

其他相关的参数参看nagios的手册。

需要特别指出的的地方是参数interval_length=60定义了nagios所有配置文件中与时间相关的参数所采用的缺省单位,缺省为60秒。例如interval_length=60,如果在hosts.cfg中定义notification_interval=1,则表示主机的提醒周期为1分钟。

l 设置resource.cfg

$USER1$=/usr/local/nagios/libexec

l /usr/local/nagios/etc/servers目录下各文件的内容简介(红色标注的是需要修改或要注意的地方):

timeperiod.cfg

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

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

#

# TIME PERIODS

#

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

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

# This defines a timeperiod where all times are valid for checks,

# notifications, etc. The classic “24×7” support nightmare. 🙂

define timeperiod{

timeperiod_name 24×7

alias 24 Hours A Day, 7 Days A Week

sunday 00:00-24:00

monday 00:00-24:00

tuesday 00:00-24:00

wednesday 00:00-24:00

thursday 00:00-24:00

friday 00:00-24:00

saturday 00:00-24:00

}

# ‘workhours’ timeperiod definition

define timeperiod{

timeperiod_name workhours

alias “Normal” Working Hours

monday 09:00-17:00

tuesday 09:00-17:00

wednesday 09:00-17:00

thursday 09:00-17:00

friday 09:00-17:00

}

# ‘nonworkhours’ timeperiod definition

define timeperiod{

timeperiod_name nonworkhours

alias Non-Work Hours

sunday 00:00-24:00

monday 00:00-09:00,17:00-24:00

tuesday 00:00-09:00,17:00-24:00

wednesday 00:00-09:00,17:00-24:00

thursday 09:00-17:00

friday 09:00-17:00

}

# ‘none’ timeperiod definition

define timeperiod{

timeperiod_name none

alias No Time Is A Good Time

}

定义各种监控的时间段,如24X7全天候的监控, none不工作时间以及workhours工作和nonworkhours非工作时间段等,在hosts和services的定义中可以引用.

contacts.cfg

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

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

#

# CONTACTS

#

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

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

# In this simple config file, a single contact will receive all alerts.

# This assumes that you have an account (or email alias) called

# “nagios-admin” on the local host.

define contact{

contact_name nagiosadmin

alias nagiosadmin

service_notification_period 24×7

host_notification_period 24×7

service_notification_options w,u,c,r

host_notification_options d,r

service_notification_commands notify-by-sms, notify-by-email

host_notification_commands notify-by-sms, host-notify-by-email

email liangchuan@mobile-soft.cn

pager 13910823366

}

define contact{

contact_name nagiosadmin2

alias nagiosadmin2

service_notification_period 24×7

host_notification_period 24×7

service_notification_options w,u,c,r

host_notification_options d,r

service_notification_commands notify-by-sms, notify-by-email

host_notification_commands notify-by-sms, host-notify-by-email

email jincheng.xiao@mobile-soft.cn

pager 13141202288

}

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

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

#

# CONTACT GROUPS

#

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

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

# We only have one contact in this simple configuration file, so there is

# no need to create more than one contact group.

define contactgroup{

contactgroup_name nagios

alias nagios

members nagiosadmin,nagiosadmin2

}

定义nagios的管理员成员(contact)和管理员组(contactgroup),以及管理员(contact)的联系方式mail或sms(pager传呼机标识手机号)。

hosts.cfg

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

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

#

# HOSTS

#

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

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

# Generic host definition template – This is NOT a real host, just a template!

define host{

name generic-host

notifications_enabled 1

event_handler_enabled 1

flap_detection_enabled 1

failure_prediction_enabled 1

process_perf_data 1

retain_status_information 1

retain_nonstatus_information 1

notification_period 24×7

register 0

}

define host {

use generic-host

host_name 192.168.1.5

address 192.168.1.5

check_command check-host-alive

max_check_attempts 1

notification_interval 1

notification_period 24×7

notification_options d,u,r

contact_groups nagios

}

generic-host定义默认的hosts公共属性。192.168.1.5定义需要监控的服务器信息。

hostgroups.cfg

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

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

#

# HOST GROUPS

#

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

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

# We only have one host in our simple config file, so there is no need to

# create more than one hostgroup.

define hostgroup{

hostgroup_name mobilesoft

alias mobilesoft

members 192.168.1.5

}

定义hosts所属的分组,方便监控时的观察.hostgroup_name定义分组名称,alias为别名,members定义成员名称,内容为每台hosts配置文件中定义的host_name内容.

services.cfg

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

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

#

# SERVICES

#

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

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

# Generic service definition template – This is NOT a real service, just a template!

define service{

name generic-service

active_checks_enabled 1

passive_checks_enabled 1

parallelize_check 1

obsess_over_service 1

check_freshness 0

notifications_enabled 1

event_handler_enabled 1

flap_detection_enabled 1

failure_prediction_enabled 1

process_perf_data 1

retain_status_information 1

retain_nonstatus_information 1

is_volatile 0

register 0

}

define service{

use generic-service

host_name 192.168.1.5

service_description mobilessoft esales platform

is_volatile 0

check_period 24×7

max_check_attempts 1

normal_check_interval 1

retry_check_interval 1

contact_groups nagios

notification_options w,u,c,r

notification_interval 1

notification_period 24×7

check_command check-mobilesoft!www.mobile-soft.cn

}

generic-service定义默认的services公共属性,在每个service定义中引用.

192.168.1.5定义对最终监控主机192.168.1.5的配置文件,包含每台被监控主机的定义和需要监控的服务.

l 修改/usr/local/nagios/etc/commands.cfg,增加对notify-by-sms及check-mobilesoft的定义

#notify-by-sms

define command {

command_name notify-by-sms

command_line $USER1$/notify_by_sms $HOSTADDRESS$ $CONTACTPAGER$

}

#check-mobilesoft

define command {

command_name check-mobilesoft

command_line $USER1$/check_mobilesoft $ARG1$

}

l 创建check_mobilesoft 的plugin脚本

在/usr/local/nagios/libexec下创建check_mobilesoft

touch check_mobilesoft

chown nagios.nagios check_mobilesoft

chmod 755 check_mobilesoft

其中check_mobilesoft的内容如下:

#!/bin/sh

#use the nagios check_http shell to check the monitored machine has some problem

PROGNAME=`basename $0`

PROGPATH=`echo $0 | sed -e ‘s,[/][^/][^/]*$,,’`

. $PROGPATH/utils.sh

hostip=$1

result=`/usr/local/nagios/libexec/check_http -H ${hostip} –u /test –s “success” -w 0.0009 -c 0.0040 -t 10 |grep “200 OK”`

if [ -z “${result}” ] ; then

exit $STATE_CRITICAL

else

exit $STATE_OK

fi

注意此处调用了libexec/utils.sh,此脚本文件定义了诸如返回码等变量及一些工具。

l 创建notify_by_sms 的plugin脚本

在/usr/local/nagios/libexec下创建notify_by_sms

touch notif_by_sms

chown nagios.nagios notify_by_sms

chmod 755 notify_by_sms

其中notify_by_sms的内容如下:

#!/bin/sh

#use the nagios check_http shell to check the monitored machine has some problem

#if having problem ,then use the sms gateway to notify the admin

hostip=$1

phonenumber=$2

result=`/usr/local/nagios/libexec/check_http -H ${hostip} -w 0.0009 -c 0.0040 -t 10 |grep “200 OK”`

if [ -z “${result}” ] ; then

/usr/bin/wget “http://my-sms-ip:8800/Send%20Text%20Message.htm?PhoneNumber=${phonenumber}&Text=${hostip}%20machine%20Have%20Problem”

fi

l 检查配置文件正确性

/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

执行该命令检查所有配置文件是否正确,如有问题,继续修改配置文件。

l 配置开机时候自动启动nagios及apache服务

chkconfig –add nagios

chkconfig –add httpd

或者直接修改/etc/rc.local,增加如下内容

/sbin/service nagios start

/usr/sbin/ apachectl start

l 启动nagios服务及apache 服务

service nagios restart

apachectl restart

l 登录nagios管理界面,监控服务器情况

访问nagios的服务器web界面http://ip/nagios,输入nagiosadmin 的用户名及密码,开始进行监控。

3.3.7 客户端监控代理NRPE的安装配置:

<TBC>

4 cacti安装配置指南

<TBC>

5 参考文档

http://nagios.sourceforge.net/docs/2_0/toc.html

http://gentoo-wiki.com/HOWTO_Install_Nagios

Technorati 标签: ,,,,

Advertisements
Tagged with: , , , ,

基于asterisk构建回拨运营服务系统

Posted in Uncategorized by chuanliang on 2008/01/13

    在目前手机话费居高不下的情况下,基于VOIP的通信运营服务还是有一定的市场空间,毕竟通信需求是所有手机用户的第一大需求。尽管目前有一大堆提供回拨卡/直拨服务的voip厂商(用搜索引擎搜索一下“直拨卡”或“回拨卡”,遍地都是),但这些服务提供商鱼目混珠,很难让最终用户建立其信任感,具体看来至少有如下几点很难克服:

  • 服务提供商的品牌
  • 服务的持久性及稳定性
  • 终端渠道的推广   
  • 技术能力

    因此如果能够在品牌上、技术实现、终端渠道推广、持续运营服务上占据主导地位,那么仍然可以在混乱中取得显著的优势。

    初步考虑一下基于asterisk的回拨(call back)服务技术实现思路。

1、call back原理

    首先用户拨打回拨平台预约接入号码,平台接收到用户主叫电话号码后主动挂断电话,在指定时间内系统自动回拨到用户的电话上,用户摘机后第一个通话链路建立(此时用户处于接听电话的状态中),系统播放提示语音,用户拨打被叫号码(实际意义上的被叫),回拨平台收完被叫号后发起第二次呼叫,同时给用户播放相应的提示音,如被叫摘机则第二条链路建立,同时回拨平台把两条链路搭通,主被叫通话建立,客户即可正常通话。通话完毕后,系统记录下第二条链路产生的话单并按照相应费率,在用户的账户(或卡)上扣除。回拨系统通过“双向主动呼叫技术”,完成用户长途电话呼叫的功能。实现了用户在接听电话的状态下拨打电话的功能,客户不需要支付接入回拨系统的接入费用。

2、回拨方式

  • 电话预约回拨(ANI CallBack)

用户通过手机拨打分配的回拨接入号以后,系统将根据呼入号码对用户信息进行验证,验证成功后系统将会建立和用户之间的通话连接并播放IVR语音流程,提示用户输入所要呼叫的对方电话号码,号码输入完成后,系统将会建立用户和对方之间的通话连接。

  • Web回拨(Web CallBack)

用户通过网站登陆Web回拨页面,输入相关信息,回拨系统接受到Web服务器提交的相关信息后对用户进行验证,验证成功后建立起用户和被叫之间的通话连接。

  • Wap回拨(Wap CallBack)

    用户用手机登录wap页面,输入相关信息,回拨系统接受到wap网关提交的相关信息后对用户进行验证,验证成功后建立起用户和被叫之间的通话连接。

  • SMS回拨(SMS CallBack)

用户通过手机编写好一定格式的短信,短信内容包括账号、密码和呼叫号码等,然后发送到回拨系统指定的接收号码,回拨系统接收到短信后进行用户验证工作,验证成功后建立起用户和被叫之间的通话连接。

 

3、网络方案

在网络部署上可以采用模拟线路回拨解决方案、数字中继线回拨解决方案以及纯软件回拨解决方等三种。

  • 模拟线回拨:

    通过普通模拟线(PSTN/GSM/CDMA/PHS)回拨,VOIP或模拟线路二次出局;

  • 数字中续线回拨:

    通过数字E1/T1专线回拨,数字E1/T1专线二次出局;

  • 纯软件回拨:

    回拨以及客户二次出局全部通过VOIP线路。

 

4、技术实现

    在openser+asterisk+aster2billing+freeradius+sugarcrm基础上进行定制开发,构建回拨业务的业务支撑系统和运营支撑系统。

    除了利用传统的voip落地外,可以考虑采用skype作为asterisk的trunk来使用,充分利用skype现有的全球网络资源。

5、核心系统

   软交换系统、AAA系统 、计费系统、帐务系统、结算系统、卡管理系统、代理商管理系统、CRM系统、充值支付系统

6、运营模式

    通信服务:国际长途、国内长途、回拨卡、IP话吧、skype互通

    广告服务:PPC(pay per call)

    增值业务服务:呼叫中心SaaS、一号通、IP传真机、商务总机、web800

7、参考运营商

    http://www.rebtel.com

    http://www.talkplus.com/

    http://www.jajah.com

    http://www.voipstunt.com

    http://www.voipdiscount.com

    http://www.ipdrum.com

    http://www.ribbit.com/

    http://www.fring.com/

    http://www.flurry.com/

    http://www.mig33.com

    http://www.rimeri.com/

    http://www.boknow.com/

 

从手机同步服务想起

Posted in Uncategorized by chuanliang on 2008/01/06

    手机通信录定期的备份是个良好的习惯,我自己就曾经多少次在手机丢失后满天找通信录时候才发现数据备份的重要。传统的备份方式是用蓝牙、红外或数据线方式进行备份,但备份起来还是很麻烦的。 随着手机的SyncML同步协议不断普及,目前大多数手机都具备了基础的通讯录同步功能,这个功能实际上就是把手机内容的通讯录、短信、彩信、日程、任务等内容通过SyncML协议同步到服务器,如果更换新手机或者需要重新把数据装入到手机的时候,可以非常简单的通过这个功能把数据下载到手机中。

1、服务提供商

目前有很多无线互联网服务提供商基于syncml协议来提供在线的同步服务,包括:

MyTT:http://www.mytt.com

无忧通讯录:http://www.51txl.com/

移动梦网号码薄管家:http://mypim.monternet.com

搜狐手机保险箱:http://pim.sohu.com

大地科技号码管家:http://app.net.cn

手机网盘:http://www.hotpim.com/

总体而言,这些产品所提供的服务发展方向上还是以帮助手机用户完成个人信息管理(pim)为目的,因此一般在服务内容上主要包括:

1、通信录同步备份

2、短信、彩信同步备份及短信发送,包括诸如短信定时发送、生日提醒、模板等短信网关的典型应用

3、日历同步备份

4、记事本同步备份

5、照片等文件的同步备份

6、Push Mail

7、与Outlook、Foxmail等客户端的插件集成

 

除了上述典型的PIM应用外,一些提供商提供了一些mobile 2.0的互联网应用,例如

1、基于RSS的新闻同步

2、社区

3、标签

4、搜索引擎

5、个人主页

 

 

2、开源项目

http://sync4j.funambol.com/

http://multisync.sourceforge.net

http://www.mintersoft.com

可以重点考察sync4j,功能极其的全面。

3、思考

    坦率来讲,其实基于手机数据同步服务来延伸出一些相应的增值服务是一个不错的创意,基于用户手机数据的同步所得到的信息基本上能够勾勒出一个用户的关系圈,而且这些信息是相对真实的,这种天然具备的相对真实的关系圈是所有做社区的人梦寐以求的。而用户信息的相对真实也是Facebook能够大红大紫的核心原因之一。因此这种以手机号码为核心的服务提供商,如果能够提供一些有竞争力的服务来激发用户及其朋友的参与及消费,那么可以比较清晰地获取用户的喜好及消费习惯,那么这样的平台对于追求所谓“精准营销”的广告商是何等诱人。

3.1、隐私问题

    此类服务最大的挑战首先是用户数据隐私问题,像通信录、短信等数据的敏感信息如果一旦泄漏,后果可能不堪设想。怎样保证对用户信息的最大程度的保证?

    数据安全保证

    系统安全保证

    运营安全保证

    风险先行赔付

 

3.2、基于同步服务的社区发展思考

    可以参考Facebook的成功轨迹,考虑怎样充分利用相对真实的用户信息来提供各种服务,同时在平台构建上应当充分学习Facebook的“开放平台”的策略。

3.3、PIM发展思考

    PIM服务本身内涵相对清晰,不外乎日程、通信录、记事本等等,最为关键的是怎样能够帮助用户将基于互联网、手机、电脑的个人信息集中统一管理,同时与互联网web2.0的社区等应用或mobile2.0的应用结合起来,真正形成用户的个人信息管理平台。

3.4、定位思考

    基于手机同步应用所引出的手机Facebook社区、PIM、社会化电子商务这些概念倒很激动人心,也相信能够有辉煌的未来,但现在的核心仍然是“聚焦、聚焦、再聚集”,怎样围绕手机同步应用挖掘几个“杀手级”的应用来作为引爆流行点呢,这是需要进一步思考的重点。

无线互联网业务思考

Posted in Uncategorized by chuanliang on 2008/01/01