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

测试框架

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

 

Puppet 要求所有机器有完整的域名(FQDN),如果没有 DNS 服务器提供域名的话,可以在两台机器上设置主机名(注意要先设置主机名再安装 Puppet,因为安装 Puppet 时会把主机名写入证书,客户端和服务端通信需要这个证书),因为我配置了DNS,所以就不用改hosts了,如果没有就需要改hosts文件指定。

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

关闭selinux

1  [root@master ~]# cat /etc/selinux/config       
2  # This file controls the state of SELinux on the system.       
3  # SELINUX= can take one of these three values:       
4  # enforcing - SELinux security policy is enforced.       
5  # permissive - SELinux prints warnings instead of enforcing.       
6  # disabled - No SELinux policy is loaded.       
7  SELINUX=enforcing       
8  # SELINUXTYPE= can take one of these two values:       
9  # targeted - Targeted processes are protected,       
10 # mls - Multi Level Security protection.       
11 SELINUXTYPE=targeted       
12 [root@master ~]# sed -i ‘/SELINUX/ s/enforcing/disabled/g‘ /etc/selinux/config       
13 [root@master ~]# cat /etc/selinux/config       
14 # This file controls the state of SELinux on the system.       
15 # SELINUX= can take one of these three values:       
16 # enforcing - SELinux security policy is enforced.       
17 # permissive - SELinux prints warnings instead of enforcing.       
18 # disabled - No SELinux policy is loaded.       
19 SELINUX=disabled       
20 # SELINUXTYPE= can take one of these two values:       
21 # targeted - Targeted processes are protected,       
22 # mls - Multi Level Security protection.       
23 SELINUXTYPE=targeted       
24 [root@master ~]# setenforce 0


停止iptables

1  [root@node1 ~]# chkconfig --list |grep tables       
2  ip6tables 0:off 1:off 2:on 3:on 4:on 5:on 6:off       
3  iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off       
4  [root@node1 ~]# chkconfig ip6tables off       
5  [root@node1 ~]# chkconfig iptables off       
6  [root@node1 ~]# service ip6tables stop       
7  ip6tables: Setting chains to policy ACCEPT: filter [ OK ]       
8  ip6tables: Flushing firewall rules: [ OK ]       
9  ip6tables: Unloading modules: [ OK ]       
10 [root@node1 ~]# service iptables stop       
11 iptables: Setting chains to policy ACCEPT: filter [ OK ]       
12 iptables: Flushing firewall rules: [ OK ]       
13 iptables: Unloading modules: [ OK ]       
14 [root@node1 ~]#


设置ntp

1 [root@master ~]# ntpdate pool.ntp.org      
2 [root@master ~]# chkconfig --list|grep ntp       
3 ntpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off       
4 ntpdate 0:off 1:off 2:off 3:off 4:off 5:off 6:off       
5 [root@master ~]# chkconfig ntpd on       
6 [root@master ~]# service ntpd start       
7 Starting ntpd: [ OK ]       
8 [root@master ~]#


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

1 [root@master ~]# wget http://yum.puppetlabs.com/el/6/products/x86_64/puppetlabs-release-6-7.noarch.rpm     
2 [root@master ~]# rpm -ivh puppetlabs-release-6-7.noarch.rpm     
3 [root@master ~]# yum update -y

在 master上安装和启用 puppet 服务:

1 [root@master ~]# yum install -y puppet-server    
2 [root@master ~]# chkconfig puppet on     
3 [root@master ~]# chkconfig puppetmaster on    
4 [root@master ~]# service puppet start    
5 Starting puppet agent:                                     [  OK  ]    
6 [root@master ~]# service puppetmaster start    
7 Starting puppetmaster:                                     [  OK  ]    
8 [root@master ~]#

在clients上安装puppet客户端

1 [root@agent1 ~]# yum install -y puppet     
2 [root@agent1 ~]# chkconfig puppet on     
3 [root@agent1 ~]# service puppet start

3.配置puppet

对于puppet 客户端,修改/etc/puppet/puppet.conf,指定master服务器

并重启puppet服务

1 [root@agent1 ~]# service puppet restart

4.Client申请证书    
服务端自动签发证书设置    
设置master自动签发所有的证书,我们只需要在/etc/puppet目录下创建 autosign.conf文件。(不需要修改 /etc/puppet/puppet.conf文件,因为我默认的autosign.conf 文件的位置没有修改)

1 [root@master ~]# cat > /etc/puppet/autosign.conf <<EOF     
2 > *.redking.com    
3 > EOF    
4 [root@master ~]# service puppetmaster restart     
5 Stopping puppetmaster:                                     [  OK  ]    
6 Starting puppetmaster:                                     [  OK  ]    
7 [root@master ~]#

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

1 [root@agent1 ~]# puppet agent --test

就可以申请证书了,由于我配置的自动签发证书,所以直接就签发了,在服务端执行

1 [root@master ~]# puppet cert list --all

Nagios服务器安装

1.安装Nagios相关依赖包

1 [root@master ~]# yum install -y httpd php gcc glibc glibc-common gd gd-devel openssl-devel

2.创建Nagios用户与组

1 [root@master ~]# useradd -m nagios    
2 [root@master ~]# passwd nagios

创建nagcmd用户组以执行来自Web接口命令,并添加nagios和apache用户到此用户组

1 [root@master ~]# groupadd nagcmd    
2 [root@master ~]# usermod -a -G nagcmd nagios    
3 [root@master ~]# usermod -a -G nagcmd apache

3.下载Nagios和Plugins软件包

http://www.nagios.org/download/下载Nagios Core和Nagios Plugins

4.编译安装Nagios

1 [root@master tmp]# tar zxf nagios-4.0.8.tar.gz     
2 [root@master tmp]# cd nagios-4.0.8

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

1 [root@master nagios-4.0.8]# ./configure --with-command-group=nagcmd

#编译Nagios源码

1 [root@master nagios-4.0.8]# make all

#安装二进制文件、init脚本文件、sample配置文件,设置外部命令目录权限

1 [root@master nagios-4.0.8]# make install      
2 [root@master nagios-4.0.8]# make install-init      
3 [root@master nagios-4.0.8]# make install-config      
4 [root@master nagios-4.0.8]# make install-commandmode

5.修改配置文件

样式配置文件位于/usr/local/nagios/etc目录,可以更改email地址

1 [root@master nagios-4.0.8]# vim /usr/local/nagios/etc/objects/contacts.cfg

6.配置Web界面

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

1 [root@master nagios-4.0.8]# make install-webconf

创建nagiosadmin帐号登录Nagios Web接口

1 [root@master nagios-4.0.8]# htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin    
2 [root@master nagios-4.0.8]# service httpd start    
3 Starting httpd:                                            [  OK  ]    
4 [root@master nagios-4.0.8]# chkconfig httpd on

开启httpd服务使配置生效并设置开机自启

7.编译安装Nagios Plugins

1 [root@master tmp]# tar zxvf nagios-plugins-2.0.3.tar.gz     
2 [root@master tmp]# cd nagios-plugins-2.0.3    
3 [root@master nagios-plugins-2.0.3]# ./configure --with-nagios-user=nagios --with-nagios-group=nagios    
4 [root@master nagios-plugins-2.0.3]# make && make install

8.编译安装Nrpe

1 [root@master tmp]# tar zxvf nrpe-2.15.tar.gz    
2 [root@master nrpe-2.15]# ./configure    
3 [root@master nrpe-2.15]# make all    
4 [root@master nrpe-2.15]# make install-plugin    
5 [root@master nrpe-2.15]# make install-daemon    
6 [root@master nrpe-2.15]# make install-daemon-config

9.启动Nagios

本机监控HTTP SSH的Notifications显示警告错误,解决方法

1  [root@master ~]# vim /usr/local/nagios/etc/objects/localhost.cfg    
2  # Define a service to check SSH on the local machine.    
3  # Disable notifications for this service by default, as not all users may have SSH enabled.    
4  define service{    
5  use                             local-service         ; Name of service template to use    
6  host_name                       localhost    
7  service_description             SSH    
8  check_command                   check_ssh    
9  notifications_enabled           1  #改为1,即可    
10 }    
11 # Define a service to check HTTP on the local machine.    
12 # Disable notifications for this service by default, as not all users may have HTTP enabled.    
13 define service{    
14 use                             local-service         ; Name of service template to use    
15 host_name                       localhost    
16 service_description             HTTP    
17 check_command                   check_http    
18 notifications_enabled           1  #改为1,即可    
19 }    
20 [root@master ~]# touch /var/www/html/index.html

启动Nagios之前测试配置文件

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

启动Nagios、nrpe并设置开机自启

1  [root@master ~]# chkconfig nagios --add    
2  [root@master ~]# chkconfig --list |grep nagios     
3  nagios          0:off   1:off   2:off   3:on    4:on    5:on    6:off    
4  [root@master ~]# chkconfig nagios on    
5  [root@master ~]# service nagios start    
6  Starting nagios: done.    
7  [root@master ~]# echo "/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d" >> /etc/rc.d/rc.local    
8  [root@master nrpe-2.15]# /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d     
9  [root@master nrpe-2.15]# netstat -tunpl |grep nrpe     
10 tcp 0 0 0.0.0.0:5666 0.0.0.0:* LISTEN 70100/nrpe    
11 tcp 0 0 :::5666 :::* LISTEN 70100/nrpe    
12 [root@master nrpe-2.15]#

执行/usr/local/nagios/libexec/check_nrpe -H 127.0.0.1检查连接是否正常

使用之前定义的nagiosadmin帐号与密码登录Nagios,地址:http://192.168.188.20/nagios/

创建Nagios客户端监控

1.Puppet Master安装相应模块

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

epel模块用于安装nrpe软件,nrpe模块用于收集主机信息,puppi属于Example42模块组件,使用Example42模块时都需要加载此模块。

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

1 [root@master ~]# git clone https://github.com/puppetlabs/puppetlabs-stdlib /etc/puppet/modules/stdlib    
2 [root@master ~]# git clone https://github.com/example42/puppi /etc/puppet/modules/puppi    
3 [root@master ~]# git clone https://github.com/example42/puppet-nrpe /etc/puppet/modules/nrpe    
4 [root@master ~]# puppet module install stahnma/epel    
5 [root@master ~]# vim /etc/puppet/puppet.conf     
6 [master]    
7 modulepath = /etc/puppet/modules/

2.创建agent节点组配置文件

1  [root@master ~]# mkdir /etc/puppet/manifests/nodes    
2  [root@master ~]# vim /etc/puppet/manifests/nodes/agentgroup.pp    
3  node /^agent\d+\.redking\.com$/ {    
4  include stdlib    
5  include epel    
6  class { ‘puppi‘: }    
7  class { ‘nrpe‘:     
8  require => Class[‘epel‘],    
9  allowed_hosts => [‘127.0.0.1‘,$::ipaddress,‘192.168.188.20‘],    
10 template => ‘nrpe/nrpe.cfg.erb‘,    
11 }    
12 }    
13 [root@master ~]# vim /etc/puppet/manifests/site.pp    
14 import "nodes/agentgroup.pp"

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

修改/usr/local/nagios/etc/objects/commands.cfg

command_name check_nrpe ——定义命令名称为check_nrpe,services.cfg必须使用

command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ ——用$USER1$代替/usr/local/nagios/libexec

这是定义实际运行的插件程序.这个命令行的书写要完全按照check_nrpe这个命令的用法.不知道用法的就用check_nrpe –h查看; -c后面带的$ARG1$参数是传给nrpe daemon执行的检测命令,它必须是nrpe.cfg中所定义的5条命令中的其中一条。

1 [root@master ~]# vim /usr/local/nagios/etc/objects/commands.cfg     
2 # ‘check_nrpe‘ command definition    
3 define command{    
4 command_name check_nrpe    
5 command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$    
6 }

修改/usr/local/nagios/etc/nagios.cfg

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

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

1  # vim /usr/local/nagios/etc/objects/agent1.redking.com.cfg    
2  define host{    
3  use             linux-server    
4  host_name       agent1.redking.com    
5  alias agent1.redking.com    
6  address         192.168.188.31    
7  }    
8     
9  define service{    
10 use                     generic-service    
11 host_name               agent1.redking.com    
12 service_description     PING    
13 check_command           check_ping!100.0,20%!500.0,60%    
14 }    
15    
16 define service{    
17 use                     generic-service    
18 host_name               agent1.redking.com    
19 service_description     Current Users    
20 check_command           check_nrpe!check_users!10!5    
21 }    
22    
23 define service{    
24 use                     generic-service    
25 host_name               agent1.redking.com    
26 service_description     Current Load    
27 check_command           check_nrpe!check_load!15,10,5!30,25,20    
28 }    
29    
30 define service{    
31 use                     generic-service    
32 host_name               agent1.redking.com    
33 service_description     Swap Usage    
34 check_command           check_nrpe!check_swap!20!40    
35 }

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

1 [root@master ~]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg     
2 [root@master ~]# service nagios restart    
3 [root@master ~]# service puppetmaster restart

客户端测试

1 [root@agent1 ~]# puppet agent --test

客户端自动部署nrpe

下面我们来看下客户端自动化部署nrpe后采集信息的nagios监控界面

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

========================END=================================

时间: 2024-10-10 07:20:53

CentOS6.6+Puppet3.7.4分布式部署Nagios监控系统的相关文章

CentOS6.6+Puppet3.7.3分布式部署Zabbix2.4监控系统

OS:CentOS-6.6-x86_64(Minimal) Puppet 3.7.3 Zabbix 2.4 Puppet/Zabbix master: master/zabbix.redking.com Puppet/Zabbix agent:  agent1~5.redking.com Puppet安装 1.服务端安装puppet-server puppet不在CentOS的基本源中,需要加入PuppetLabs提供的官方源,Puppet Master服务器端安装puppet-server,自

部署nagios监控系统

检查包是否安装,因为Nagios需要依赖这些包提供服务 [[email protected] nagios]# rpm -q gcc glibc glibc-common gd gd-devel xinetd openssl-devel [[email protected] nagios]#yum install -y  gd gd-devel xinetd openssl-devel 建立nagios账号 [[email protected] ~]# useradd nagios -s /sb

Nagios 监控系统架设全攻略

Nagios 全名为(Nagios Ain’t Goona Insist on Saintood),最初项目名字是 NetSaint.它是一款免费的开源 IT 基础设施监控系统,其功能强大,灵活性强,能有效监控 Windows .Linux.VMware 和 Unix 主机状态,交换机.路由器等网络设置等.一旦主机或服务状态出现异常时,会发出邮件或短信报警第一时间通知 IT 运营人员,在状态恢复后发出正常的邮件或短信通知.Nagios 结构简单,可维护性强,越来越受中小企业青睐,以及运维和管理人

Cacti+Nagios监控系统(二):安装Cacti

一.设置mysql,创建Cacti数据库和账号 mysql -u root -p mysql> create database cactidb; mysql> GRANT ALL ON cactidb.* TO [email protected] IDENTIFIED BY '123456'; mysql> flush privileges; mysql> quit 二.安装rrdtool yum -y install rrdtool  rrdtool-devel  rrdtool

Nagios监控系统

一.Nagios监控系统简介 1.Nagios工作原理 Nagios本身不包括监控主机和服务的功能.所有的监控.监测功能都是通过各种插件来完成的.安装完nagios之后,在nagios主目录下的/libexex里面放有nagios自带的插件,如:check_disk是检查磁盘空间的插件,check_load是检查cpu负载的插件,每一个插件可以通过运行./check_xxx -h命令来检查其使用方法和功能. 1.Nagios的四种监控状态 Nagios可以识别四种状态返回信息.0(OK)表示状态

Cacti+Nagios监控系统(五):Nagios监控windows(基于check_nt)

一.工作原理 Nagios服务器使用check_nt工具与客户端程序通讯,客户端程序NSCP使用命令来获取本地客户端的信息并返回给check_nt. check_nt只是NSCP其中一项服务,Nagios还可以通过check命令(如check_http检查WEB服务).check_nrpe.NSCA.WMI来监控windows客户端. 二.下载客户端程序 下载地址:  http://nsclient.org/nscp/downloads 64位系统下载:NSCP-0.4.1.105-x64.ms

Nagios 监控系统架设全攻略(一)

最近一段时间在研究Nagios监控系统,然后网上搜索查看很多的资料,借鉴与各位大虾的经验,整理记录一下自己安装记录. Nagios 全名为(Nagios Ain’t Goona Insist on Saintood),最初项目名字是 NetSaint.它是一款免费的开源 IT 基础设施监控系统,其功能强大,灵活性强,能有效监控 Windows .Linux.VMware 和 Unix 主机状态,交换机.路由器等网络设置等.一旦主机或服务状态出现异常时,会发出邮件或短信报警第一时间通知 IT 运营

Cacti+Nagios监控系统(一):准备工作

一.系统环境 1.设置yum源 (1)使用本地源 挂载光驱ISO文件 确认路径/media/CentOS_6.5_Final/ cd /etc/yum.repos.d mv CentOS-Base.repo CentOS-Base.repo.bak vi CentOS-Base.repo [base] name=Base baseurl=file:///media/CentOS_6.5_Final/ gpgcheck=0 #(1检测 0不检测) enabled=1 #(1启动 0不启动) (2)

Cacti+Nagios监控系统(三):安装Nagios

一.添加用户 groupadd nagcmd useradd -G nagcmd nagios passwd nagios 123456 usermod -a -G nagcmd apache 二.安装nagios cd /root/download wget http://jaist.dl.sourceforge.net/project/nagios/nagios-4.x/nagios-4.0.7/nagios-4.0.7.tar.gz 也可以从这里下载:http://www.nagios.o