作为系统运维工程师,最担心的不是系统出现什么故障,而是不能在第一时间获知系统出现故障或宕机了,尤其是遇到节假日,系统管理员就很紧张。要改变 这种被动的局面,这里我以网络监控软件Nagios为例来介绍一下软件的的配置及使用,并将飞信融合进来以实现服务器故障时即时通知管理员。
虽然Nagios十分受用,但配置起来确是麻烦,基于这样的原因,我将尽可能详细地向大家讲述我用Nagios的过程以及心得,希望对初学者有所帮助。
下面以Redhat为例来部署
安装所需软件
一、 解决安装Nagios的依赖关系:
Nagios基本组件的运行依赖于httpd、gcc和gd。可以通过以下命令来检查nagios所依赖的rpm包是否已经完全安装:
# yum -y install httpd gcc glibc glibc-common gd gd-devel php php-mysql mysql mysql-server
此外,要想完整的安装关运行本文中所描述的环境,您得准备一个功能完备的LAMP运行环境。
说明:以上软件包您也可以通过编译源代码的方式安装,只是后面许多要用到的相关文件的路径等需要按照您的源代码安装时的配置逐一修改。此外,您还得按需启动必要的服务,如httpd,mysqld等。
二、 添加nagios运行所需要的用户和组:
# groupadd nagcmd
# useradd -m nagios
# usermod -a -G nagcmd nagios
把apache加入到nagcmd组,以便于在通过web Interface操作nagios时能够具有足够的权限:
# usermod -a -G nagcmd apache
三、编译安装nagios:
# tar zxf nagios-3.1.2.tar.gz –C /usr/local
# cd nagios-3.1.2
# ./configure –with-command-group=nagcmd –enable-event-broker
# make all
# make install
# make install-init
# make install-config
# make install-commandmode
说明: 第一步执行make install安装主要的程序、CGI及HTML文件,第二步执行make install-init的步骤,它的作用是把nagios做成一个运行脚本,使nagios随系统开机启动,这是一个很方便的措施。第三步执行 make install-config 把配置文件的例子复制到nagios的安装目录。第四步执行 make install-commandmode 给外部命令访问nagios配置文件的权限。
安装完后 查看一下在/usr/local/nagios下是否存在etc、bin、 sbin、 share、 var这五个目录,如果存在则可以表明程序被正确的安装到系统了。这5个目录的作用是:
bin
|
Nagios执行程序所在目录,这个目录只有一个文件nagios
|
etc
|
Nagios配置文件位置,初始安装完后,只有几个*.cfg-sample文件
|
sbin
|
Nagios Cgi文件所在目录,也就是执行外部命令所需文件所在的目录
|
Share
|
Nagios网页文件所在的目录
|
Var
|
Nagios日志文件、spid 等文件所在的目录
|
为email指定您想用来接收nagios警告信息的邮件地址,默认是本机的nagios用户:
# vi /usr/local/nagios/etc/objects/contacts.cfg
email nagios@localhost #这个是默认设置
在httpd的配置文件目录(conf.d)中创建Nagios的Web程序配置文件:
# make install-webconf
创建一个登录nagios web程序的用户,这个用户帐号在以后通过web登录nagios认证时所用:
# htpasswd -c /usr/local/nagios/etc/htpasswd.users admin
以上过程配置结束以后需要重新启动httpd:
# service httpd restart
四、编译、安装nagios-plugins
nagios的所有监控工作都是通过插件完成的,因此,在启动nagios之前还需要为其安装官方提供的插件。
# tar zxf nagios-plugins-1.4.13.tar.gz
# cd nagios-plugins-1.4.13
# ./configure –with-nagios-user=nagios –with-nagios-group=nagios
# make
# make install
五、配置并启动Nagios
(1)把nagios添加为系统服务并将之加入到自动启动服务队列:
# chkconfig –add nagios
# chkconfig nagios on
(2)检查其主配置文件的语法是否正确:
# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
(3)如果上面的语法检查没有问题,接下来就可以正式启动nagios服务了:
# service nagios start
(4)配置selinux
如果您的系统开启了selinux服务,则默认为拒绝nagios web cgi程序的运行。您可以通过下面的命令来检查您的系统是否开启了selinux:
#getenforce
如果上面命令的结果显示开启了selinux服务,您可以通过下面的命令暂时性的将其关闭:
#setenforce 0
如果您想在以后完全关闭selinux,可以通过编辑/etc/sysconfig/selinux文件,将其中的selinux后面的值“force”修改为“disable”即可。
(5)通过web界面查看nagios:
http://your_nagios_IP/nagios
六、 安装飞信软件
下载软件
主软件:wget http://www.it-adv.net/fetion/downng/fetion20091117-linux.tar.gz
主程序:wget http://bbs.it-adv.net/attachment.php?aid=43&k=b1e8997336d66ec8610adc2b790376a2&t=1299230237
库文件:wget http://www.it-adv.net/fetion/linuxso_20101113.rar
安装飞信:
tar zxvf fetion20091117-linux.tar.gz -C /usr/local
将下载的主程序fetion覆盖掉/usr/local/fx/下的fetion
在windows中解压linuxso_20101113.rar并将里面的库文件上传至 /usr/local/fx/
cd /usr/local/fx
cp lib* /usr/lib
vim /etc/ld.so.conf
增加以下内容
/usr/local/fx/fetion
然后执行命令 ldconfig
cp fetion /usr/bin
至此,所有软件已安装完毕
下面来详细介绍一下
nagios
的配置:
第一修改配置文件
Nagios的主配置文件是nagios.cfg
# vim /usr/local/nagios/etc/nagios.cfg
注释掉#cfg_file=/usr/local/nagios/etc/localhost.cfg
然后把下面几行的注释去掉:
cfg_file=/usr/local/nagios/etc/contactgroups.cfg //联系组配置文件路径
cfg_file=/usr/local/nagios/etc/hostgroups.cfg //主机组配置文件路径
cfg_file=/usr/local/nagios/etc/hosts.cfg //主机配置文件路径
cfg_file=/usr/local/nagios/etc/services.cfg //服务配置文件路径
cfg_file=/usr/local/nagios/etc/objects/commands.cfg
cfg_file=/usr/local/nagios/etc/objects/contacts.cfg //联系人配置文件路径
cfg_file=/usr/local/nagios/etc/objects/timeperiods.cfg //监视时段配置文件路径
cfg_file=/usr/local/nagios/etc/objects/templates.cfg
改 check_external_commands=0为check_external_commands=1 这行的作用是允许执行在web界面下重启nagios、停止主机/服务检查等操作。把command_check_interval的值从默认的1改成 command_check_interval=10s(根据自己的情况定这个命令检查时间间隔,不要太长也不要太短)。主配置文件要改的基本上就是这 些,通过上面的修改,发现/usr/local/nagios/etc并没有文件hosts.cfg等一干文件,怎么办?稍后手动创建它们。
第二个要修改的配置文件是cgi.cfg,它的作用是控制相关cgi脚本。
先确保use_authentication=1。接下来修改default_user_name=sery ,再后面的修改在下表列出:
authorized_for_system_information=admin
authorized_for_configuration_information=admin
authorized_for_system_commands=admin //多个用户之间用逗号隔开
authorized_for_all_services=admin
authorized_for_all_hosts=admin
authorized_for_all_service_commands=admin
authorized_for_all_host_commands=admin
上述用户名是从那里来的呢?是执行命令# htpasswd -c /usr/local/nagios/etc/htpasswd.users admin
所生成的
第三个是修改配置文件
commands.cfg
这个文件是用来发送报警飞信的
# vim/usr/local/nagios/etc/objects/commands.cfg
增加以下内容:
define command {
command_name notify-service-by-fetion
command_line /usr/local/fx/fetion –mobile=1589******* –pwd=********** –to=1589******** –msg-utf8=”$HOSTADDRESS$ $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ on $LONGDATETIME$” –hide
}
这里说明一下fetion的格式:
–mobile=飞信机器人号码
–pwd=密码
–to=目标手机号码 //该号码必须是飞信机器人的飞信好友
–msg-utf8=”信息内容”
–[hide|debug]隐藏/显示发送信息的过程
然后定义监控时间:配置文件是timeperiods.cfg
vim/usr/local/nagios/etc/objects/ timeperiods.cfg
可根据自己的需要配置,以下是本人的配置,
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
}
第四个是手动创建的配置文件contacts.cfg,其格式如下:
#vim /usr/local/nagios/etc/objects/contacts.cfg
define contact {
contact_name webserver ; Short name of user
alias admin ; Full name of user
service_notification_period 24×7
host_notification_period 24×7
service_notification_options w,u,c,r
host_notification_options d,u,r
service_notification_commands notify-service-by-fetion
host_notification_commands notify-service-by-fetion
}
第五个是手动创建的配置文件contactgroups.cfg,其格式如下:
#vim /usr/local/nagios/etc/contactgroups.cfg
define contactgroup {
contactgroup_name group
alias system administrator group
members webserver
}
关键的角色终于登场,这就是配置文件hosts.cfg。下面是本人定义的基本样式
# vim /usr/local/nagios/etc/hosts.cfg
define host {
host_name webserver //
所监控的主机的主机名
alias nagios server
address 192.168.175.129 //
所监控的主机的
ip
地址
contact_groups group
check_command check-host-alive //宕机就发报警通知
max_check_attempts 5
notification_interval 10
notification_period 24×7
notification_options d,u,r
}
再一个重量级的配置文件是services.cfg,没有这个文件,什么监控也没用。下面给出一个样式文件:
# vim /usr/local/nagios/etc/services.cfg
define service {
host_name webserver
service_description check_tcp 80
check_period 24×7
max_check_attempts 4
normal_check_interval 3
retry_check_interval 2
contact_groups group
notification_interval 10
notification_period 24×7
notification_options w,u,c,r
check_command
来自浩渊兄的博客:
别样的天空