linux安装nagios

2023年 7月 15日 104.5k 0

前言: nagios是目前比较流行的一款开源监控软件,主要通过强大的插件来实现各种监控需求,下面介绍一下简单的部署方法。

一、服务端安装主程序

1、先去下载nagios-cn-3.2.3.tar.bz2

[root@book tmp]# wget http://sourceforge.net/projects/nagios-cn/files/sourcecode/zh_CN%203.2.3/nagios-cn-3.2.3.tar.bz2/download

2、解压

[root@book tmp]# tar jxf nagios-cn-3.2.3.tar.bz2

3、安装

[root@book tmp]# useradd nagios
[root@book tmp]# mkdir /usr/local/nagios
[root@book tmp]# cd nagios-cn-3.2.3
[root@book nagios-cn-3.2.3]# ./configure --prefix=/usr/local/nagios    
[root@book nagios-cn-3.2.3]# make all
[root@book nagios-cn-3.2.3]# make install    //安装主程序
[root@book nagios-cn-3.2.3]# make install-init    //在/etc/rc.d/init.d安装启动脚本
[root@book nagios-cn-3.2.3]# make install-commandmode    //配置目录权限
[root@book nagios-cn-3.2.3]# make install-config    //安装示例配置文件

4、验证安装是否成功首先切换到安装路径,看是否存在etc,bin,sbin,share,var这五个目录,如果存在就说明程序正常安装了。以下对五个目录的功能做简要说明:bin:nagios执行程序所在的目录,nagios文件即为主程序。etc:nagios配置文件目录,当make install-config完以后etc下面就会出现默认的配置文件。sbin:nagios CGI文件所在目录,这里存放的是一些外部命令执行程序。share:nagios网页文件目录,存放一些html文件。var:nagios日志文件、spid等文件目录。5、安装插件nagios-plugins

[root@book tmp]# tar zxf nagios-plugins-1.4.13.tar.gz
[root@book tmp]# cd nagios-plugins-1.4.13
[root@book nagios-plugins-1.4.13]# ./configure --prefix=/usr/local/nagios
[root@book nagios-plugins-1.4.13]# make
[root@book nagios-plugins-1.4.13]# make install

这个装完之后会在/usr/local/nagios/多出一个libexec的文件夹,这里存放nagios所要用到的所有插件.6、修改apache配置修改apache的配置文件,增加nagios的目录,并且访问此目录需要进行身份验证。vim /etc/httpd/conf/httpd.conf 在最后增加以下内容:

ScriptAlias "/nagios/cgi-bin" "/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-userAlias /nagios "/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增加验证用户:此用户是通过web访问nagios的时候,要输入的用户名和密码,这里咱们用admin,密码为oracle
[root@book nagios-plugins-1.4.13]# htpasswd -c /usr/local/nagios/etc/htpasswd.users belt
New password:
Re-type new password:
Adding password for user admin

这个时候重启下apache:[root@book nagios-plugins-1.4.13]# service httpd restart这个时候通过web就可以访问nagios了,当然没有什么功能,只能看到一个壳子。web地址就是http://IP/nagios IP就是本机的IP,打开后会弹出一个对话框让你输入用户名和密码,如果没有,则表示这之前后错误,排除后再往下进行。

tar xf httpd-2.2.16.tar
cd httpd-2.2.16
./configure --prefix=/usr/local/apache
make 
make install
vi /usr/local/apache/conf/httpd.conf
netstat -antlp|grep 80

二、安装及配置客户端

Nagios客户端只需安装nagios-plugins和nrpe就可以的。

  • 安装nagios-plugins

    [root@book nagios]# useradd nagios -s /sbin/nologin -M
    [root@book nagios]# mkdir /usr/local/nagios
    [root@book nagios]# tar zxvf nagios-plugins-1.4.13.tar.gz 
    [root@book nagios]# cd nagios-plugins-1.4.13
    [root@book nagios-plugins-1.4.13]# ./configure --prefix=/usr/local/nagios
    [root@book nagios-plugins-1.4.13]# make && make install
  • 安装nrpe

    cp public-yum-el5.repo /etc/yum.repos.d/
    openssl-devel
    DNS:
    vi /etc/resolv.conf
    nameserver XXX.XXX.XX.XX
    [root@book nagios]# tar zxvf nrpe-2.8.1.tar.gz
    [root@book nagios]# cd nrpe-2.8.1
    [root@book nrpe-2.8.1]# ./configure --prefix=/usr/local/nagios
    [root@book nrpe-2.8.1]# make all
    [root@book nrpe-2.8.1]# make install-plugin
    [root@book nrpe-2.8.1]# make install-daemon     //安装守护进程
    [root@book nrpe-2.8.1]# make install-daemon-config         //安装配置文件
    [root@book nrpe-2.8.1]# make install-xinetd    //安装xinetd脚本
    [root@book nagios-plugins-1.4.13]# chown -R nagios.nagios /usr/local/nagios/

    3、配置nrpe

    [root@book nrpe-2.8.1]# vim /etc/xinetd.d/nrpe
    # default: on
    # description: NRPE (Nagios Remote Plugin Executor)
    service nrpe
    {
         flags           = REUSE
         socket_type     = stream
         port            = 5666
         wait            = no
         user            = nagios
         group           = nagios
         server          = /usr/local/nagios/bin/nrpe
         server_args     = -c /usr/local/nagios/etc/nrpe.cfg --inetd
         log_on_failure  += USERID
         disable         = no
         only_from       = 127.0.0.1
    }

    这里面只需要改动一个地方,only_from后面应该跟上nagios主程序安装的主机所在IP。4、编辑/etc/services文件,增加NRPE服务

    root@book nrpe-2.8.1]# vim /etc/services

    在最后一行加入以下内容

    nrpe            5666/tcp                        #nrpe

    接着重启xinetd服务

    [root@book nrpe-2.8.1]# service xinetd restart
    停止 xinetd:                                              [确定]
    启动 xinetd:                                              [确定]

    5、检查nrpe是否正常工作检查nrpe是否正常监听端口了

    [root@book nrpe-2.8.1]# netstat -at|grep nrpe
    tcp        0      0 *:nrpe                      *:*                         LISTEN

    出现上面面的结果代表已经正常监听端口了检查nrpe正常工作

    [root@book nrpe-2.8.1]# /usr/local/nagios/libexec/check_nrpe -H localhost
    NRPE v2.8.1

    返回nrpe的版本则说明正常工作3-4不做,不用xinetd方式启动client

    vi /usr/local/nagios/etc/nrpe.cfg

    修改allow_hosts

    /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d

    三、配置服务端

    大部分配置文件都在/usr/local/nagios/etc目录下。1、配置nagios.cfg文件(默认是不需要配置的)

    log_file=/usr/local/nagios/var/nagios.log //记录nagios日志的地址,默认不需要改动。
    cfg_file=/usr/local/nagios/etc/contactgroups.cfg //联系组配置文件路径
    cfg_file=/usr/local/nagios/etc/contacts.cfg //联系人配置文件路径
    cfg_file=/usr/local/nagios/etc/commands.cfg //监控用到的命令
    cfg_file=/usr/local/nagios/etc/hosts.cfg //主机配置文件路径
    cfg_file=/usr/local/nagios/etc/services.cfg //服务配置文件路径
    cfg_file=/usr/local/nagios/etc/timeperiods.cfg //监视时段配置文件路径

    首先到/usr/local/nagios/etc/cgi.cfg里面去修改一个参数use_authentication默认是1,我们需要改成0,这个表示取消验证。如果不配置,那nagios虽然可以正常启动,但在页面上会报错:无权查看任何主机的信息。请检查HTTP服务器关于该CGI的访问权限设置。2、配置hosts.cfg这个文件里面配置被监控的主机信息,即需要监控哪台主机就要在这里加入那台主机的信息。默认/usr/local/nagios/etc下是没有hosts.cfg文件的,要手工创建一个,当然也可以是别的名称,但要和nagios.cfg里面对应主机配置文件路径指定的文件名称一致。下面举例hosts.cfg里的具体内容:

    define host{
         use                     linux-server
         host_name               book
         alias                   233
         address                 192.168.4.233
         }

    use后面就写linux-server不要动了,host_name就是被监控的主机名了,alias是在监控页面显示的这个主机的名称,可以随便写,但是你自己看了这个名称要知道它代表的是哪台主机,address就是这个主机的IP地址3、配置contacts.cfg这个文件配置是联系人的信息,即当监控的对象出问题的时候nagios程序告知的联系人。默认这个文件也是不存在的,手工创建,下面输入具体内容:

    define contact{
         contact_name                    nagiosadmin     
         use                             generic-contact
         alias                           Nagios Admin    
     host_notification_commands    notify-host-by-fetion,notify-host-by-email
         service_notification_commands   notify-host-by-fetion,notify-host-by-email
         email                           XXX@XX.COM,X@X.COM 
         pager                           13111111111,1312222222
         }

    contact_name就是指定这个联系人的名称(当然联系人可以不止一个),use后面的就写generic-contact,alias还是在监控页面看到的联系人名称,service_notification_commands指定了当出现故障的时候怎么通知联系人,notify-host-by-fetion代表通过飞信发短信,notify-host-by-email代表发邮件。email后面跟的就是要邮件通知的联系人组了,pager后面跟的是发短信通知的号码。4、配置timeperiods.cfg这个定义了监控的时间段,默认也是没有,要手工创建,一般都是7*24小时监控,下面是具体内容:

    define timeperiod{
         timeperiod_name 24x7
         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
         }

    5、配置command.cfg这个文件比较重要了,装完主程序之后在/usr/local/nagios/etc/objects目录下有个默认的例子,它定义了nagios去监控的命令,例如:

    define command{
         command_name    check-host-alive
         command_line    $USER1$/check_ping -H $HOSTADDRESS$ -w 3000.0,80% -c 5000.0,100% -p 5
         }

    这个command_name是留别的文件和程序来调用的,command_line就指定了这条命令到底做了什么事,我们从命令可以看出他是检测了主机是否存活。像前面contacts.cfg里面有一行定义的service_notification_commands后面跟的两个参数都是需要在command.cfg里面进行定义的,不然就会报错,下面是关于notify-host-by-fetion和notify-host-by-email的相关定义:

    define command{
         command_name    notify-host-by-fetion
         command_line   /usr/local/autofetion/autofetion/fetion --sid=飞信账号 --pwd=飞信密码 --to=$CONTACTPAGER$ --msg-gb="Host $HOSTSTATE$ alert for $HOSTNAME$! on '$LONGDATETIME$'" $CONTACTPAGER$
        }
    define command{
         command_name     notify-service-by-fetion
         command_line    /usr/local/autofetion/autofetion/fetion --sid=飞信账号 --pwd=飞信密码 --to=$CONTACTPAGER$ --msg-gb="'$HOSTADDRESS$' $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ on '$LONGDATETIME$' " $CONTACTPAGER$
      }
    define command{
         command_name    notify-host-by-email
         command_line    /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /bin/mail -s "** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **" $CONTACTEMAIL$
         }
    define command{
         command_name    notify-service-by-email
         command_line    /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$" | /bin/mail -s "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" $CONTACTEMAIL$
         }

    直接复制到command.cfg文件末尾即可。6、配置services.cfg这个算是nagios最重要的一个配置文件了,没这个文件nagios什么都不会做,它里面定义了nagios去监控哪些机器,哪些内容,以及什么时候监控,还有遇到错误通知哪些联系人。这样看来,前面的配置文件都只是铺垫。下面举个例子来说明:

    define service{
                 host_name               book
                 service_description     check-host-alive1111
                 check_command           check-host-alive
                 max_check_attempts      5
                 check_interval  5
                 retry_interval  3
                 check_period            24x7
                 notification_interval   30
                 notification_period     24x7
                 notification_options    w,c,r
                 contact_groups          nagiosadmin
                 }

    host_name即为要监控的主机名,这个名称要在hosts.cfg里面有定义,不然会找不到,check_command就是怎么去监控,同样这个命令在command.cfg里需要有定义,check_period这个是监控时间段,后面的名称24x7同样是咱们在前面timeperiods.cfg定义过的,contact_groups就更不用说了,后面跟的就是监控到故障后通知的联系人,就是咱们在contacts.cfg里面定义的。像别的参数都可以默认即可,例如retry_interval 3代表并不是一监控到故障立马报警,而是联系三次监控到故障才报警。再举个监控硬盘的例子:

    define service{
                 host_name               book
                 service_description     check_local_disk
                 check_command           check_local_disk!/dev/sda
                 max_check_attempts      5
                 check_interval  5
                 retry_interval  3
                 check_period            24x7
                 notification_interval   30
                 notification_period     24x7
                 notification_options    w,c,r
                 contact_groups          nagiosadmin
                 }

    nagios就是靠在service里面定义的一个又一个service来工作的。7、安装飞信机器人

    [root@book nagios]# tar zxvf fetion20091117-linux.tar.gz 
    [root@book nagios]# mv install /usr/local/fetion k
    [root@book nagios]# chmod -R 755 /usr/local/fetion
    [root@book nagios]# chown -R nagios:nagios /usr/local/fetion
    [root@book nagios]# ln -s /usr/local/fetion/libACE-5.7.2.so /usr/lib/libACE-5.7.2.so
    [root@book nagios]# ln -s /usr/local/fetion/libACE_SSL-5.7.2.so /usr/lib/libACE_SSL-5.7.2.so
    [root@book nagios]# ln -s /usr/local/fetion/libcrypto.so.4 /usr/lib/libcrypto.so.4
    [root@book nagios]# ln -s /usr/local/fetion/libssl.so.4 /usr/lib/libssl.so.4 

    四、启动nagios

    启动之前需要测试一下配置文件有没有什么错误,用以下命令:

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

    看到下面这些信息就说明没问题了

    Total Warnings: 0
    Total Errors:0

    作为守护进程后台启动nagios:

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

    然后就可以登陆到http://IP/nagios观察了监控oracle部分:在客户端:

    usermod -G oinstall nagios

    把oracle_home,path,sid变量添加到/usr/local/nagios/libexec/check_oracle脚本里去

    export ORACLE_BASE=/u01/app/oracle
    export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
    export PATH=/usr/java/jdk1.5.0_16/bin:$ORACLE_HOME/bin:$PATH
    export ORACLE_SID=db10g

    后面各个参数的含义见./check_oracle -h在oracle数据库里添加一个用来监控的用户并给以下视图的select权限:

    grant select on dba_data_files  to belt;
      dba_free_space
      dba_temp_files 
      v_$temp_extent_pool
      connect

    如果要监控cache 请允许查询 v_$sysstat and v_$librarycache在nrpe.cfg里加入:

    command[check_oracle_tns]=/usr/local/nagios/libexec/check_oracle --tns orcl belt oracle
    command[check_oracle_login]=/usr/local/nagios/libexec/check_oracle --login orcl belt oracle
    command[check_undo]=/usr/local/nagios/libexec/check_oracle --tablespace orcl belt oracle UNDOTBS1 90 70

    在服务端command.cfg里加入:

    define command{
         command_name check_nrpe2
         command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -t 30 -c $ARG1$
         }

    在services里加入

    define service{
                 use                     generic-service
                 host_name               book
                 service_description     oracle_listener
                 check_command           check_nrpe2!check_oracle_tns
                 max_check_attempts      5
                 check_interval  5
                 retry_interval  3
                 check_period            24x7
                 notification_interval   30
                 notification_period     24x7
                 notification_options    w,c,r
                 contact_groups          nagiosadmin
                 }
    define service{
                 use                     generic-service
                 host_name               Ora-IDC107
                 service_description     oracle_tablespace_undo
                 check_command           check_nrpe2!check_undo
                 max_check_attempts      5
                 check_interval  5
                 retry_interval  3
                 check_period            24x7
                 notification_interval   30
                 notification_period     24x7
                 notification_options    w,c,r
                 contact_groups          nagiosadmin
                 }
    define service{
                 use                     generic-servicedefine service{
                 use                     generic-service
                 host_name               Ora-IDC107
                 service_description     oracle_login
                 check_command           check_nrpe2!check_oracle_login
                 max_check_attempts      5
                 check_interval  5
                 retry_interval  3
                 check_period            24x7
                 notification_interval   30
                 notification_period     24x7
                 notification_options    w,c,r
                 contact_groups          nagiosadmin
                 }
                 }

    在服务端测试客户端命令为:/usr/local/nagios/libexec/check_nrpe -H 客户端IP -c check_oracle_tns(这个命令就是在客户端nrpe.cfg里定义的命令) -t 60 (超时的时间,不加的话默认是10秒)

  • 相关文章

    对接alertmanager创建钉钉卡片(1)
    手把手教你搭建OpenFalcon监控系统
    无需任何魔法即可使用 Ansible 的神奇变量“hostvars”
    openobseve HA本地单集群模式
    基于k8s上loggie/vector/openobserve日志收集
    openobseve单节点和查询语法

    发布评论