自动化运维之系统监控Nagios(一)安装部署

一、系统环境

  操作系统:CentOS 7

  软件版本:Nagios 4.11 Pnp4nagios 0.6.25

二、部署脚本

 安装脚本如下:  

#!/bin/sh

#mysql密码

mysqlps=123

#nagios账户密码

nagiospa=123

#nagiosadmin账户密码

nagadps=123

#获取本机IP

hostip=` ip a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|sed "s%/24%%g" `

#系统配置

systemctl stop firewalld.service

systemctl disable firewalld.service

sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

setenforce 0 

yum -y install epel-release expect yum-axelget vim

echo "alias vi='vim'">>/etc/bashrc

echo "alias ll='ls -lh --color=auto'">>/etc/bashrc

echo "set nu">>/etc/vimrc

yum update -y

#安装LAMP

yum -y install httpd mariadb-server mariadb php php-mysql php-gd php-pear
systemctl start httpd
systemctl enable httpd
systemctl start mariadb
systemctl enable mariadb

expect <<EOF
	set timeout -1
	spawn mysql_secure_installation
	expect {
		"*(enter for none):" { send "\r"; exp_continue }
		"*password:" { send "${mysqlps}\r"; exp_continue }
		"*password:" { send "${mysqlps}\r"; exp_continue }
		"*users?" { send "Y\r"; exp_continue }
		"*remotely?" { send "Y\r"; exp_continue }
		"*it?" { send "Y\r"; exp_continue }
		"*now?" { send "Y\r"; exp_continue }
		}
	expect eof
EOF

#安装Nagios

yum install -y gd gd-devel gcc glibc glibc-common openssl openssl-devel openssl-perl unzip wget

useradd -m nagios

expect <<EOF
	set timeout -1
	spawn passwd nagios
	expect {
		"*password:" { send "${nagiospa}\r";exp_continue }
		"*password:" { send "${nagiospa}\r" }
		}
	expect eof
EOF


groupadd nagcmd

usermod -a -G nagcmd nagios

usermod -a -G nagcmd apache

cd /tmp

wget https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.1.1.tar.gz

tar xzf nagios-4.1.1.tar.gz

cd nagios-4.1.1

./configure --with-command-group=nagcmd

make all

make install

make install-init

make install-commandmode

make install-config

make install-webconf

make install-exfoliation

make install-classicui

#安装nagios-plugins、nrpe

yum install -y nagios-plugins* nrpe*

echo -e "#'check_nrpe' command definition
define command{
\tcommand_name check_nrpe
\tcommand_line \$USER1\$/check_nrpe -H \$HOSTADDRESS\$ -c \$ARG1\$
}">>/usr/local/nagios/etc/objects/commands.cfg

sed -i "s/nrpe_user=nrpe/nrpe_user=nagios/g" /etc/nagios/nrpe.cfg

sed -i "s/nrpe_group=nrpe/nrpe_group=nagcmd/g" /etc/nagios/nrpe.cfg

sed -i "s%/usr/local/nagios/libexec%/usr/lib64/nagios/plugins%g" /usr/local/nagios/etc/resource.cfg

#设置nagios Web 访问密码

expect <<EOF
	set timeout -1
	spawn htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
	expect {
		"*password:" { send "${nagadps}\r";exp_continue }
		"*password:" { send "${nagadps}\r" }
		}
	expect eof
EOF

#修复假报警

touch /var/www/html/index.html

#安装pnp4nagios

yum -y install php-gd rrdtool-perl rrdtool librrds-perl perl-Time-HiRes

cd /tmp

wget http://nchc.dl.sourceforge.net/project/pnp4nagios/PNP-0.6/pnp4nagios-0.6.25.tar.gz

tar zxvf pnp4nagios-0.6.25.tar.gz

cd pnp4nagios-0.6.25

./configure --with-nagios-user=nagios --with-nagios-group=nagcmd

make all

make fullinstall

sed -i "s%Order allow,deny%Require all granted%g" /etc/httpd/conf.d/pnp4nagios.conf

sed -i "s%Allow from all%%g" /etc/httpd/conf.d/pnp4nagios.conf

cd /usr/local/pnp4nagios/etc

ls|grep sample|awk -F"." '{print $1}'|xargs -i{} mv {}.cfg-sample {}.cfg

cd /usr/local/pnp4nagios/etc/pages

ls|grep sample|awk -F"." '{print $1}'|xargs -i{} mv {}.cfg-sample {}.cfg

cd /usr/local/pnp4nagios/etc/check_commands

ls|grep sample|awk -F"." '{print $1}'|xargs -i{} mv {}.cfg-sample {}.cfg

mv /usr/local/pnp4nagios/share/install.php /usr/local/pnp4nagios/share/install.php.bak

sed -i 's%process_performance_data=0%process_performance_data=1%' /usr/local/nagios/etc/nagios.cfg
sed -i 's%enable_environment_macros=0%enable_environment_macros=1%' /usr/local/nagios/etc/nagios.cfg

sed -i 's%#host_perfdata_command%host_perfdata_command%' /usr/local/nagios/etc/nagios.cfg

sed -i 's%#service_perfdata_command%service_perfdata_command%' /usr/local/nagios/etc/nagios.cfg

sed -i 's%#host_perfdata_file=/usr/local/nagios/var/host-perfdata%host_perfdata_file=/usr/local/pnp4nagios/var/host-perfdata%' /usr/local/nagios/etc/nagios.cfg

sed -i 's%#service_perfdata_file=/usr/local/nagios/var/service-perfdata%service_perfdata_file=/usr/local/pnp4nagios/var/service-perfdata%' /usr/local/nagios/etc/nagios.cfg

sed -i '847i host_perfdata_file_template=DATATYPE::HOSTPERFDATA\\tTIMET::\$TIMET\$\\tHOSTNAME::\$HOSTNAME\$\\tHOSTPERFDATA::\$HOSTPERFDATA\$\\tHOSTCHECKCOMMAND::\$HOSTCHECKCOMMAND\$\\tHOSTSTATE::\$HOSTSTATE\$\\tHOSTSTATETYPE::\$HOSTSTATETYPE\$' /usr/local/nagios/etc/nagios.cfg

sed -i '848i service_perfdata_file_template=DATATYPE::SERVICEPERFDATA\\tTIMET::\$TIMET\$\\tHOSTNAME::\$HOSTNAME\$\\tSERVICEDESC::\$SERVICEDESC\$\\tSERVICEPERFDATA::\$SERVICEPERFDATA\$\\tSERVICECHECKCOMMAND::\$SERVICECHECKCOMMAND\$\\tHOSTSTATE::\$HOSTSTATE\$\\tHOSTSTATETYPE::\$HOSTSTATETYPE\$\\tSERVICESTATE::\$SERVICESTATE\$\\tSERVICESTATETYPE::\$SERVICESTATETYPE\$' /usr/local/nagios/etc/nagios.cfg

sed -i 's%#host_perfdata_file_mode%host_perfdata_file_mode%' /usr/local/nagios/etc/nagios.cfg

sed -i 's%#service_perfdata_file_mode%service_perfdata_file_mode%' /usr/local/nagios/etc/nagios.cfg

sed -i 's%#host_perfdata_file_processing_interval=0%host_perfdata_file_processing_interval=15%' /usr/local/nagios/etc/nagios.cfg

sed -i 's%#service_perfdata_file_processing_interval=0%service_perfdata_file_processing_interval=15%' /usr/local/nagios/etc/nagios.cfg

sed -i 's%#host_perfdata_file_processing_command%host_perfdata_file_processing_command%' /usr/local/nagios/etc/nagios.cfg

sed -i 's%#service_perfdata_file_processing_command%service_perfdata_file_processing_command%' /usr/local/nagios/etc/nagios.cfg

sed -i 's%process-service-perfdata%psp12%' /usr/local/nagios/etc/objects/commands.cfg
sed -i 's%process-host-perfdata%php12%' /usr/local/nagios/etc/objects/commands.cfg

cat >>/usr/local/nagios/etc/objects/commands.cfg<<-EOF
# Bulk with NPCD mode
#
define command {
       command_name    process-service-perfdata-file
       command_line    /bin/mv /usr/local/pnp4nagios/var/service-perfdata /usr/local/pnp4nagios/var/spool/service-perfdata.\$TIMET\$
}

define command {
       command_name    process-host-perfdata-file
       command_line    /bin/mv /usr/local/pnp4nagios/var/host-perfdata /usr/local/pnp4nagios/var/spool/host-perfdata.\$TIMET\$
}
EOF

cat >>/usr/local/nagios/etc/objects/templates.cfg<<-EOF
define host {
   name       host-pnp
   action_url /pnp4nagios/index.php/graph?host=\$HOSTNAME\$&srv=_HOST_' class='tips' rel='/pnp4nagios/index.php/popup?host=\$HOSTNAME\$&srv=_HOST_
   register   0
}

define service {
   name       srv-pnp
   action_url /pnp4nagios/index.php/graph?host=\$HOSTNAME\$&srv=\$SERVICEDESC\$' class='tips' rel='/pnp4nagios/index.php/popup?host=\$HOSTNAME\$&srv=\$SERVICEDESC\$
   register   0
}
EOF

sed -i 's%linux-server%linux-server,host-pnp%' /usr/local/nagios/etc/objects/localhost.cfg

sed -i 's%local-service%local-service,srv-pnp%' /usr/local/nagios/etc/objects/localhost.cfg

sed -i 's%hostgroup_name  linux-server,host-pnp%hostgroup_name  linux-server%' /usr/local/nagios/etc/objects/localhost.cfg

#重启服务

ln -s /usr/local/nagios/bin/nagios /usr/bin/

nagios -v /usr/local/nagios/etc/nagios.cfg

sleep 3

systemctl start nrpe
systemctl enable nrpe
chkconfig npcd on
systemctl start npcd
chkconfig nagios on
systemctl start nagios
systemctl restart httpd
systemctl status -l npcd
systemctl status -l nrpe
systemctl status -l nagios
systemctl status -l httpd

echo "请访问http://${hostip}/nagios验证配置!!"


部署完成!

你可能感兴趣的:(CentOS7,部署脚本,nagios4.11)