ansible+shell简化nagios监控部署方案

一: 关于nagios的原理和nagios core、nagios plugin、nrpe、ansible的安装的这边就不讲了,搜索下还是比较多的,这边提供安装的脚本。

    1: nagios core的安装脚本:

useradd nagios #添加nagios用户
groupadd nagcmd #添加nagcmd用户组
usermod -a -G nagcmd nagios #把nagios添加到nagcmd组
usermod -s /sbin/nologin nagios #让nagios无法登录
yum install lrzsz –y #安装个上传下载用的
yum install httpd php –y #安装httpd php支持
yum install gcc glibc glibc-common –y
yum install gd gd-devel –y
 
cd /usr/local #到/usr/local目录去操作
wget “http://cznic.dl.sourceforge.net/project/nagios/nagios-4.x/nagios-4.0.8/nagios-4.0.8.tar.gz” #下载nagios最新版本
 
tar –zxvf nagios-4.0.8.tar.gz #解压最新版本的
 
cd nagios-4.0.8
./configure --prefix=/usr/local/nagios --with-command-group=nagcmd #编译,安装在/usr/local/nagios
make all
make install
make install-init
make install-commandmode
make install-config
make install-webconf #安装web的配置文件
 
chkconfig --add nagios #把nagios给chkconfig支持
chkconfig --level 35 nagios on #35模式下自动开启
 
htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin #为nagios登录设置密码
service httpd restart #重新启动httpd服务

    2: nagios plugin的安装脚本(一般在被监控端安装)

useradd nagios #添加nagios用户
usermod -s /sbin/nologin nagios #让nagios无法登录
cd /usr/local
wget http://nagios-plugins.org/download/nagios-plugins-2.0.3.tar.gz #下载nagios plugin
tar -zxvf nagios-plugins-2.0.3.tar.gz
cd nagios-plugins-2.0.3
./configure --prefix=/usr/local/nagios --with-nagios-user=nagios --with-nagios-group=nagios #编译
make #安装
make install

    3: nrpe的安装(这边需要改动的是allowed_hosts改为nagios core安装的地址):

useradd nagios #添加nagios用户
usermod -s /sbin/nologin nagios #让nagios无法登录
cd /usr/local
wget http://liquidtelecom.dl.sourceforge.net/project/nagios/nrpe-2.x/nrpe-2.15/nrpe-2.15.tar.gz #下载nrpe
tar -zxvf nrpe-2.15.tar.gz
cd nrpe-2.15
./configure --prefix=/usr/local/nagios # --enable-command-args如果要传递参数用这个,测试不通过
make #安装
make install
make install-daemon
make install-daemon-config
 
#更改配置allow nagios core来监控:
sed 's/allowed_hosts=127.0.0.1/allowed_hosts=192.168.1.1/' /usr/local/nagios/etc/nrpe.cfg
 
/usr/local/nagios/bin/nrpe -d -c /usr/local/nagios/etc/nrpe.cfg #nrpe作为守护进程启动

    4: ansible安装:

rpm -ivh http://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm
yum install ansible –y #安装ansible

    

二: 由于nagios被监控机器有时候还是比较多的,因此我们要设置远程无密码登录,使用密钥去登录机器。首先,我们需要在一台跳板机上创建密钥(输入命令,两次回车就行了)。

    

ssh-keygen -t rsa

    然后使用sh-copy-id -i /root/.ssh/id_rsa.pub root@172.16.0.2输入密码后,后续就可以免密码登录了。但是这样子的话,如果有多台,还是会有点不方便。因此,下列提供个python程序用来批量添加,

    

#!/usr/bin/python

import sys 
import pexpect

ip = sys.argv[1]

password = 'password'
expect_list = ['(yes/no)', 'password:']

p = pexpect.spawn('ssh-copy-id %s' % ip)
try:
    while True:
        idx = p.expect(expect_list)
        print p.before + expect_list[idx],
        if idx == 0:
            print "yes"
            p.sendline('yes')
        elif idx == 1:
            print password
            p.sendline(password)
except pexpect.TIMEOUT:
    print >>sys.stderr, 'timeout'
except pexpect.EOF:
    print p.before
    print >>sys.stderr, '<the end>'

    上面python脚本用来自动发送yes和密码的,可以把机器的ip和密码设置为两个参数,目前我设置的密码是一致的。执行方法python addhost.py ip地址即可。

三:使用ansible来批量上传插件到被监控的机器上。

    我们知道nagios远程监控linux机器是使用nrpe来监控的,因此如果有新的插件,我们需要把插件拷贝到所有的远程主机上,借助ansible使得这一过程变得简单。

    1: 把被监控的ip列成一组在/etc/ansible/hosts文件上,例如:

    [www]

    192.168.1.1

    192.168.1.2

    借助(二)的方法,上述的机器已经可以远程无密码登录了,因此可以直接使用ansible WWW -m ping来查看是否成功,成功截图如下:

    

    2: 接下来我们就可以把插件下载在跳板机上,然后通过跳板机远程传插件给被监控的主机。使用ansible的copy模块完成这个功能。(backup=yes代表如果有文件,帮忙备份,其实没用也没事)

    

ansible WWW -m copy -a "src=/root/check_cpu.sh dest=/usr/local/nagios/libexec/ owner=root group=root mode=0755 backup=yes"

    3: 然后批量更改nrpe的配置文件,每个被监控端的nrpe文件都差不多,因此,我们可以把nrpe的配置文件存在跳板机上,并用ansible的copy模块传递过去。

    

ansible WWW -m copy -a "src=/root/nrpe.cfg dest=/usr/local/nagios/etc/ owner=nagios group=nagios mode=0644 backup=yes"

    4" 然后把reload nrpe的命令写在一个脚本上,调用ansible的command模块在远程机器上执行本地的命令。

    

ansible WWW -m script -a "/root/command.sh"

    command.sh内容如下:

    kill -HUP `ps auxf | grep nrpe | grep -v grep | awk '{print $2}'`

 

四:借助shell来批量添加被监控的主机。

    1: 我们知道nagios要监控一台主机得在object上写监控一台主机的配置,然后把这个配置写入到nagio.cfg上。因此添加被监控的主机的脚本可以编写如下:

    

ip=$1
cat <<EOF >/usr/local/nagios/etc/objects/${ip}.cfg

define host{
        use linux-server
        host_name ${ip}
        address ${ip}
}
define service{
        use generic-service
        host_name ${ip}
        service_description PING
        check_command check_ping!100.0,20%!500.0,60%
}

define service{
        use generic-service
        host_name ${ip}
        service_description SSH
        check_command check_ssh
}

EOF

echo "cfg_file=/usr/local/nagios/etc/objects/${ip}.cfg" >> /usr/local/nagios/etc/nagios.cfg

    然后 使用sh addhost.sh  192.168.1.1就可以先监控192.168.1.1是否存活和ssh的状况。

    一般更改配置文件我们都需要检查下nagios的配置,把/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg这条检查命令alias成nagiocheck,这样我们就可以使用nagioscheck来检查了。

    

echo "alias nagioscheck='/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg'" > /root/.bashrc

    2: 除了可以用脚本批量添加被监控的主机以外,我们还可以使用脚本来添加一些service的监控,脚本如下:

    

ip=$1
port=$2
cat <<EOF >>/usr/local/nagios/etc/objects/${ip}.cfg
define service{
        use generic-service
        host_name ${ip}
        service_description Check Port ${port}
        check_command check_tcp!${port}
}
EOF

    以上脚本第一个参数为ip,第二个参数为port,通过上述脚本,就可以监控某台机器的某个端口是否是开着的。

 

    3: 最后,再附加上归组的脚本,机器太多的话,我们在host groups上看会清晰一点。例如:

    

    脚本如下:

    

group=$1
iplist=$2
cat <<EOF >/usr/local/nagios/etc/objects/${group}.cfg
define hostgroup{
        hostgroup_name  ${group}
        alias           ${group}
        members         ${iplist}
        }
EOF

echo "cfg_file=/usr/local/nagios/etc/objects/${group}.cfg" >>/usr/local/nagios/etc/nagios.cfg

    脚本的第一个参数为组名,第二个参数为主机列表(例如192.168.1.1,192.168.1.2,192.168.1.3)

 

最后附上本人的网络课堂地址,如有兴趣请点击: 实践哥

转载于:https://my.oschina.net/zhuangweihong/blog/425327

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值