设为首页 收藏本站
查看: 718|回复: 0

nagios详细部署文档

[复制链接]

尚未签到

发表于 2019-1-16 11:15:02 | 显示全部楼层 |阅读模式
nagios详细部署文档

一、安装nagios软件
所需软件如下所示:
nagios-3.2.3.tar.gz
nagios-plugins-1.4.15.tar.gz
nrpe-2.8.tar.gz
httpd-2.2.17.tar.gz
php-5.3.6.tar.gz
1.1 安装nagios主程序
useradd nagios
mkdir /opt/nagios
chown nagios.nagios /opt/nagios

解压缩
tar -zxvf nagios-3.2.3.tar.gz
cd nagios-3.2.3
编译,指定安装目录为/opt/nagios
./configure --prefix=/opt/nagios
make all
make install
make install-init
make install-commandmode
make install-config


1.2 安装nagios插件
解压缩
tar -zxvf nagios-plugins-1.4.15.tar.gz
cd nagios-plugins-1.4.15
编译,指定路径为之前nagios的安装路径
./configure --prefix=/opt/nagios/
make
安装
make install
ls /opt/nagios/libexec/
会显示安装的插件文件,即所有的插件都安装在libexec这个目录下

1.3 安装apache
tar xzvf httpd-2.2.17.tar.gz
cd httpd-2.2.17
./configure –prefix=/opt/apache
make
make install

修改apache配置:
vim /opt/apache/conf/httpd.conf
将apache的运行用户设置为nagios
从httpd.conf中过滤出当前的apache运行用户
  grep ^User /usr/local/apache2/conf/httpd.conf
User nagios
Group nagios
将apache的主页设置为index.php

      DirectoryIndex index.php


增加nagios的目录,并且访问此目录需要进行身份验证
在配置文件最后增加如下内容:
#setting for nagios
ScriptAlias /nagios/cgi-bin /opt/nagios/sbin

        Options ExecCGI
        AllowOverride None
        Order allow,deny
        Allow from all
        AuthName "Nagios Access"
        AuthType Basic
AuthUserFile /opt/nagios/etc/htpasswd
//用于此目录访问身份验证的文件
        Require valid-user


Alias /nagios /opt/nagios/share

        Options None
        AllowOverride None
        Order allow,deny
        Allow from all
        AuthName "Nagios Access"
        AuthType Basic
AuthUserFile /opt/nagios/etc/htpasswd
//用于此目录访问身份验证的文件
        Require valid-user

修改完毕后重启apache
apachectl restart

增加验证用户
也就是通过web访问nagios的时候,必须要用这个用户登陆.在这里我们增加用户test:密码为123456
  /opt/apache/bin/htpasswd -mbc /opt/nagios/etc/htpasswd test 123456
查看认证文件的内容
less /opt/nagios/etc/htpasswd
test:OmWGEsBnoGpIc    前半部分是用户名test,后面是加密后的密码


1.4 安装php5并与apache整合
tar xzvf php-5.3.6.tar.gz
cd php-5.3.6
./configure –prefix=/opt/php --with-apxs2=/opt/apache/bin/apxs

安装问题:apxs:Error: Command failed with rc=65536
如出现上述问题请执行:cp /opt/apache/build/libtool /opt/tools/php-5.3.6/
该错误原因为php自带的libtool版本较低,make时有问题
make
make install

修改apache配置
LoadModule php5_module modules/libphp5.so \\这行在配置文件中如已存在,则不必添加
AddType application/x-httpd-php .php .php5      \\在配置文件最后添加
修改完毕后重启apache
apachectl restart

到这里nagios的安装也就基本完成了,你可以通过web来访问了.
  http://10.0.2.216/nagios 会弹出对话框要求输入用户名密码,输入test,密码12345,就可以进入nagios的主页面了。但是可以发现什么也点不开,因为nagios还没启动呢!下面的工作就是修改配置文件,增加要监控的主机和服务。

1.5 nagios典型配置
1.5.1 预备知识
Nagios自己定义了一套规则用于配置文件,其中最重要的概念就是”对象”----object.在Nagios里面定义了一些基本的对象,一般用到的有:
联系人
contact
出了问题像谁报告?一般当然是系统管理员了
监控时间段
timeperiod
7X24小时不间断还是周一至周五,或是自定义的其他时间段
被监控主机
host
所需要监控的服务器,当然可以是监控机自己
监控命令
command
nagios发出的哪个指令来执行某个监控,这也是自己定义的
被监控的服务
service
例如主机是否存活,80端口是否开,磁盘使用情况或者自定义的服务等
另外,多个被监控主机可以定义为一个主机组,多个联系人可以被定义为一个联系人组,多个服务还能定义成一个服务组
我们定义一个被监控的服务,当然就要指定被监控的主机,需要监控的时间段,要用哪个命令来完成这个监控操作,出了问题向哪个联系人报告
所有这些对象绝对多数都是需要我们手动定义的,这就是nagios的安装显得复杂的地方.其实了解了原理,做一遍之后余下的工作就是复制粘贴了.下面就开始动手.

1.5.2 修改nagios配置文件
n 修改nagios的主配置文件nagios.cfg
cd /opt/nagios/etc
vi nagios.cfg
注释行#cfg_file=/opt/nagios/etc/objects/localhost.cfg
然后把下面几行的配置文件加以修改:
  cfg_file=/usr/local/nagios/etc /objects   /contactgroups.cfg //联系组配置文件路径
cfg_file=/usr/local/nagios/etc /objects /contacts.cfg       //联系人配置文件路径
cfg_file=/usr/local/nagios/etc /objects /hostgroups.cfg     //主机组配置文件路径
cfg_file=/usr/local/nagios/etc /objects /hosts.cfg          //主机配置文件路径
cfg_file=/usr/local/nagios/etc /objects /services.cfg       //服务配置文件路径
cfg_file=/usr/local/nagios/etc /objects /timeperiods.cfg    //监视时段配置文件路径
注:有些文件不存在,手动创建即可
  将check_external_commands=0改为check_external_commands=1
\\这行的作用是允许在web界面下执行重启nagios、停止主机/服务检查等操作
将command_check_interval的值从默认的1改成command_check_interval=10s
\\根据自己的情况定这个命令检查时间间隔,不要太长也不要太短

n 修改CGI脚本控制文件cgi.cfg
第二个要修改的配置文件cgi.cfg,它的作用是控制相关cgi脚本。先确保use_authentication=1。曾看过不少的文章,都是建议把use_authentication的值设置成”0”来取消验证,这是一个十分糟糕的想法。接下来修改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
  那么上述用户名打那里来的呢?是执行命令 /opt/apache/bin/htpasswd -mbc /opt/nagios/etc/htpasswd test 所生成的,这个要注意,不能随便加没有存在的验证用户,为了安全起见,不要添加过多的验证用户。

n 定义监控时间段,创建配置文件timeperiods.cfg
vi 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
        }
定义了一个监控时间段,它的名称是24x7,监控的时间是每天全天24小时

n 定义联系人,创建配置文件contacts.cfg
vi contacts.cfg
define contact{
        contact_name                    test  //联系人的名称,这个地方不要有空格
        alias                           sys admin
        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                          yahoon@test.com
        pager                          1338757xxxx
        address1                       xxxxx.xyyy@icq.com
        address2                       555-555-5555
        }
创建了一个名为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                           yahoon@test.com
很明显,联系的人email地址
pager                           1338757xxxx
联系人的手机,如果支持短信的通知的话,这个就很有用了.
alias是联系人别名,address是地址 意义不大.
按照上面的方式简单的复制修改就可以创建多个联系人了.

n 下面就可以将多个联系人组成一个联系人组,创建文件contactgroups.cfg
vi contactgroups.cfg
define contactgroup{
            contactgroup_name                 sagroup   
//联系人组的名称,同样不能空格
            alias                   System   Administrators        //别名
            members                   test
//组的成员,来自于上面定义的contacts.cfg,如果有多个联系人则以逗号相隔
            }

n 定义被监控主机,创建文件hosts.cfg
[root@localhost etc]# vi hosts.cfg
define host{
            host_name                         nagios-server
//被监控主机的名称,最好别带空格
            alias                             nagios server
            //别名
            address                         10.0.2.216
            //被监控主机的IP地址,我现在暂时先填本机的IP
            check_command                   check-host-alive
            //监控的命令check-host-alive,这个命令来自commands.cfg,用来监控主机是否存活
            max_check_attempts                5
            //检查失败后重试的次数
            check_period                      24x7
            //检查的时间段24x7,同样来自于我们之前在timeperiods.cfg中定义的
contact_groups                  sagroup
            //联系人组,上面在contactgroups.cfg中定义的sagroup
notification_interval           10
            //提醒的间隔,每隔10秒提醒一次
notification_period             24x7
            //提醒的周期, 24x7,同样来自于我们之前在timeperiods.cfg中定义的
notification_options            d,u,r
//指定什么情况下提醒,具体含义见之前contacts.cfg部分的介绍
            }
通过简单的复制修改就可以定义多个主机了

n 与联系人可以组成联系人组一样,多个主机也可以组成主机组.创建文件hostgrops.cfg
vi hostgroups.cfg
define hostgroup{
            hostgroup_name            sa-servers //主机组名称
            alias                   sa   Servers //别名
            members                   nagios-server
//组的成员主机,多个主机以逗号相隔,必须是上面hosts.cfg中定义的
            }

下面是最关键的了,用nagios主要是监控一台主机的各种信息,包括本机资源,对外的服务等等.这些在nagios里面都是被定义为一个个的项目(nagios称之为服务,为了与主机提供的服务相区别,我这里用项目这个词),而实现每个监控项目,则需要通过commands.cfg文件中定义的命令.
例如我们现在有一个监控项目是监控一台机器的web服务是否正常, 我们需要哪些元素呢?最重要的有下面三点:首先是监控哪台机,然后是这个监控要用什么命令实现,最后就是出了问题的时候要通知哪个联系人?

n 定义监控的项目,也叫服务,创建services.cfg
vi services.cfg
  #service   definition
define service{
        host_name               nagios-server
        //被监控的主机,hosts.cfg中定义的
        service_description     check-host-alive
        //这个监控项目的描述(也可以说是这个项目的名称),可以空格,我们这里定义的是监控这个主机是不是存活
        check_command           check-host-alive
        //所用的命令,是commands.cfg中定义的
        max_check_attempts      5
        normal_check_interval   3
        retry_check_interval    2
        check_period            24x7
        //监控的时间段,是timeperiods.cfg中定义的
        notification_interval   10
        notification_period     24x7
          //通知的时间段,   ,是timeperiods.cfg中定义的
        notification_options    w,u,c,r
        //在监控的结果是wucr时通知联系人,具体含义看前文.
        contact_groups          sagroup
        //联系人组,是contactgroups.cfg中定义的
        }
可以看到基本上所有的成员都是已经定义的.同样的将上面的内容复制修改,就可以加上另外两个监控项目:分别监控yahoon和dbpi是否存活
这样整个的配置过程就结束了.虽然功能很简单,但是已经为以后扩展打下了良好的基础.可以放心的告诉大家,以后的工作基本都是复制粘贴啦!!!

n 在运行nagios之前首先做测试
/opt/nagios/bin/nagios -v /opt/nagios/etc/nagios.cfg
看到下面这些信息就说明没问题了
Total Warnings: 0
Total Errors:   0
  Things look okay - No serious problems   were detected during the pre-flight check
如果有问题的话就可以按照输出信息来排查,该输出信息非常详细,如果出错请仔细查看该信息

n 启动nagios
service nagios start

  n 登陆http://10.0.2.216 /nagios/就可以查看上面配置的监控内容了:
点左边的Hosts
file:///C:/DOCUME%7E1/ZHANGT%7E1/LOCALS%7E1/Temp/msohtmlclip1/01/clip_image004.jpg

再点Services
file:///C:/DOCUME%7E1/ZHANGT%7E1/LOCALS%7E1/Temp/msohtmlclip1/01/clip_image006.jpg

二、监控远程被控机:
  要实现资源和服务两个方面的监控,需要配置服务器端(nagios server)及被监控端(NRPE-nagios remote plugin executor).为了能顺利地、有条理的部署nagios 监控平台,一个好的工作风格是在nagios server 自身实现服务和资源的监控,然后再在其他监控端部署nrpe,从nagios server 端用check_nrpe 测试通过后,再在nagios server 配置文件中逐一增加监控项目。当然如果只是监控服务而不监控主机资源,则被监控端不做任何nrpe 的安装。为了方便初学者更容易上手和成功,我们就从简单的步骤开始。

2.1 在被监控机器安装nrpe
  1)增加用户
useradd nagios
passwd nagios
2)安装nagios 插件
tar zvxf nagios-plugins-1.4.15.tar.gz
cd nagios-plugins-1.4.15
./configure --prefix=/opt/nagios
make
make install
3)修改目录权限
chown -R nagios:nagios /opt/nagios
4)安装nrpe
tar zxvf nrpe-2.8.tar.gz
cd nrpe-2.8
./configure –prefix=/opt/nagios
make all
(1) 安装check_nrpe 这个插件
make install-plugin
(2) 安装deamon
make install-daemon
(3) 安装配置文件
make install-daemon-config
(4) 编辑nrpe配置文件
vim /opt/nagios/etc/nrpe.cfg(更改如下)
allowed_hosts=127.0.0.1,192.168.10.8
默认为allowed_hosts=127.0.0.1
5) 启动nrpe
/opt/nagios/bin/nrpe -c /opt/nagios/etc/nrpe.cfg -d
6) 查看NRPE 是否已经启动
netstat -nltp |grep nrpe
tcp 0 0 0.0.0.0:5666 0.0.0.0:*
LISTEN 5163/nrpe
7) 测试NRPE 是否则正常工作
之前安装了check_nrpe 这个插件用于测试,现在就是用的时候.执行
/opt/nagios/libexec/check_nrpe -H localhost
NRPE v2.8
看到已经正确返回了NRPE 的版本信息,说明一切正常

2.2 监控机监控被监控机
  之前已经将nagios 运行起来了,现在要做的事情是: 安装check_nrpe 插件
在commands.cfg 中创建check_nrpe 的命令定义,因为只有commands.cfg
中定义过的命令才能在services.cfg 中使用创建对被监控主机的监控项目
1)安装check_nrpe 插件
# tar -zxvf nrpe-2.8.1.tar.gz
# cd nrpe-2.8.1
# ./configure
# make all
# make install-plugin
只运行这一步就行了,因为只需要check_nrpe 插件
2)在apache 刚装好了nrpe,现在我们测试一下监控机使用
check_nrpe 与被监控机运行的nrpe daemon 之间的通信.
# /opt/nagios/libexec/check_nrpe -H 10.0.2.234
NRPE v2.8
看到已经正确返回了NRPE 的版本信息,说明一切正常.
3)在commands.cfg 中增加对check_nrpe 的定义
# vim /opt/nagios/etc/objects/commands.cfg
在最后面增加如下内容
####################################################################
# 'check_nrpe ' command definition
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
意义如下
command_name check_nrpe
定义命令名称为check_nrpe,在services.cfg 中要使用这个名称.
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
这是定义实际运行的插件程序.这个命令行的书写要完全按照check_nrpe 这个命令的用法.不知道用法的就用check_nrpe –h 查看-c 后面带的$ARG1$参数是传给nrpe daemon 执行的检测命令,之前说过了它必须是被监控机nrpe.cfg中所定义的那5 条命令中的其中一条.在services.cfg 中使用check_nrpe 的时候要用!带上这个参数
查看被控机NRPE的监控命令
cd /opt/nagios/etc
vi nrpe.cfg
找到下面这段话
  # The following examples use hardcoded   command arguments...
  command[check_users]=/opt/nagios/libexec/check_users   -w 5 -c 10
  command[check_load]=/opt/nagios/libexec/check_load   -w 15,10,5 -c 30,25,20
  command[check_hda1]=/opt/nagios/libexec/check_disk   -w 20 -c 10 -p /dev/hda1
  command[check_zombie_procs]=/opt/nagios/libexec/check_procs   -w 5 -c 10 -s Z
  command[check_total_procs]=/opt/nagios/libexec/check_procs   -w 150 -c 200
红色部分是命令名,也就是check_nrpe 的-c参数可以接的内容,等号=后面是实际执行的插件程序(这与commands.cfg中定义命令的形式十分相似,只不过是写在了一行).也就是说check_users就是等号后面/usr/local/nagios/libexec/check_users -w 5 -c 10的简称.
  ###########################################
举例:
下面就可以在services.cfg 中定义对apache 主机磁盘容量的监控
define service{
host_name apache
被监控的主机名,这里注意必须是linux 且运行着nrpe,而且必须是hosts.cfg 中定义的
service_description check-disk
监控项目的名称
check_command check_nrpe!check_disk
监控命令是check_nrpe,是在commands.cfg 中定义的,带的参数是check_disk,是
在nrpe.cfg 中定义的
max_check_attempts 5
normal_check_interval 3
retry_check_interval 2
check_period 24x7
notification_interval 10
notification_period 24x7
notification_options w,u,c,r
contact_groups sagroup
}
像这样将其余几个监控项目加进来.





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-663944-1-1.html 上篇帖子: nagios window客户端监控 下篇帖子: nagios v2.9 监控系统配置过程
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表