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

也谈"难够死"nagios

[复制链接]

尚未签到

发表于 2019-1-17 09:59:18 | 显示全部楼层 |阅读模式
  Nagios在对主机的监控方面的成就大家都是有目共睹的.但也正是因为它的强大,所以让很多人学起来头大,更有人戏称它为"难够死".其实让它运行起来一点都不麻烦,只要理清了头序,一切都简单了.不信,我们一起来看看.
    俗话说"巧妇难为无米之炊",所以开始设定前需要下载相关的软件.当然如果有必要的话相应的文档也是不可少的.软件的下载位置为http://www.nagios.org/download/;这里还用到了一个发送Email的小程序SendEmail(http://caspian.dotconf.net/menu/Software/SendEmail/).也许有人会说为什么不用系统的sendmail呢.这个是为了保持更好的独立性而且使用也简单;如果想要直观的显示数据,pnp这个组件也是少不了的(http://www.pnp4nagios.org/pnp/start);而对于windows的处理就要用到NSClient++(http://trac.nakednuns.org/nscp/)了.
    网上关于nagios的安装和设定文章比较多,一些文章都非常优秀,都可以做一些参考:http://yahoon.blog.运维网.com/13184/41300http://gzmaster.blog.运维网.com/299556/79944http://blog.chinaunix.net/u/28387/showart_371655.html



    如果上面这两幅效果图让你心动的话,那么一起加入吧.
    在开始之有有些基本的东西要搞清楚.在nagios管理中,所有的设定都放在相应的文件中.其中在配置文件夹中第一层的几个文件是非常重要的,少了它服务可以运行不起来.这些文件是nagios.cfg,cgi.cfg,resource.cfg.其中nagios.cfg是主要的设定文件,类似于指挥中心,所有的调度从这里开始,它来指挥nagios去相应的文件中查收其所需的数据;cgi.cfg则主要是用于处理web请求;resource.cfg则是主要用来定义会重复用到的变量,这里所定义的都是全局变量;而在objects文件夹下还有一个重要的文件command.cfg,所有的指令都从这里执行.而指定所用到的变量则是在resource.cfg中定义.
    给个例子你可能就容易理解了.假设公安局nagios.cfg要打掉一个近30个人的国际贩毒集团,并实时通报情况.那么通报情况由cgi.cfg处理;而resource.cfg中存放了各个毒贩的资料;支队代号host.cfg和支队人员service.cfg通过查看resource.cfg中各毒贩的资料采取不同的行动command.cfg来完成任务并按事情的轻重timeperidos.cfg上报contact.cfg,然后邮cgi.cfg通报出来.大约这样理解就差不多了.
安装过程如下:
adduser nagios
mkdir -pv /usr/local/nagios
chown nagios.nagios /usr/local/nagios
grep "^User" /etc/httpd/conf/httpd.conf
groupadd nagcmd
usermod -G nagios daemon
usermod -G nagcmd daemon
usermod -G nagcmd nagios
tar zxvf nagios-3.0.2.tar.gz
cd nagios-3.0.2
./configure --prefix=/usr/local/nagios --sysconfdir=/etc/nagios \
--with-httpd-conf=/etc/httpd.conf --with-gd-lib=/usr/local/gd/lib \
--with-gd-inc=/usr/local/gd/include/ --with-nagios-user=nagios \
--with-nagios-group=nagios --with-command-group=nagcmd
make all
make install
make install-config
make install-init
make install-webconf    这里的假定情况是你已安装了apache及GD库这些相关的组件,否则请先安装.安装方法可以参考:(http://waringid.blog.运维网.com/65148/58144).修改配置文件cgi.cfg,它的作用是控制相关cgi脚本。先确保use_authentication=1。曾看过不少的文章,都是建议把use_authentication的值设置成"0"来取消验证,这是一个十分糟糕的想法。接下来修改default_user_name=nagios,再后面的修改在下表列出:  
authorized_for_system_information=nagiosadmin,nagios
authorized_for_configuration_information=nagiosadmin,nagios
authorized_for_system_commands=nagios  //多个用户之间用逗号隔开
authorized_for_all_services=nagiosadmin,nagios
authorized_for_all_hosts=nagiosadmin,nagios
authorized_for_all_service_commands=nagiosadmin,nagios
authorized_for_all_host_commands=nagiosadmin,nagios
  下面指令的设定则是针对apache服务器的.用来生成相应的认证文件.
/usr/local/httpd/bin/htpasswd -c /etc/nagios/htpasswd.users nagios
cp -R /tmp/nagios-3.0.2/sample-config/ /etc/nagios/sample
chmod g+s /usr/local/nagios/var/rw  这里需要对http.conf做设定
ScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin"         
         
# SSLRequireSSL         
Options ExecCGI         
AllowOverride None         
Order allow,deny         
Allow from all         
# Order deny,allow         
# Deny from all         
# Allow from 127.0.0.1         
AuthName "Nagios Access"         
AuthType Basic         
AuthUserFile /etc/nagios/htpasswd.users         
Require valid-user         

Alias /nagios "/usr/local/nagios/share"         
         
# SSLRequireSSL         
Options None         
AllowOverride None         
Order allow,deny         
Allow from all         
# Order deny,allow         
# Deny from all         
# Allow from 127.0.0.1         
AuthName "Nagios Access"         
AuthType Basic         
AuthUserFile /etc/nagios/htpasswd.users         
Require valid-user         
安装相应的组件:
    编辑/etc/services文件,增加NRPE服务,增加nrpe            5666/tcp                        # nrpe.
tar zxvf nrpe-2.12.tar.gz
cd nrpe-2.12
./configure
make
make install
make all
make install-plugin
tar zxvf nagios-plugins-1.4.12.tar.gz
cd nagios-plugins-1.4.12
./configure
make
make install图形显示组件的安装:
    图形显示组件需要rrdtool及perl的支持,所以必须先安装它们.有关安装rrdtool可以参考[url]http://waringid.blog.运维网.com/65148/58580[/url].
tar zxvf pnp-0.4.10.tar.gz
./configure --with-nagios-user=nagios \
--with-nagios-group-nagios \
--with-rrdtool=/usr/local/rrdtool/bin/rrdtool \
--with-perfdata-dir=/usr/local/nagios/share/perfdata
make
make all
make install
make install-config
make install-init
    这些安装好后,需要进行相关的设定,这里就不详细介绍各参数,只捡重要的说;可以参考/etc/nagios/objects/localhost.cfg文件.host.cfg用来定义主机名及对应的IP;主机组则是将定义的主机名加入这个组.类似于下面:
define host{                #定义主机名
use                     remote-server         
host_name               re.ftp         
alias                   ftp server         
address                 192.168.42.7         
}         
define host{         
use                     remote-server         
host_name               re.edc            #用下面的语句可显示太阳图标
action_url              /nagios/cgi-bin/extinfo.cgi?host=$HOSTNAME$         
process_perf_data       1         
alias                   dc         
address                 192.168.42.6         
}         
define hostgroup{          #定义主机组
hostgroup_name  windows-servers         
alias           Windows Servers         
members         re.win.client         
}
define hostgroup{         
hostgroup_name          remote-server         
alias                   remote-server         
members                 re.edc,re.dc,re.exchange,re.sus,re.back,re.file,         
re.phone,re.hr,re.uf,re.oa,re.qy,re.prod,re.ftp         
}


     服务则是用来处理相应的监控请求,和主机文件一样,有相应的服务和服务组.如下所示:
define service{         
use                             remote-service         
host_name                       re.edc,re.dc,re.exchange,re.sus,re.back,re.file,re.phone,         
              re.hr,re.uf,re.oa,re.qy,re.prod,re.ftp         
service_description             PING                #显示服务的太阳符号
action_url            /nagios/cgi-bin/extinfo.cgi?host=$HOSTNAME$&srv=$SERVICEDESC$         
process_perf_data               1                         #产生图形数据         
check_command                   check_ping!100.0,20%!500.0,60%         
notifications_enabled           1          #提示联系人         
}         
define service{         
use                     generic-service         
host_name               re.win.client         
service_description     Explorer         
check_command           check_nt!PROCSTATE!-d SHOWALL -l Explorer.exe         
}
define servicegroup{         
servicegroup_name               remote-service         
alias                           Check Remote Servers         
members                         re.ftp,FTP         
}
define servicegroup{         
servicegroup_name               windows-service         
alias                           Check Windows servers         
members                         re.win.client,Explorer         
}

    commands.cfg是处理监控动作的命令文件,这里需要对发送邮件和产生图形的方式重新定义下,因为需要用到新的命令来执行
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"         
| /usr/local/nagios/bin/sendEmail -f root@test.com -t $CONTACTEMAIL$         
-s mail.test.com -u  "** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is         
$HOSTSTATE$ **" -xu root -xp password         
}
# 'notify-service-by-email' command definition         
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$"         
| /usr/local/nagios/bin/sendEmail -f root@test.com -t $CONTACTEMAIL$         
-s mail.test.com -u "** $NOTIFICATIONTYPE$ Service Alert:         
$HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" -xu root -xp password         
}  安装方法如下,使用方法为:
  -f 表示发送者的邮箱  
  -t 表示接收者的邮箱  
  -s 表示SMTP服务器的域名或者ip  
  -u 表示邮件的主题  
  -xu 表示SMTP验证的用户名  
  -xp 表示SMTP验证的密码(注意,这个密码貌似有限制,例如我用d!5neyland就不能被正确识别)  
  -m 表示邮件的内容

tar -zxvf sendEmail-v1.55.tar.gz
cd sendEmail-v1.55
cp sendEmail    /usr/local/nagios/bin

    要产生图形数据还需在commands.cfg中重定义命令:
define command{
command_name    process-service-perfdata
command_line    /usr/local/nagios/libexec/process_perfdata.pl
}   产生图形数据还要设定nagios.cfg文件:
process_performance_data=1
service_perfdata_command=process-service-perfdata  #默认此句被注释掉了    设定好这些后可以输入service nagios start来启动服务.
    监控windows相关应用只需安装NSClient++就行了,编辑C:\NSClient++下的NSC.ini文件,将 [modules]部分的所有模块前面的注释都去掉,除了CheckWMI.dll and  RemoteConfiguration.dll这两个在[Settings]部分设置'password'选项来设置密码,作用是在nagios连接过来时要求提供密码.这一步是可选的,我这里方便起见跳过它,不要密码.将[Settings]部分'allowed_hosts'选项的注释去掉,并且加上运行nagios的监控主机的IP.我改为如下这样allowed_hosts=127.0.0.1/32,192.168.44.77,192.168.44.200  以逗号相隔.这个地方是支持子网的,如果写成192.168.0.0/24则表示该子网内的所有机器都可以访问.如果这个地方是空白则表示所有的主机都可以连接上来.注意是[Settings]部分的,因为[NSClient]部分也有这个选项.必须保证[NSClient]的'port'选项并没有被注释,并且它的值是'12489',这是NSClient的默认监听端口,我这里把它改为20000。



    nagios的管理远远还没有完,而且很多方面的设定这里都没有详细的解说.所以这里的记录只是领进linux管理的大门.门内的风景还是要自己去发觉.毕竟各人的感觉不同啊. 附件是相关的设定文件。



附件:http://down.运维网.com/data/2350209


运维网声明 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-664270-1-1.html 上篇帖子: nagios 安全设置、插件编写 下篇帖子: ubuntu7.10 server nagios3.03
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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