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

Nagios部署文档

[复制链接]

尚未签到

发表于 2019-1-15 13:53:25 | 显示全部楼层 |阅读模式
一、Nagios简介
What's the Nagios?
Nagios是一款用于系统和网络监控的应用程序。它可以在你设定的条件下对主机和服务进行监控,在状态变差和变好的时候给出告警信息。
Nagios最初被设计为在Linux系统之上运行,然而它同样可以在类Unix的系统之上运行。
官方网站:http://www.nagios.org
中文帮助文档:http://nagios-cn.sourceforge.net/nagios-cn/index.html
二、服务器端安装
1、安装环境需求;
Apache
PHP
GCC compiler
GD development libraries
需要root权限,以上环境可以及编译安装,也可以yum安装。具体可参考文章《构建LAMP环境》。
2、建立Nagios用户和组
#useradd nagios
#groupadd nagcmd
#usermod -a -G nagcmd nagios
#usermod -a -G nagcmd apache
3、软件下载及安装
因版本经常更新,在此只列出版本,请自行去Nagios官网下载最新稳定版本。
nagios-3.3.1.tar.gz
nagios-plugins-1.4.15.tar.gz
nrpe-2.8.1.tar.gz
安装Nagios
一般将所有源码文件放置在/usr/local/src,下面所有源码操作默认目录为此目录。
#tar zxvf nagios-3.3.1.tar.gz
#cd nagios
#./configure --prefix=/usr/local/nagios --with-command-group=nagcmd
#make all
#make install
#make install-init
#make install-config
#make install-commandmode
配置WEB接口
#++++++如果是yum安装的apache,直接执行make install-webconf。如果是编译安装的apache,则将sample-config/httpd.conf拷贝到apache的配置文件目录,或者参考该文件内容自行配置。本次配置方法为以下配置:
#cp sample-config/httpd.conf /usr/local/apache/conf/extra/nagios.conf
并且编辑apache配置文件httpd.conf添加如下语句:
Include conf/extra/nagios.conf
创建一个nagiosadmin的用户用于Nagios的WEB接口登录。
#/usr/local/apache/bin/htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
以上配置完成后重启apache是配置生效
#/usr/local/apache/bin/apachectl restart
去浏览器访问http://$IP/nagios测试WEB借口配置是否成功,如不能正常访问,请检查以上配置。

编译并安装Nagios插件
#tar zxvf nagios-plugins-1.4.15.tar.gz
#cd nagios-plugins
#./configure --with-nagios-user=nagios --with-nagios-group=nagios
#make && make install

启动Nagios
首先将Nagios加入到服务列表,以便在系统启动时自动启动
#chkconfig --add nagios
#chkconfig nagios on
验证nagios配置样例文件
#/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
如果没有报错,可以启动Nagios服务
#service nagios start
此时,Nagios安装基本完毕。登录WEB借口测试安装结果。如果出现“http 500”内部服务器错误,请检查SELinux是否关闭,以及相关apache配置。

三、Nagios配置
1、Nagios默认配置文件介绍
Nagios安装完毕后,默认的配置文件在/usr/local/nagios/etc目录下,每个文件或目录含义如下所示:
文件名用途
cgi.cfg控制cgi访问的配置文件
htpasswd.user由htpasswd生成的访问控制文件
nagios.cfgNagios主配置文件
resource.cfg变量配置文件,或者叫资源文件,通过在此文件中定义的变量,以便让其他配置文件引用,如$USER1$
objects/objects是一个目录,在此目录下有很多配置文件模板。用于定义Nagios对象
objects/commands.cfg命令定义配置文件,里面定义的命令可以被其他配置文件引用
objects/contacts.cfg定义联系人和联系人组的配置文件
objects/localhost.cfg定义监控本地主机的配置文件
objects/printer.cfg定义监控打印机的一个配置文件模板,默认没有启用此文件
objects/switch.cfg定义监控路由器的一个配置文件模板,默认没有启用此文件
objects/templates.cfg定义主机、服务的一个模板配置文件,可以在其他配置文件中引用
objects/timeperiods.cfg定义Nagios监控时间段的配置文件
objects/windows.cfg监控Windows主机的一个配置文件,默认没有启用此文件
2、Nagios配置文件之间的关系
在nagios的配置过程中涉及到的几个定义有:主机、主机组,服务、服务组,联系人、联系人组,监控时间,监控命令等,从这些定义可以看出,nagios各个配置文件之间是互为关联,彼此引用的。
成功配置出一台nagios监控系统,必须要弄清楚每个配置文件之间依赖与被依赖的关系,最重要的有四点:
第一:定义监控哪些主机、主机组、服务和服务组
第二:定义这个监控要用什么命令实现,
第三:定义监控的时间段,
第四:定义主机或服务出现问题时要通知的联系人和联系人组。
3、开始配置Nagios
为了维护方便,我们将Nagios各个定义对象创建独立的配置文件,文件列表及说明如下:
/internal-servers/host.cfg定义主机和主机组
/internal-servers/services.cfg定义服务
/objects/contacts.cfg使用默认的联系人和联系人祖定义文件
/objects/commands.cfg使用默认的命令定义文件
/objects/timeperiods.cfg使用默认的时间段定义文件
/objects/templates.cfg使用默认的资源引用文件
在配置之前,先理清一个思路。根据上文所列出的“Nagios配置文件之间的关系”可以有一个基本的思想,
首先,要确定我们要进行监控的主机、服务等;
其次,是怎么去监控,用什么命令去监控,这个就是在commands.cfg文件中定义了,当然默认的配置文件中基本的命令都有了;
再次,监控的服务或者主机需要在什么时间去监控?7x24的监控?这个是在timeperiods.cfg文件中定义的;
最后,当被监控的服务或状态发生变化的时候需要通知谁?这个可以再contacts.cfg文件中来指定。
有了以上思路,我们就可以开始配置了,本文档以监控一台CentOS主机的常规状态和Web服务为例;
1)templates.cfg文件详情
以下主要列出 generic-contact、generic-host、linux-server、generic-service的参数情况,其他暂不做讨论。
define contact{
        name                            generic-contact ; 定义联系人模板名称
        service_notification_period     24x7; 当服务出现异常时,发送通知的时间段,这个时间段“7x24"在timeperiods.cfg文件中定义
        host_notification_period        24x7; 当主机出现异常时,发送通知的时间段,这个时间段“7x24"在timeperiods.cfg文件中定义
        service_notification_options    w,u,c,r,f,s; 这个定义的是“通知可以被发出的情况”w即warn,表示警告状态,u即unknown,表示不明状态,c即criticle,表示紧急状态,r即recover,表示恢复状态
        host_notification_options       d,u,r,f,s; 定义主机在什么状态下需要发送通知给使用者,d即down,表示宕机状态,u即unreachable,表示不可到达状态,r即recovery,表示重新恢复状态。
        service_notification_commands   notify-service-by-email; 服务故障时,发送通知的方式,可以是邮件和短信,这里发送的方式是邮件,其中“notify-service-by-email”在commands.cfg文件中定义
        host_notification_commands      notify-host-by-email; 主机故障时,发送通知的方式,可以是邮件和短信,这里发送的方式是邮件,其中“notify-host-by-email”在commands.cfg文件中定义
        register                        0       ; 不注册,这里是在定义一个模板
        }
define host{
        name                            generic-host; 主机模板名称
        notifications_enabled           1       ; 开启通知
        event_handler_enabled           1       ; 事件处理开启
        flap_detection_enabled          1       ; 摆动检测开启
        failure_prediction_enabled      1       ; Failure prediction is enabled
        process_perf_data               1       ; 是否启用进程性能数据记录、Nagios的数据输出功能
        retain_status_information       1       ; 重启时保留状态信息
        retain_nonstatus_information    1       ; Retain non-status information across program restarts
notification_period24x7; 异常时通知时间段
        register                        0       ; 不注册
        }
define host{
namelinux-server; 主机模板名称
usegeneric-host; 引用templates.cfg文件中定义的generic-host
check_period24x7; 告诉nagios检查主机的时间段
check_interval5; 检测主机时间间隔
retry_interval1; 主机检查重试间隔1分钟
max_check_attempts10; 主机异常到发送警报的时间,10个时间单位
check_command       check-host-alive ; 默认的检测linux主机命令
notification_periodworkhours; 主机故障时,发送通知的时间范围,其中“workhours”在timeperiods.cfg中进行了定义
notification_interval120; 在主机出现异常后,故障一直没有解决,nagios再次对使用者发出通知的时间。单位是分钟。如果你觉得,所有的事件只需要一次通知就够了,可以把这里的选项设为0
notification_optionsd,u,r; 定义主机在什么状态下可以发送通知给使用者,d即down,表示宕机状态,u即unreachable,表示不可到达状态,r即recovery,表示重新恢复状态。
contact_groupsadmins; 指定联系人组,这个“admins”在contacts.cfg文件中定义
register0; 不注册
}
define service{
        name                            generic-service ; 服务模板名称
        active_checks_enabled           1       ; 开启主动服务检查
        passive_checks_enabled          1       ; 被动服务检查
        parallelize_check               1       ; Active service checks should be parallelized (disabling this can lead to major performance problems)
        obsess_over_service             1       ; We should obsess over this service (if necessary)
        check_freshness                 0       ; 默认服务状态为未检查
        notifications_enabled           1
        event_handler_enabled           1
        flap_detection_enabled          1
        failure_prediction_enabled      1
        process_perf_data               1
        retain_status_information       1
        retain_nonstatus_information    1
        is_volatile                     0       ; The service is not volatile
        check_period                    24x7
        max_check_attempts              3
        normal_check_interval           10; 硬态重新检测的时间间隔,默认为3个时间单位
        retry_check_interval            2; 每隔两分钟重新检测服务直到可以确定为硬状态
        contact_groups                  admins
notification_optionsw,u,c,r
notification_interval120; 在主机出现异常后,故障一直没有解决,nagios再次对使用者发出通知的时间
notification_period24x7; 在主机出现异常后,Nagios通知联系人的时间段
        register                        0
        }
其他几个模板基本类似,在此不做过多解释。
2)创建host.cfg文件

#192.168.1.100#注释
define host {
use             linux-server#use表示引用,也就是将主机linux-server的所有属性引用到本host定义中来,在nagios配置中,很多情况下会用到引用。
host_name       server_name#定义主机名称,可以根据被监控主机的情况进行命名
alias           server_alias#主机别名
address         192.168.1.100#主机IP地址
}

define hostgroup {
hostgroup_name  MyServer#定义主机组名称
alias           My_Server#定义主机组别名
members         server_name#成员列表
}

3)修改contacts.cfg文件

define contact{
contact_name    nagiosadmin#Short name of user
use             generic-contact#引用templates.cfg文件中generic-contact对象定义
alias           Nagios Admin#Full name of user
email           ****@139.com#报警需要通知的邮件地址,本例为使用139邮箱转发邮件到手机的报警方式
        }
define contactgroup{
contactgroup_nameadmins#联系人组名称
alias                   Nagios Administrators#别名
members                 nagiosadmin#成员
        }

4)创建services.cfg文件

define service {
use                     generic-service#引用templates.cfg文件中generic-service服务对象定义
hostgroup_name          MyServer#指定对主机组MyServer进行该服务监控
service_description     Disk Partition#服务名称
check_command           check_nrpe!check_disk#监控命令,这里使用的是nrpe方式监控磁盘使用状况,稍后讨论nrpe的使用和配置
}
其他服务监控类似,不一一详解了。
5)检测配置并启动Nagios
Nagios可以检查配置文件的正确性,使用以下命令;
#/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
如果有错误,我们可以通过错误提示很快定位错误配置位置进行修改;
没有错误后,就可以启动nagios了!
#service nagios start
还有reload restart stop 操作。
6)Nagios发送邮件报警配置
Nagios发送报警有比较多的方式,如飞信、MSN、短信猫和139邮箱等。本文使用139邮箱方式,因为139邮箱的短信通知可以方便的实现手机通知。
配置主机hosts文件,在127.0.0.1后添加nagios-test.com;nagios-test.com可以自己定义
配置/etc/sysconfig/network文件,将hostname更改为nagios-test.com,可以自己定义,但是这两处必须保持一致,然后重启network服务使配置生效。
使用以下命令测试是否可以发送邮件;
#printf “This is a test mail” | mail -s “My test mail” 15800000000@139.com
在这个过程中,如果没有收到邮件,可以去查看/var/log/maillog,是否发送邮件,以及是否拒绝接收,决绝原因等。
如果以上方式可以发送邮件之后,Nagios默认配置及可以发送邮件报警。转发到手机的配置请在139邮箱里进行设置。

四、客户端安装及配置
1)下载并安装NRPE
NRPE是Nagios的客户端,NRPE的设计初衷是允许我们在远程Linux/Unix上执行Nagios-plugins。这样做的主要原因是为了让Nagios监控远程Linux/Unix主机就像监控“本地主机”资源。更详尽的情况可参考:http://nagios.sourceforge.net/docs/nrpe/NRPE.pdf
在Nagios官网可以下载到最新稳定版NRPE,本文档使用的版本为nrpe-2.8.1.tar.gz。
添加nagios用户
#useradd nagios
安装nagios-plugins
#tar zxvf nagios-plugins-1.4.15.tar.gz
#cd nagios-pulgins-1.4.15
#./configure
#make && make install
安装NRPE
#tar zxvf nrpe-2.8.1.tar.gz
#cd nrpe-2.8.1
#./configure
#make all
#make install-plugin
#make install-daemon
#make install-daemon-config
以上没有错误的话,NRPE就安装完成了。
2)NRPE配置
NRPE只有一个配置文件
#/usr/local/nagios/etc/nrpe.cfg
一般配置文件只需要更改允许的IP就可以使用了。编辑nrpe.cfg;
修改allowed_hosts=127.0.0.1为我们的Nagios_Server_IP即可。
3)启动NRPE
#/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
将这条命令添加到/etc/rc.local文件,在系统启动时启动。
#echo ‘/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d’ >> /etc/rc.local
4)检测NRPE启动情况
#netstat -ap | grep nrpe
正常的话应该显示
tcp        0      0 *:5666                      *:*                         LISTEN      2561/nrpe
监听端口5666,nrpe启动正常。如果没有以上结果,请检查你的iptables配置。
5)检查NRPE是否允许服务端访问
在Nagios服务端执行
#/usr/local/nagios/libexec/check_nrpe -H nrpe_host_IP
如果返回NRPE的版本信息,证明nrpe客户端安装成功。
五、关于Nagios与NRPE的关系的一些经验
Nagios在使用NRPE进行监控时,是Nagios服务端主动去被监控端检测,服务端使用的是check_nrpe -H nrpe_host_ip -c command进行的请求,在被监控端,NRPE收到后会在nrpe配置文件nrpe.cfg中查找定义的command,如果找不到,会告诉服务端没有定义该命令。找到该命令后,会按照nrpe.cfg定义的命令所指向的本地命令去检测本机相关状态,检测完成后将检测结果返回给Nagios服务端。



参考资料:
http://nagios-cn.sourceforge.net/nagios-cn/index.html
http://nagios.sourceforge.net/docs/nrpe/NRPE.pdf
http://www.nagios.org/documentation





运维网声明 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-663653-1-1.html 上篇帖子: nagios配置出错记录 下篇帖子: Nagios部署文档
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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