CentOS6.6+Puppet3.7.4分布式部署Nagios监控系统

CentOS6.6+Puppet3.7.4分布式部署Nagios监控系统,第1张

CentOS6.6+Puppet3.7.4分布式部署Nagios监控系统

试验格式

CentOS-6.6-x86_64(minimal) puppet-3.7.4 nagios-4.0.8.tar.gz nagios-plugins-2.0.3.tar.gz nrpe-2.15.tar.gz 192.168.188.10mirrors.redking.com 192.168.188.20master.redking.com 192.168.188.20nagios.redking.com 192.168.188.31agent1.redking.com 192.168.188.32agent2.redking.com 192.168.188.33agent3.redking.com

Puppet要求所有机器都有一个完整的域名(FQDN)。如果没有DNS服务器提供域名,可以在两台机器上设置主机名(注意,安装Puppet前要先设置主机名,因为安装Puppet时主机名会被写入证书,客户端和服务器通信需要用到)。因为我配置了DNS,所以不需要换主机。否则,您需要更改主机文件的名称。

1。关闭selinux、iptables,并将ntp
设置为采用CentOS-6.6-x86_64.iso进行最小安装

关闭selinux

[root@master~]#cat/etc/selinux/config #ThisfilecontrolsthestateofSELinuxonthesystem. #SELINUX=cantakeoneofthesethreevalues: #enforcing-SELinuxsecuritypolicyisenforced. #permissive-SELinuxprintswarningsinsteadofenforcing. #disabled-NoSELinuxpolicyisloaded. SELINUX=enforcing #SELINUXTYPE=cantakeoneofthesetwovalues: #targeted-Targetedprocessesareprotected, #mls-MultiLevelSecurityprotection. SELINUXTYPE=targeted [root@master~]#sed-i'/SELINUX/s/enforcing/disabled/g'/etc/selinux/config [root@master~]#cat/etc/selinux/config #ThisfilecontrolsthestateofSELinuxonthesystem. #SELINUX=cantakeoneofthesethreevalues: #enforcing-SELinuxsecuritypolicyisenforced. #permissive-SELinuxprintswarningsinsteadofenforcing. #disabled-NoSELinuxpolicyisloaded. SELINUX=disabled #SELINUXTYPE=cantakeoneofthesetwovalues: #targeted-Targetedprocessesareprotected, #mls-MultiLevelSecurityprotection. SELINUXTYPE=targeted [root@master~]#setenforce0

停止iptables

[root@node1~]#chkconfig--list|greptables ip6tables0:off1:off2:on3:on4:on5:on6:off iptables0:off1:off2:on3:on4:on5:on6:off [root@node1~]#chkconfigip6tablesoff [root@node1~]#chkconfigiptablesoff [root@node1~]#serviceip6tablesstop ip6tables:SettingchainstopolicyACCEPT:filter[OK] ip6tables:Flushingfirewallrules:[OK] ip6tables:Unloadingmodules:[OK] [root@node1~]#serviceiptablesstop iptables:SettingchainstopolicyACCEPT:filter[OK] iptables:Flushingfirewallrules:[OK] iptables:Unloadingmodules:[OK] [root@node1~]#

设置ntp

[root@master~]#ntpdatepool.ntp.org [root@master~]#chkconfig--list|grepntp ntpd0:off1:off2:off3:off4:off5:off6:off ntpdate0:off1:off2:off3:off4:off5:off6:off [root@master~]#chkconfigntpdon [root@master~]#servicentpdstart Startingntpd:[OK] [root@master~]#

2.安装puppet服务
puppet不在CentOS的基本源中,需要加入PuppetLabs提供的官方源:

[root@master~]#wgethttp://yum.puppetlabs.com/el/6/products/x86_64/puppetlabs-release-6-7.noarch.rpm [root@master~]#rpm-ivhpuppetlabs-release-6-7.noarch.rpm [root@master~]#yumupdate-y

在master上安装和启用puppet服务: [root@master~]#yuminstall-ypuppet-server [root@master~]#chkconfigpuppeton [root@master~]#chkconfigpuppetmasteron [root@master~]#servicepuppetstart Startingpuppetagent:[OK] [root@master~]#servicepuppetmasterstart Startingpuppetmaster:[OK] [root@master~]#

在clients上安装puppet客户端 [root@agent1~]#yuminstall-ypuppet [root@agent1~]#chkconfigpuppeton [root@agent1~]#servicepuppetstart

3.配置puppet

对于puppet客户机,修改/etc/puppet/puppet.conf以指定主服务器

并重新启动傀儡服务。

[root@agent1~]#servicepuppetrestart

4.客户端申请证书
服务器自动颁发证书设置
设置主机自动颁发所有证书。我们只需要在/etc/puppet目录中创建autosign.conf文件。(不需要修改/etc/puppet/puppet.conf文件,因为我的默认autosign.conf文件的位置没有被修改)

[root@master~]#cat>/etc/puppet/autosign.conf<<EOF >*.redking.com >EOF [root@master~]#servicepuppetmasterrestart Stoppingpuppetmaster:[OK] Startingpuppetmaster:[OK] [root@master~]#

这样就会对所有来自fisteam2.com的机器的请求,都自动签名。
client需要向服务器端发出请求,让服务器对客户端进行管理.这其实是一个证书签发的过程.第一次运行puppet客户端的时候会生成一个SSL证书并指定发给Puppet服务端,服务器端如果同意管理客户端,就会对这个证书进行签发,可以用这个命令来签发证书,由于我们已经在客户端设置了server地址,因此不需要跟服务端地址 [root@agent1~]#puppetagent--test

你可以申请证书。因为我配置了自动证书颁发,所以是直接在服务器端颁发和执行的。

[root@master~]#puppetcertlist--all

Nagios服务器安装

1.安装Nagios相关的依赖包

[root@master~]#yuminstall-yhttpdphpgccglibcglibc-commongdgd-developenssl-devel

2.创建Nagios用户和组

[root@master~]#useradd-mnagios [root@master~]#passwdnagios

创建nagcmd用户组以执行来自Web接口命令,并添加nagios和apache用户到此用户组 [root@master~]#groupaddnagcmd [root@master~]#usermod-a-Gnagcmdnagios [root@master~]#usermod-a-Gnagcmdapache

3.下载Nagios和插件软件包

在http://www.nagios.org/download/下载Nagios核心和Nagios插件

4.编译并安装Nagios

[root@mastertmp]#tarzxfnagios-4.0.8.tar.gz [root@mastertmp]#cdnagios-4.0.8

#运行Nagios配置脚本,并将nagcmd更改为之前创建的组。

[[email protected]]#./configure--with-command-group=nagcmd

#编译Nagios源代码

[[email protected]]#makeall

#安装二进制文件、初始化脚本文件和示例配置文件,并设置外部命令目录的权限。

[[email protected]]#makeinstall [[email protected]]#makeinstall-init [[email protected]]#makeinstall-config [[email protected]]#makeinstall-commandmode

5.修改配置文件

样式文件位于/usr/local/nagios/etc目录下,邮件地址可以更改。

[[email protected]]#vim/usr/local/nagios/etc/objects/contacts.cfg

6.配置Web界面

在Apache的conf.d目录中安装NagiosWeb配置文件

[[email protected]]#makeinstall-webconf

创建nagiosadmin帐户以登录NagiosWeb界面

[[email protected]]#htpasswd-c/usr/local/nagios/etc/htpasswd.usersnagiosadmin [[email protected]]#servicehttpdstart Startinghttpd:[OK] [[email protected]]#chkconfighttpdon

开启httpd服务,使配置生效,设置启动自启动。

7.编译并安装Nagios插件

[root@mastertmp]#tarzxvfnagios-plugins-2.0.3.tar.gz [root@mastertmp]#cdnagios-plugins-2.0.3 [[email protected]]#./configure--with-nagios-user=nagios--with-nagios-group=nagios [[email protected]]#make&&makeinstall

8.编译并安装Nrpe

[root@mastertmp]#tarzxvfnrpe-2.15.tar.gz [[email protected]]#./configure [[email protected]]#makeall [[email protected]]#makeinstall-plugin [[email protected]]#makeinstall-daemon [[email protected]]#makeinstall-daemon-config

9.启动Nagios

监视本机HTTPSSH显示警告错误的通知,解决方案

[root@master~]#vim/usr/local/nagios/etc/objects/localhost.cfg #DefineaservicetocheckSSHonthelocalmachine. #Disablenotificationsforthisservicebydefault,asnotallusersmayhaveSSHenabled. defineservice{ uselocal-service;Nameofservicetemplatetouse host_namelocalhost service_descriptionSSH check_commandcheck_ssh notifications_enabled1#改为1,即可 } #DefineaservicetocheckHTTPonthelocalmachine. #Disablenotificationsforthisservicebydefault,asnotallusersmayhaveHTTPenabled. defineservice{ uselocal-service;Nameofservicetemplatetouse host_namelocalhost service_descriptionHTTP check_commandcheck_http notifications_enabled1#改为1,即可 } [root@master~]#touch/var/www/html/index.html

在启动Nagios之前测试配置文件

[root@master~]#/usr/local/nagios/bin/nagios-v/usr/local/nagios/etc/nagios.cfg

启动Nagios、nrpe并设置自启动。

[root@master~]#chkconfignagios--add [root@master~]#chkconfig--list|grepnagios nagios0:off1:off2:off3:on4:on5:on6:off [root@master~]#chkconfignagioson [root@master~]#servicenagiosstart Startingnagios:done. [root@master~]#echo"/usr/local/nagios/bin/nrpe-c/usr/local/nagios/etc/nrpe.cfg-d">>/etc/rc.d/rc.local [[email protected]]#/usr/local/nagios/bin/nrpe-c/usr/local/nagios/etc/nrpe.cfg-d [[email protected]]#netstat-tunpl|grepnrpe tcp000.0.0.0:56660.0.0.0:*LISTEN70100/nrpe tcp00:::5666:::*LISTEN70100/nrpe [[email protected]]#

执行/usr/local/Nagios/libexec/check_nrpe-h127.0.0.1检查连接是否正常。

在http://192.168.188.20/nagios/使用之前定义的nagiosadmin帐户和密码登录Nagios

创建Nagios客户端监控

1.傀儡师安装相应的模块。

Nagios目前没有官方提供的软件源码,可以在批量部署中使用第三方epel源码,采用Example42提供的puppet-nrpe实现Linux服务器的批量部署。部署客户端使用三个官方模块:epel、nrpe和puppi。

Epel模块用于安装nrpe软件,nrpe模块用于收集主机信息。puppi是Example42模块的一个组件,使用Example42模块时需要加载。

Puppi是一个Puppet模块和CLI命令,它可以标准化和自动化应用程序的快速部署,并提供快速和标准的查询命令来检查系统资源。

[root@master~]#gitclonehttps://github.com/puppetlabs/puppetlabs-stdlib/etc/puppet/modules/stdlib [root@master~]#gitclonehttps://github.com/example42/puppi/etc/puppet/modules/puppi [root@master~]#gitclonehttps://github.com/example42/puppet-nrpe/etc/puppet/modules/nrpe [root@master~]#puppetmoduleinstallstahnma/epel [root@master~]#vim/etc/puppet/puppet.conf [master] modulepath=/etc/puppet/modules/

2.创建代理节点组配置文件。

[root@master~]#mkdir/etc/puppet/manifests/nodes [root@master~]#vim/etc/puppet/manifests/nodes/agentgroup.pp node/^agent\d+\.redking\.com$/{ includestdlib includeepel class{'puppi':} class{'nrpe': require=>Class['epel'], allowed_hosts=>['127.0.0.1',$::ipaddress,'192.168.188.20'], template=>'nrpe/nrpe.cfg.erb', } } [root@master~]#vim/etc/puppet/manifests/site.pp import"nodes/agentgroup.pp"

3.配置Nagios以添加agent.redking.com主机监控

修改/usr/local/Nagios/etc/objects/commands.CFG。

command_namecheck_nrpe-将命令名定义为check_nrpe,并且必须使用services.cfg。

命令行$USER1$/check_nrpe-h$hostaddress$-c$arg1$-将/usr/local/nagios/libexec替换为$user1$。

这是为了定义实际运行的插件程序。这个命令行应该完全按照check_nrpe命令的用法来编写。如果不知道用法,用check_nrpe–h查一下;$ARG1$参数后跟-c是发送给nrpe守护程序执行的检测命令。它必须是nrpe.cfg中定义的五个命令之一

[root@master~]#vim/usr/local/nagios/etc/objects/commands.cfg #'check_nrpe'commanddefinition definecommand{ command_namecheck_nrpe command_line$USER1$/check_nrpe-H$HOSTADDRESS$-c$ARG1$ }

修改/usr/local/Nagios/etc/Nagios.CFG。

[root@master~]#vim/usr/local/nagios/etc/nagios.cfg cfg_file=/usr/local/nagios/etc/objects/agent1.redking.com.cfg cfg_file=/usr/local/nagios/etc/objects/agnet2.redking.com.cfg cfg_file=/usr/local/nagios/etc/objects/agent3.redking.com.cfg

添加agent1~3.redking.com.cfg配置文件

#vim/usr/local/nagios/etc/objects/agent1.redking.com.cfg definehost{ uselinux-server host_nameagent1.redking.com aliasagent1.redking.com address192.168.188.31 } defineservice{ usegeneric-service host_nameagent1.redking.com service_descriptionPING check_commandcheck_ping!100.0,20%!500.0,60% } defineservice{ usegeneric-service host_nameagent1.redking.com service_descriptionCurrentUsers check_commandcheck_nrpe!check_users!10!5 } defineservice{ usegeneric-service host_nameagent1.redking.com service_descriptionCurrentLoad check_commandcheck_nrpe!check_load!15,10,5!30,25,20 } defineservice{ usegeneric-service host_nameagent1.redking.com service_descriptionSwapUsage check_commandcheck_nrpe!check_swap!20!40 }

检测Nagios服务并重启以使配置生效。

[root@master~]#/usr/local/nagios/bin/nagios-v/usr/local/nagios/etc/nagios.cfg [root@master~]#servicenagiosrestart [root@master~]#servicepuppetmasterrestart

客户端测试

[root@agent1~]#puppetagent--test

客户端自动部署nrpe。

让我们看一下nagios监控接口,它在客户端自动部署nrpe后收集信息。

NRPE模块中定义的NRPE.cfg包含了大量的脚本,我们可以直接使用,也可以自己修改nrpe.cfg.erb的模板内容。批量部署时,我们可以分别使用自己编写的模块或者现有的模块。系统管理的日常任务,几乎90%可以利用现有模块实现,剩下10%可以根据生产业务自己定制。

================================================

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/783747.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-04
下一篇 2022-05-04

发表评论

登录后才能评论

评论列表(0条)

保存