简化nagios监控部署ansible+shell方案
来自:网络一: 关于nagios的原理和nagios core、nagios plugin、nrpe、ansible的安装的这边就不讲了,搜索下还是比较多的,这边提供安装的脚本。
1: nagios core的安装脚本: nagios培训 ?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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 “ ... 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的安装脚本(一般在被监控端安装)
?
1
2
3
4
5
6
7
8
9
useradd nagios #添加nagios用户
usermod -s /sbin/nologin nagios #让nagios无法登录
cd /usr/local
wget 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安装的地址): nagios实施
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
useradd nagios #添加nagios用户
usermod -s /sbin/nologin nagios #让nagios无法登录
cd /usr/local
wget h... 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安装:
?
1
2
rpm -ivh fedora-e ... ease-6-8.noarch.rpm
yum install ansible –y #安装ansible
二: 由于nagios被监控机器有时候还是比较多的,因此我们要设置远程无密码登录,使用密钥去登录机器。首先,我们需要在一台跳板机上创建密钥(输入命令,两次回车就行了)。 监控软件
?
1
ssh-keygen -t rsa
然后使用sh-copy-id -i /root/.ssh/id_rsa.pub root@172.16.0.2输入密码后,后续就可以免密码登录了。但是这样子的话,如果有多台,还是会有点不方便。因此,下列提供个python程序用来批量添加,
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#!/usr/bin/python import sysimport pexpect
ip = sys.argv
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,
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配置 我们知道nagios远程监控linux机器是使用nrpe来监控的,因此如果有新的插件,我们需要把插件拷贝到所有的远程主机上,借助ansible使得这一过程变得简单。
1: 把被监控的ip列成一组在/etc/ansible/hosts文件上,例如:
192.168.1.1
192.168.1.2
借助(二)的方法,上述的机器已经可以远程无密码登录了,因此可以直接使用ansible WWW -m ping来查看是否成功,成功截图如下:
2: 接下来我们就可以把插件下载在跳板机上,然后通过跳板机远程传插件给被监控的主机。使用ansible的copy模块完成这个功能。(backup=yes代表如果有文件,帮忙备份,其实没用也没事)
?
1
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模块传递过去。
?
1
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模块在远程机器上执行本地的命令。 开源监控软件
?
1
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上。因此添加被监控的主机的脚本可以编写如下:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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.sh192.168.1.1就可以先监控192.168.1.1是否存活和ssh的状况。
一般更改配置文件我们都需要检查下nagios的配置,把/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg这条检查命令alias成nagiocheck,这样我们就可以使用nagioscheck来检查了。
?
1
echo "alias nagioscheck='/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg'" > /root/.bashrc
2: 除了可以用脚本批量添加被监控的主机以外,我们还可以使用脚本来添加一些service的监控,脚本如下:
?
1
2
3
4
5
6
7
8
9
10
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上看会清晰一点。例如: nagios安装
脚本如下:
?
1
2
3
4
5
6
7
8
9
10
11
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)
想做Nagios, Zabbix,Cacti,iTop各种交流的,可以进入开源监控工具Nagios交流QQ群号 :476809427
页:
[1]