您的位置:首页 > 运维架构 > Linux

nagios监控linux主机、web等各种服务,并实现飞信自动报警

2012-12-13 11:01 1146 查看
作为系统运维工程师,最担心的不是系统出现什么故障,而是不能在第一时间获知系统出现故障或宕机了,尤其是遇到节假日,系统管理员就很紧张。要改变 这种被动的局面,这里我以网络监控软件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

 

来自浩渊兄的博客:
别样的天空
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: