现在的位置: 首页 > 综合 > 正文

Nagios学习笔记

2013年10月05日 ⁄ 综合 ⁄ 共 11551字 ⁄ 字号 评论关闭

Nagios学习笔记之(一)最初搭建

2012-07-17 13:05:08

标签:linux

监控

nagios

cacti

版权声明:原创作品,如需转载,请与作者联系。否则将追究法律责任。

Nagios学习笔记之一最初搭建
一、简介:
Nagios是一款开源的免费网络监视工具,能有效监控Windows、Linux和Unix的主机状态,交换机路由器等网络设置,打印机等。在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员,在状态恢复后发出正常的邮件或短信通知。

二、搭建过程:

OS

CentOS 5.5 x86_64(最小化即可)

Nagios主程序:

nagios-cn-3.4.1

Nagios插件:

nagios-plugins-1.4.15.tar.gz

2.1安装前:

2.1.1安装依赖包,下载源程序包

1. 
#cd /etc/yum.repos.d/  

2. 
#rm -fr ./*  

3. 
#wget wget http://mirrors.163.com/.help/CentOS-Base-163.repo  

4. 
#yum makecache 

#删除系统自带的yum源,下载网易的网络源并更新缓存

1. 
#yum -y install gcc glibc glibc-common gd gd-devel httpd 


#
安装必须的依赖包

1. 
#wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.4.1.tar.gz 

2. 
#wget http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.15.tar.gz 


#
下载nagios主程序以及插件程序

2.1.2正式安装:

1. 
#groupadd nagcmd  

2. 
#useradd -G nagcmd nagios  

3. 
#usermod -G nagcmd apache 

#创建一个用户组名为nagcmd用于从Web接口执行外部命令。将nagios用户和apache用户都加到这个组中。

1. 
#tar zxf nagios-3.4.1.tar.gz  

2. 
#cd nagios  

3. 
#./configure --prefix=/usr/local/nagios --with-command-group=nagcmd 

4. 
#解压程序包,并进行预编译前的配置(默认用户就是nagios,所以只需指定组)  

5. 
#make all                         #编译Nagios程序包源码  

6. 
#make install                     #安装二进制运行程序  

7. 
#make install-init                #初始化脚本  

8. 
#make install-config              #配置文件样本  

9. 
#make install-commandmode         #设置运行目录权限  

10.
#make install-webconf             #安装NagiosWEB配置文件到Apacheconf.d目录下 

#htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
#
创建一个nagiosadmin的用户用于登录Nagiosweb界面。

#service httpd restart
#
重启apache使服务生效

1. 
#tar zxf nagios-plugins-1.4.15.tar.gz  

2. 
#cd nagios-plugins-1.4.15  

3. 
#./configure --prefix=/usr/local/nagios --with-nagios-user=nagios --with-nagios-group=nagios  

4. 
#make && make install  

5. 
#编译安装nagios插件 


#chkconfig --add nagios
#chkconfig nagios on
#chkconfig httpd on
#
添加系统服务并设开机自启

#/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
#
验证配置文件是否正确,如下图则没问题:

#service nagios start
#
启动服务

#vim /root/.bashrc
#
添加一条:alias check='/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg'
#source /root/.bashrc
#在以后的配置和调试过程中,经常需要检查配置文件,所以加条别名为了方便

#备注:注意防火墙Selinux(都关了即可)

输入http://IP/nagios,输入前面设置的用户名密码后,如下图即安装成功。

安装后:

问题1:打开http://ip/nagios,输入口令验证后出现“You don't have permission to access /nagios/ on this server”

解决方法:没装php导致,yum -y install php,装好,重启httpd和nagios

 

问题2:如果提示“Whoops!   Error: Could not read object configuration data! ”,这是因为没有启动nagios后台进程,执行以下命令

解决方法:/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg

 

问题3:Nagios显示类似错误:HTTP WARNING: HTTP/1.1 403 Forbidden - 5240 bytes in 0.002 second response time。该错误表明在apache web根目录没有index.html文件。

解决方法:在web根目录(如:/var/www/html/目录)建立index.html文件,重启apache和nagios即可。

 

 

问题4:安装nagios-plugins,make时出现如下报错:

make[2]: *** [check_http.o] Error 1
make[2]: Leaving directory `/mnt/nagios-plugins-1.4.13/plugins'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/mnt/nagios-plugins-1.4.13'
make: *** [all] Error 2

 

解决办法:yum -y install openssl openssl-devel,然后重新执行./configure,再编译安装。

Nagios学习笔记之(二)监控部署

2012-08-02 00:01:38

标签:linux

监控

nagios

cacti

原创作品,允许转载,转载时请务必以超链接形式标明文章
原始出处
、作者信息和本声明。否则将追究法律责任。http://xtony.blog.51cto.com/3964396/950826

 Nagios学习笔记之(二)监控部署

 

前言:本篇致力于初涉Nagios的同学,老鸟绕行!

 

前面已经把最基本的Nagios以及插件安装好了,现在只能对本机进行监控,要想监控远程主机,就必须通过类似于NRPE的软件来实现。

监控端和被监控端都要装nrpe,因为靠此来通信,nrpe是通过ssl来通信的,所以比较安全。

用到ssl就得装相关支持的包:yum -y install openssl openssl-devel

现在开始来安装nrpe

以下操作在监控端进行:

首先把下载下来的nrpe-2.12.tar解压(自行网上下载)

1. 
#tar zxf nrpe.2.12.tar 

2. 
#cd nrpe-2.12 

3. 
#./configure  

4. 
#make all 

5. 
#make install-plugin 

安装完成后会在/usr/local/nagios/libexec/下生成check_nrpe文件

下面定义一个check_nrpe监控命令(默认装好以后没有被nagios调用)

顺带说下监控整体思想:

1.要定义监控的主机或服务

2.执行什么命令来监控

3.出现问题要通知的人

4.采用什么方式通知,邮件|短信    -----后续再细说

修改/usr/local/nagios/etc/commands.cfg(定义命令的文件),添加如下内容: 

1. 
define command { 

2. 
    command_name    check_nrpe 

3. 
    command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ 

4. 

至此监控端暂时完事。

 

以下操作在被监控端进行:

需要两个文件:

nagios-plugins-1.4.15.tar    (nrpe依赖于这个插件)

nrpe-2.12.tar                (远程通信)

 

首先创建安装用户:

useradd -s /sbin/nologin nagios

解压安装Nagios插件:

1. 
#tar xzf nagios-plugins-1.4.15.tar.gz  

2. 
#cd nagios-plugins-1.4.15 

3. 
#./configure --prefix=/usr/local/nagios --with-nagios-user=nagios --with-nagios-group=nagios 

4. 
#make && make install 

解压安装nrpe

1. 
#tar zxf nrpe.2.12.tar 

2. 
#cd nrpe-2.12 

3. 
#./configure  

4. 
#make all 

5. 
#make install-plugin 

6. 
#make install-daemon 

7. 
#make install-daemon-config 

8. 
#make install-xinetd 

安装完毕。

接下来把nrpe交由xinetd来监听(好处:修改nrpe的配置文件不需要重启服务

vim /etc/xinetd.d/nrpe

将only_from =
后面加上监控端的地址

确保/etc/services有nrpe 5666/tcp #NRPE这一行,没有则添加

重启xinetd服务,至此被监控端配置完毕。

 

接下来测试下连通性,在监控端执行:

/usr/local/nagios/libexec/check_nrpe -H
被监控端的地址

如能显示 “NRPE v2.12”,表明NRPE可以和被监控端正常通信。

 

部署前的工作基本OK了。

下面来说说,服务器上具体是怎么部署监控的。

首先来看下Nagios的目录结构

bin                   #存放执行文件,如nagios,以及后续安装的扩展程序

etc                   #存放配置文件,如nagios.cfg主配文件,平时部署维护操作最多的文件夹

include               #存放引用文件,默认为空

libexec               #存放执行命令,如check_load等,里面有很多命令,需要熟练掌握

sbin                  #存放一些cgi,平时一般不用动

share                 #存放一些网页文件,平时一般不用动

var                   #存放一些产生的数据文件,平时一般不用动

比较重要的就是etc和libexec。

下面说下如何定义一台主机以及主机上的服务:

首先修改:/usr/local/nagios/etc/nagios.cfg

去掉cfg_dir=/usr/local/nagios/etc/servers前面的注释

mkdir //usr/local/nagios/etc/servers

将来新建的主机以及服务都可以存放在这下面,建议把主机和服务写在一个配置文件中,按主机来划分,便于管理。

例如:

要监控一台http服务器

可以在servers下面新建一个以cfg结尾的文件

vim simple-http.cfg

1. 
define host{                          #定义一个主机 

2. 
        use linux-server              #引用etc/objects/templates.cfg中的linux-server配置(后续细说) 

3. 
        host_name http                #定义一个主机名,并不是http的实际主机名,任意即可,但要继续,后面要调用 

4. 
        alias http                    #定义一个别名 

5. 
        address 192.168.1.1           #指定地址 

6. 

7. 
define service{                       #定义一个服务 

8. 
        use generic-service           #引用etc/objects/templates.cfg中的generic-service配置(后续细说) 

9. 
        host_name http                #引用主机名 

10.
        service_description CPU Load  #定义监控服务名,就是在web网页上显示的服务名 

11.
        check_command check_nrpe!check_load  #定义要执行的命令:让check_nrpe调用被监控端的check_load命令执行 

12.
}                                     #以下类似(备注:每条定义的命令都必须在etc/nrpe.cfg中明确定义)          

13.
define service{          

14.
        use generic-service 

15.
        host_name http 

16.
        service_description Current Users 

17.
        check_command check_nrpe!check_users 

18.

19.
define service{ 

20.
        use generic-service 

21.
        host_name http 

22.
        service_description Disk Free Space / 

23.
        check_command check_nrpe!check_root 

24.

25.
define service{ 

26.
        use generic-service 

27.
        host_name http 

28.
        service_description Total Processes 

29.
        check_command check_nrpe!check_total_procs 

30.

31.
define service{ 

32.
        use generic-service 

33.
        host_name http 

34.
        service_description Zombie Processes 

35.
        check_command check_nrpe!check_zombie_procs 

36.

保存以后,check一下,没问题重载nagios的配置文件

service nagios reload

登录网页后就会看见定义监控的项目了。

 

后续:配置文件详解

Nagios学习笔记之(三)配置详解

2012-08-09 13:33:29

标签:配置

监控

nagios

详解

cfg

版权声明:原创作品,如需转载,请与作者联系。否则将追究法律责任。

Nagios学习笔记之(三)配置详解

 

前言:

上篇先实现的监控部署,就是想先搭建起来,有点小成就,现在再来看配置文件中的详解。只有把其中配置文件中的联系都理解清楚了,才能方便日后自己自定义的检测。Nagios的配置文件还是有其鲜明的特点的。

网上也有很多零零闪闪的配置讲解,但大多都不够详解,此篇为自己整理,当然也参考了网络上的信息,有配置的解释还有自己的一些备注,可能还有很多不完善的地方,后续会慢慢补充,希望看的人能看懂,还有就是自己以后能看懂,呵呵。

好了,不多说了,开始!

 

一、目录层次:

Nagios以及其插件,安装并配置好了以后,目录层次如下:

1. 
bin              #Nagios执行程序所在目录,包括nagiosnpcnrpe等; 

2. 
etc              #Nagios配置文件位置,重点; 

3. 
libexec          #Nagios插件目录,里面有具体监控的各种插件,重点; 

4. 
sbin             #Nagios Cgi文件所在目录,也就是执行外部命令所需文件所在的目录; 

5. 
share            #Nagios网页文件所在的目录,也就是web页面给我们展示的文件; 

6. 
include          #Nagioscgi文件的外部调用; 

7. 
var              #Nagios日志文件、spid 等文件所在的目录。 

二、配置文件概览:

Nagios所有的配置文件以cfg为结尾,在默认装好以后会在etc/下生成一些,我们来逐个看下:

 

1. 
etc/nagios.cfg         #Nagios主配置文件,所有的cfg文件(外部调用除外)必须都在此文件中引用才能生效; 

2. 
etc/resource.cfg       #定义$USER1$变量,设置插件路径; 

3. 
etc/nrpe.cfg           #定义nrpe检测命令的文件,在command中引用; 

4. 
etc/objects下: 

5. 
    commands.cfg    #定义命令执行的文件,比如check_tcpcheck_local_disk等,由后面定义服务的配置文件来引用; 

6. 
    contacts.cfg    #定义联系人的文件,比如服务down了通知的对象; 

7. 
    localhost.cfg   #定义本机的监控条目,默认生成; 

8. 
    printer.cfg     #定义打印机的文件,默认未启用,在生产环境中意义不大; 

9. 
    switch.cfg      #定义监控路由器和交换机的配置文件,默认未启用; 

10.
    templates.cfg   #定义服务类型的文件,样本文件,比如定义的linux-server就是在此文件中预先定义好; 

11.
    timeperiods.cfg #定义要监控时间段文件,比如24x7workhours等; 

12.
    windows.cfg     #定义监控Windows的文件,默认未启用。 

   

备注:这些文件的名字不是一定的,只要里面的内容正确就可以,Nagios可以自动识别,比如你把commands.cfg和localhost.cfg的文件名互换,都是没有问题的。

 

三、各配置文件详解:(考虑篇幅,只列举部分)

1.etc/nagios.cfg(主配置文件)

1. 
log_file=/usr/local/nagios/var/nagios.log                        

2. 
这个变量用于设定Nagios在何处创建其日志文件。 

3. 
# OBJECT CONFIGURATION FILE(S) 

4. 
对象的配置文件 

5. 
可以指定单个对象的配置文件如下所示: 

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

7. 
#定义其命令文件 

8. 
cfg_file=/usr/local/nagios/etc/objects/contacts.cfg       

9. 
#定义联系人文件 

10.
cfg_file=/usr/local/nagios/etc/objects/timeperiods.cfg  

11.
#定义时间段文件 

12.
cfg_file=/usr/local/nagios/etc/objects/templates.cfg      

13.
#定义样本文件 

14.
cfg_file=/usr/local/nagios/etc/objects/localhost.cfg       

15.
定义监测本地( Linux )主机 

16.
 

17.
#cfg_file=/usr/local/nagios/etc/objects/windows.cfg     

18.
定义监测( windows )主机 

19.
 

20.
#cfg_file=/usr/local/nagios/etc/objects/switch.cfg         

21.
定义监测路由器或交换机 

22.
  

23.
#cfg_file=/usr/local/nagios/etc/objects/printer.cfg         

24.
定义监测打印机 

25.
  

26.
也可以告诉Nagios处理所有配置文件(带有.cfg扩展名)在特定的目录使用cfg_dir指令如下所示: 

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

28.
#cfg_dir=/usr/local/nagios/etc/printers 

29.
#cfg_dir=/usr/local/nagios/etc/switches 

30.
#cfg_dir=/usr/local/nagios/etc/routers 

 

总结:配置文件里的变量:

日志文件:

格式:    log_file=<file_name>

样例:    log_file=/usr/local/nagios/var/nagios.log

 

说明:

这个变量用于设定Nagios在何处创建其日志文件。它应该是你主配置文件里面的第一个变量,当Nagios找到你配置文件并发现配置里有错误时会向该文件中写入错误信息。如果你使能了日志回滚,Nagios将在每小时、每天、每周或每月对日志进行回滚。

 

对象配置文件:

格式:    cfg_file=<file_name>

样例:

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

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

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

 

说明:

该变量用于指定一个包含有将用于Nagios监控对象的对象配置文件。对象配置文件中包括有主机、主机组、联系人、联系人组、服务、命令等等对象的定义。配置信息可以切分为多个文件并且用cfg_file=语句来指向每个待处理的配置文件.

 

对象配置目录:

格式:    cfg_dir=<directory_name>

样例:

cfg_dir=/usr/local/nagios/etc/commands

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

cfg_dir=/usr/local/nagios/etc/hosts

 

说明:

该变量用于指定一个目录,目录里包含有将用于Nagios监控对象的对象配置文件。所有的在这个目录下的且以.cfg为扩展名的文件将被作为配置文件来处理。另外,Nagios将会递归该目录下的子目录并处理其子目录下的全部配置文件。你可以把配置放入不同的目录并且用cfg_dir=语句来指向每个待处理的目录。

 

2.etc/objects/commands.cfg(命令配置文件)

1. 
#定义通知的方式,主机发生故障通知和服务发送故障通知 

2. 
define command{ 

3. 
        command_name    notify-host-by-email 

4. 
        command_line    /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $H 

5. 
OSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /bin/mail -s "** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **" $CONTACTEMAIL$ 

6. 
        } 

7. 
 #定义通知的方式,服务发生故障通知和服务发送故障通知 

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

9. 
define command{ 

10.
        command_name    notify-service-by-email 

11.
        command_line    /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nS 

12.
tate: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$\n" | /bin/mail -s "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SE 

13.
RVICESTATE$ **" $CONTACTEMAIL$ 

14.
        } 

15.
#定义检测主机是否存活的命令,command_name是最后在服务中的引用名,而它是调用的check_ping命令来实现的 

16.
define command{ 

17.
        command_name    check-host-alive 

18.
        command_line    $USER1$/check_ping -H $HOSTADDRESS$ -w 3000.0,80% -c 5000.0,100% -p 5 

19.
        } 

20.
#定义检测主机cpu负载的命令 

21.
define command{ 

22.
        command_name    check_local_load 

23.
        command_line    $USER1$/check_load -w $ARG1$ -c $ARG2$ 

24.
        } 

25.
#定义检测主机进程的命令 

26.
define command{ 

27.
        command_name    check_local_procs 

28.
        command_line    $USER1$/check_procs -w $ARG1$ -c $ARG2$ -s $ARG3$ 

29.
         

抱歉!评论已关闭.