全部博文(176)
分类: LINUX
2009-11-18 17:37:51
注释行:
#cfg_file=/usr/local/nagios/etc/localhost.cfg
去掉以下几行的注释:
cfg_file=/usr/local/nagios/etc/contactgroups.cfg //联系组配置文件路径
cfg_file=/usr/local/nagios/etc/contacts.cfg //联系人配置文件路径
cfg_file=/usr/local/nagios/etc/hostgroups.cfg //主机组配置文件路径
cfg_file=/usr/local/nagios/etc/hosts.cfg //主机配置文件路径
cfg_file=/usr/local/nagios/etc/hostgroups.cfg //服务组配置文件路径
cfg_file=/usr/local/nagios/etc/services.cfg //服务配置文件路径
cfg_file=/usr/local/nagios/etc/timeperiods.cfg //监视时段配置文件路径
改check_external_commands=0为check_external_commands=1
//允许在web界面下执行重启nagios、停止主机/服务检查等操作
把command_check_interval的值从默认的1改成command_check_interval=10s(或更高,根据自己需求而定)
ii. CGI脚本控制文件cgi.cfg
首先确保use_authentication=1。
修改
default_user_name=test //这里只能写一个用户
authorized_for_system_information=nagiosadmin,test
authorized_for_configuration_information=nagiosadmin,test
authorized_for_system_commands=test //多个用户之间用逗号隔开
authorized_for_all_services=nagiosadmin,test
authorized_for_all_hosts=nagiosadmin,test
authorized_for_all_service_commands=nagiosadmin,test
authorized_for_all_host_commands=nagiosadmin,test
这里的test用户,就是
/usr/local/apache/bin/htpasswd –c /usr/local/nagios/etc/htpasswd test
这个用户。如果要添加新管理员,执行:
# /usr/local/apache/bin/htpasswd /usr/local/nagios/etc/htpasswd test1
之后把test1用户添加到上面的cgi.cfg里的授权用户后,多个用户用逗号隔开。
iii. 时间段定义timeperiods.cfg
# vi /usr/local/nagios/etc/timeperiods.cfg
define timeperiod{
timeperiod_name 24x7 //时间段的名称,这个地方不要有空格
alias 24 Hours A Day,7Days 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
}
这
里我们定义了一个时间段,每天都是00:00-24:00,这个时间段我们给它取个名字叫24x7。在之后的host和service配置文件
里都会用到这里定义的时间短,当然我们还可以定义其他的时间短,譬如说再定义一个24x5的时间段。那么这个文件里就定义了两个时间短,我们可以监控用
24x7的,而警报通知用24x5的,当然这只是打个比方。
iv. 联系人定义contacts.cfg
# vi /usr/local/nagios/etc/contacts.cfg
define contact {
contact_name lele //联系人的名称,这个地方不要有空格
alias System Administrator
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c,r
host_notification_options d,u,r
service_notification_commands notify-by-email
host_notification_commands host-notify-by-email
email
}
创建了一个名为test的联系人,下面列出其中重要的几个选项做说明
service_notification_period 24x7
服务出了状况通知的时间段,这个时间段就是上面在timeperiods.cfg中定义的.
host_notification_period 24x7
主机出了状况通知的时间段, 这个时间段就是上面在timeperiods.cfg中定义的
service_notification_options w,u,c,r
当服务出现w—报警(warning),u—未知(unkown),c—严重(critical),或者r—从异常情况恢复正常,在这四种情况下通知联系人.
host_notification_options d,u,r
当主机出现d¬¬¬¬—当机(down),u—返回不可达(unreachable),r—从异常情况恢复正常,在这3种情况下通知联系人
service_notification_commands notify-by-email
服务出问题通知采用的命令notify-by-email,这个命令是在commands.cfg中定义的,作用是给联系人发邮件.至于commands.cfg之后将专门介绍
host_notification_commands host-notify-by-email
同上,主机出问题时采用的也是发邮件的方式通知联系人
email
很明显,联系的人email地址
pager 1338757xxxx
联系人的手机,如果支持短信的通知的话,这个就很有用了.
alias是联系人别名,address是地址 意义不大.
按照上面的方式简单的复制修改就可以创建多个联系人了.
v. 联系人组contactgroups.cfg
# vi /usr/local/nagios/etc/contactgroups.cfg
define contactgroup{
contactgroup_name sagroup //联系人组的名称,同样不能空格
alias System Administrator Group //别名
members test //组的成员,来自于上面定义的contacts.cfg,如果有多个联系人则以逗号相隔
}
vi. 定义被监控主机hosts.cfg
# vi /usr/local/nagios/etc/hosts.cfg
define host {
host_name Nagios-Server //被监控主机的名称,别带空格
alias Nagios Server //别名
address 192.168.1.201 //被监控主机的IP地址
contact_groups sagroup //联系人组,上面在contactgroups.cfg中定义的sagroup
check_command check-host-alive //监控的命令check-host-alive,这个命令来自commands.cfg,用来监控主机是否存活
max_check_attempts 3 //检查失败后重试的次数
check_period 24x7 //检查的时间段24x7,同样来自于我们之前在timeperiods.cfg中定义的
notification_interval 50 //提醒的间隔,每隔50分钟提醒一次
notification_period 24x7 //提醒的周期, 24x7,同样来自于我们之前在timeperiods.cfg中定义的
notification_options d,u,r //指定什么情况下提醒,具体含义见之前contacts.cfg部分的介绍
}
通过简单的复制修改就可以定义多个主机了.
vii. 主机组定义hostgroups.cfg
# vi /usr/local/nagios/etc/hostgroups.cfg
define hostgroup{
hostgroup_name sa-servers //主机组名称
alias sa Servers //别名
members nagios-server //组的成员主机,多个主机以逗号相隔,必须是上面hosts.cfg中定义的
}
viii. 监控服务定义services.cfg
这部分是整个监控系统的核心部分.
用nagios主要是监控一台主机的各种信息,包括本机资源,对外的服务等等.这些在nagios里面都是被定义为一个个的项目(nagios称之为服
务,为了与主机提供的服务相区别,我这里用项目这个词),而实现每个监控项目,则需要通过services.cfg文件中定义的命令.
# vi /usr/local/nagios/etc/services.cfg
define service{
host_name nagios-server //被监控的主机,hosts.cfg中定义的
service_description Check Disk //这个监控项目的描述(也可以说是这个项目的名称),可以空格,我们这里定义的是监控这个主机是不是存活
check_command
check_local_disk!10%!5%!/
//所用的命令,是commands.cfg中定义的,其中!后面跟的是命令后面需要跟的参数,多个参数可以用多个!来追加,这里
check_local_disk的第一个参数是10%第二个参数是5%
max_check_attempts 3
normal_check_interval 3
retry_check_interval 2
check_period 24x7 //监控的时间段,是timeperiods.cfg中定义的
notification_interval 50
notification_period 24x7 //通知的时间段, ,是timeperiods.cfg中定义的
notification_options w,u,c,r //在监控的结果是wucr时通知联系人,具体含义看前文.
contact_groups sagroup //联系人组,是contactgroups.cfg中定义的
}
可以看到基本上所有的成员都是已经定义的.同样的将上面的内容复制修改,就可以定义多个服务。
ix. 插件注册commands.cfg
# vi /usr/local/nagios/etc/commands.cfg
define command{
command_name check-host-alive
//在hosts.cfg和services.cfg中,check_command所对应的命令名
command_line $USER1$/check_ping -H $HOSTADDRESS$ -w 3000.0,80% -c 5000.0,100% -p 1
//其中$USER1$是在resource.cfg文件中定义的,代表插件的安装路径.就如我们上面看到的那样$USER1$=/usr/local/nagios/libexec,至于$HOSTADDRESS$,则默认被定义为监控主机的地址.
}
我
们在services.cfg中定义了对Nagios-Server执行check-host-alive命令,实际上就是执行了
/usr/local/nagios/libexec/check_ping -H
192.168.1.201(Nagios-Server的ip地址) -w 3000.0,80% -c 5000.0,100% -p 1
commands.cfg
默认已经定义了很多这样的命令,如check_http,check_ftp等,这些命令,我们都可以直接用,但是如果我们要用
的命令这里没有定义,那么我们就需要把/usr/local/nagios/libexec下我们需要用得插件,像上面的格式写到
commands.cfg中,完成插件注册,之后我们就可以在services.cfg和hosts.cfg里调用了。
当我们的services.cfg需要调用命令的时候,就在check_command后面对应写上需要的调用的命令,当命令带参数时,例如:
define command{
command_name check_local_disk
command_line $USER1$/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$
}
其中$ARG1$是参数一,$ARG2$是参数二,当我们在services.cfg里调用的时候,check_command应该对应的写上 check_local_disk!10%!5%!/,这里的3个参数用!追加.例如:
define service{
host_name nagios-server
//被监控的主机,hosts.cfg中定义的
service_description Check Disk
//这个监控项目的描述
check_command check_local_disk!10%!5%!/
max_check_attempts 3
normal_check_interval 3
…
…
…
}
参数的意义可以运行/usr/local/nagios/libexec check_disk –h得知.
//测试
配置好以后,使用命令:/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
检查配置是否有误。
3.nagios -plugins安装
3.1下载
3.2安装
Nagios是一个框架,真正的所有的监控工作全部是由nagios插件来完成的,而nagios只是做一个汇总,把监控结果整理的明了之后呈现到用户面前。
tar -zxf ./nagios-plugins-1.4.10.tar.gz
cd ./nagios-plugins-1.4.10
./configure –prefix=/usr/local/nagios //注意这里要把安装目录与nagios安装目录相同
make && make install //安装完毕之后回在/usr/local/nagios/下产生一个libexec的目录
ls /usr/local/nagios/libexec //里面有很多插件,安装完成
3.3启动apache+nagios+apache
//启动apache
/usr/local/apache/bin/apachectl start
//检查nagios配置是否有误
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
//启动nagios
/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg
在任意一台机器上打开网页http://服务器地址/nagios
输入用户名test 密码111111
登入,就可以看到nagios的界面。
4.mysql安装
4.1下载
4.2安装
tar zvxf mysql-5.0.20a.tar.gz //解压缩
cd mysql-5.0.20a //进入解压缩后的文件目录
./configure --prefix=/usr/local/mysql \ //设定安装目录
--enable-thread-safe-client \ //编译线程安全版的客户端库
--without-debug \ //关闭debug功能
--localstatedir=/data/mysqldata \ //设定数据库文件目录
make //编译
make install //安装
cd /
mkdir /data
mkdir /data/mysqldata
/usr/local/mysql/bin/mysql_install_db //初始化授权
这一命令如果出错(...gethostname...)
修改/etc/hosts中第一行开头的1:为:
127.0.0.1
chown –R root:root /usr/local/mysql //文件属性改为root用户
cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf //复制配置文件
----------------------------------启动MySQL服务----------------------------------
/usr/local/mysql/bin/mysqld_safe --user=root & //启动MySQL
----------------------------------修改MySQL密码----------------------------------
/usr/local/mysql/bin/mysqladmin -uroot password hrsoft//修改密码
----------------------------------关闭MySQL服务----------------------------------
/usr/local/mysql/bin/mysqladmin -uroot –phrsoft shutdown //关闭MySQL
//添加一个nagios用户供ndo2db使用,密码1234
/usr/local/mysql/bin/mysql -uroot -phrsoft //登录到mysql
use mysql;
GRANT ALL PRIVILEGES ON *.* TO IDENTIFIED BY '1234';
//修改mysql用户(nagios)权限
grant select,insert,update,delete on *.* to identified by "1234";
退出mysql,使用nagios登录mysql
/usr/local/mysql/bin/mysql -unagios -p1234
show databases;
//添加数据库给ndo2db使用
create database nagios;
//以下几个是常用的命令
修改mysql用户(nagios)密码:
use mysql;update user set password = PASSOWRD("123456") where user='nagios';
修改mysql用户(nagios)权限
grant select,insert,update,delete on *.* to identified by "1234";
添加用户:
INSERT
INTO user VALUES( 'localhost.localdomain', 'monty',
PASSWORD('something'), 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y',
'Y', 'Y', 'Y', 'Y', 'Y');
添加用户:
GRANT ALL PRIVILEGES ON *.* TO IDENTIFIED BY 'password';
4.3启动
/usr/local/mysql/bin/mysqld_safe --user=root & //启动mysql
/usr/local/mysql/bin/mysqladmin -uroot –phrsoft shutdown //关闭MySQL
5.安装perl-DBD-mysql
5.1下载
5.2安装
rpm –i perl-DBD-MySQL-3.0007-1.fc6.i386.rpm
6.Ndoutils安装
6.1下载
6.2安装
tar -zxf ndoutils-1.4b7.tar.gz
cd ndoutils-1.4b7.tar.gz
./configure --prefix=/usr/local/nagios
--enable-mysql
--with-mysql-lib=/usr/local/mysql/lib/mysql
--with-mysql-inc=/usr/local/mysql/include
--disable-pgsql
如果没有提示错误,
make
编译时如提示mysql的路径问题,
修改 src/Makefile 下的CFLAGS,加入mysql的include路径:
CFLAGS=-O0 -g -DHAVE_CONFIG $(DBFLAGS)
cd db
./installdb -unagios -p1234 -hlocalhost.localdomain -d nagios
会在当前目录下创建一个mysql.sql的文件。
//测试
登录到数据库使用:
/usr/local/mysql/bin/mysql -uroot -phrsoft
show databases;
use mysql
show tables;
可看到数据库中有nagios的表。
但是 select可看到表中没有数据。
6.3设置ndo2db和ndomod
//复制mdoutils文件到安装目录
cp src/ndo2db-2x /usr/local/nagios/bin/ //ndo2db可执行文件
cp src/ndomod-2x.o /usr/local/nagios/bin/ //ndomod库文件
cp src/log2ndo /usr/local/nagios/bin/
cp config/ndo2db.cfg /usr/local/nagios/ //ndo2db配置文件
cp config/ndomod.cfg /usr/local/nagios/ //ndomod配置文件
//cfg文件
vi /usr/local/nagios/etc/nagios.cfg //nagios主配置文件
找到broker_module的地方,添加以下内容,(注,下面的要写在一行)
broker_module=/usr/local/nagios/bin/ndomod-2x.o config_file=/usr/local/nagios/etc/ndomod.cfg //这条语句将使Nagios下次启动时自动加载NDOMOD事件代理。
确认在Nagios主配置文件中有如下语句:
Event_broker_options=-1
vi /usr/local/nagios/etc/ndo2db.cfg
修改以下内容:
ndo2db_user=nagios
ndo2db_group=nagios
db_servertype=mysql //数据库类型
db_host=localhost.localdomain //数据库的主机名
db_name=nagios //数据库名
db_user=nagios //登录mysql的用户名
db_pass=1234 //密码
6.4启动ndo2db
/usr/local/nagios/bin/ndo2db-2x -c /usr/local/nagios/etc/ndo2db.cfg
7.启动和关闭apache+nagios+mysql+ndo2db
7.1启动的shell
# up apache
/usr/local/apache/bin/apachectl start
#up nagios
/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg
#up mysql
/usr/local/mysql/bin/mysqld_safe --user=root &
#up ndo2db
/usr/local/nagios/bin/ndo2db-2x -c /usr/local/nagios/etc/ndo2db.cfg