部署zabbix监控平台

#!/bin/bash
#AUTHOR:QI
#DATE:2019-6-2
#EMAIL:zhqlwl0121@163.com
#DESCRIBE:部署zabbix监控平台

#1.安装LNMP环境
#2.源码安装Zabbix
#3.安装监控端主机,修改基本配置
#4.初始化Zabbix监控Web页面
#5.修改PHP配置文件,满足Zabbix需求

	
	#加载函数库:
	source /opt/functions.sh

#在zabbixserver上部署:
ip_sh=$(ifconfig eth1 | grep netmask | awk '{print $2}')

menu(){
     	 #  clear
	   echo "  ##############----Menu----##############"
	   echo "# 1. 安装Nginx"                          
	   echo "# 2. 安装MariaDB"
	   echo "# 3. 安装PHP"
	   echo "# 4. 安装ZABBIX"
	   echo "# 5. 退出..."
	   echo "  ########################################"
}

read_num()
{
read -p "请按顺序选择[1-5]菜单:" num
}
#1.部署LNMP
#1)搭建nginx
nginx_install()
{
yum_sh
cecho 32 "正在安装gcc、pcre等软件包..."
	YUM gcc			>  /dev/null
	YUM pcre-devel		>  /dev/null
	YUM openssl-devel	>  /dev/null
	YUM zlib-devel		>  /dev/null
	cd 
	[ ! -f zabbix.tar.gz ] && cecho 31 "安装nginx压缩包不存在..." && exit
	tar -xf zabbix.tar.gz
	cd /root/Zabbix
	 tar -xf nginx-1.12.2.tar.gz
	cd /root/Zabbix/nginx-1.12.2
	cecho 32 "正在源码编译安装nginx..."
	./configure --with-http_ssl_module > /dev/null
	  make  			   > /dev/null
	  make install			   > /dev/null
	ln -s /usr/local/nginx/sbin/nginx /sbin
	nginx
	netstat -nutlp | grep nginx
nginx_name=$(ss -nutlp | grep nginx | awk '{print $NF}' | awk -F\" '{print $2}')
if [ "$nginx_name" == "nginx" ];then
	cecho 32 "nginx服务启动成功...."
else
	cecho 31 "nginx服务启动失败,请检查相应的配置...." && exit
fi
}

#2)安装mariadb数据库服务
mariadb_install()
{
yum_sh
cecho 32 "正在安装mariadb软件包..."
YUM mariadb				> /dev/null
YUM mariadb-server			> /dev/null
YUM mariadb-devel			> /dev/null
start_sh mariadb
netstat -nutlp | grep 3306
mysql_name=$(ss -nutlp | grep 3306 | awk '{print $NF}' | awk -F\" '{print $2}')
if [ "$mysql_name" == "mysqld" ];then
	cecho 32 "mysql服务启动成功..." 
else
	cecho 31 "mysql服务启动失败,请检查相应的配置...." && exit
fi
}

#3)安装php
php_install()
{
yum_sh					
cd /root/Zabbix
cecho 32 "正在安装php软件包..."		
YUM php					> /dev/null
YUM php-fpm				> /dev/null
YUM php-mysql				> /dev/null
start_sh php-fpm			
netstat -nutlp | grep 9000
php_name=$(ss -nutlp | grep 9000 | awk '{print $NF}' | awk -F\" '{print $2}')
if [ "$php_name" == "php-fpm" ];then
	cecho 32 "php-fpm服务启动成功"
else
	cecho 31 "php-fpm服务启动失败,请检查相应的配置....." && exit
fi
}



#4)修改nginx主配置文件

#修改nginx主配置文件 

#配置Nginx支持PHP动态网站,因为有大量PHP脚本需要执行,因此还需要开启Nginx的各种fastcgi缓存,加速PHP脚本的执行速度。
#vim /usr/local/nginx/conf/nginx.conf

#http{
#… …
#    fastcgi_buffers 8 16k;                      //缓存php生成的页面内容,8个16k
#    fastcgi_buffer_size 32k;                      //缓存php生产的头部信息
#    fastcgi_connect_timeout 300;                 //连接PHP的超时时间
#    fastcgi_send_timeout 300;                     //发送请求的超时时间
#    fastcgi_read_timeout 300;                        //读取请求的超时时间
#location ~ \.php$ {
#                root           html;
#                fastcgi_pass   127.0.0.1:9000;
#                fastcgi_index  index.php;
#                include        fastcgi.conf;
#        }
#… …
nginx_conf()
{
conf_file=/usr/local/nginx/conf/nginx.conf
	sed -i "65,68s/#//g" 			  $conf_file
	sed -i "70c include        fastcgi.conf;" $conf_file
	sed -i "71s/#//g" 			  $conf_file
	sed -i "18a fastcgi_read_timeout 300;"    $conf_file
	sed -i "18a fastcgi_send_timeout 300;"	  $conf_file
	sed -i "18a fastcgi_connect_timeout 300;" $conf_file
	sed -i "18a fastcgi_buffer_size 32k;" 	  $conf_file
	sed -i "18a fastcgi_buffers 8 16k;"	  $conf_file
nginx -s reload 
[ $? -ne 0 ] && cecho 31 "nginx配置错误..." && exit
echo "<?php
\$i=33;
echo \$i;
?>"  >  /usr/local/nginx/html/a.php

verweb=$(curl -o a.php http://$ip_sh/a.php)
cecho 36 "$verweb"
}

#2.安装源码Zabbix 软件
zabbix_install()
{
cd 
[ ! -f zabbix.tar.gz ] && cecho 31 "安装zabbix压缩包不存在..." && exit
tar -xf zabbix.tar.gz
cd /root/Zabbix
yum_sh 
cecho 32 "正在安装Zabbix相关软件包...."
YUM net-snmp-devel				 > /dev/null
YUM curl-devel 					 > /dev/null
YUM libevent-devel			 	 > /dev/null
tar -xf zabbix-3.4.4.tar.gz
cd /root/Zabbix/zabbix-3.4.4
./configure  --enable-server --enable-proxy --enable-agent --with-mysql=/usr/bin/mysql_config --with-net-snmp --with-libcur > /dev/null
cecho 32 "正在源码编译安装Zabbix...."
make 		> /dev/null
make install	> /dev/null
}

# 初始化Zabbix (创建数据库与数据库账户)
init_zabbix()
{
mysql -e "create database zabbix character set utf8;"
mysql -e "grant all on zabbix.* to zabbix@'localhost' identified by 'zabbix';"
mysql -e "show databases;"
mysql -e "select user,host from mysql.user;"
cecho 32 "创建zabbix库以及用户zabbix授权成功...."
cd /root/Zabbix/zabbix-3.4.4/database/mysql/
mysql -uzabbix -pzabbix zabbix < schema.sql
mysql -uzabbix -pzabbix zabbix < images.sql
mysql -uzabbix -pzabbix zabbix < data.sql
}


# 上线web页面
zabbix_web()
{
cd /root/Zabbix/zabbix-3.4.4/frontends/php/
cp -r * /usr/local/nginx/html/
chmod -R 777 /usr/local/nginx/html/*
}



#修改配置文件,启动zabbix server服务
	#vim /usr/local/etc/zabbix_server.conf
	# 12  ListenPort=10051 			 服务端口
	# 38  LogFile=/tmp/zabbix_server.log	 日志文件
	# 85  DBHost=localhost 			 数据库服务
	# 95  DBName=zabbix			 库名
	# 111 DBUser=zabbix			 用户名
	# 119 DBPassword=zabbix    		 密码
server_zabbix()
{
zabser_conf=/usr/local/etc/zabbix_server.conf
	sed -i "12c ListenPort=10051" 			 $zabser_conf
	sed -i "38c LogFile=/tmp/zabbix_server.log" 	 $zabser_conf
	sed -i "85c DBHost=localhost"			 $zabser_conf
	sed -i "95c DBName=zabbix" 			 $zabser_conf
	sed -i "111c DBUser=zabbix" 			 $zabser_conf
	sed -i "119c DBPassword=zabbix"		 	 $zabser_conf
useradd -s /sbin/nologin zabbix
zabbix_server
netstat -utnlp  | grep  10051
sleep 2
zaseport=$(netstat -utnlp  | grep  zabbix_server  | awk -F: '{print $2}' | awk '{print $1}')
if [ "$zaseport" -eq "10051" ];then
	cecho 36 "zabbix_server服务启动成功..."	
else
        cecho 31 "zabbix_server服务启动失败,请检查相关配置..." && exit
fi
}



# 修改配置文件,启动zabbix agent(被监控时使用)
	# vim /usr/local/etc/zabbix_agentd.conf
	#	30 LogFile=/tmp/zabbix_agentd.log        日志文件名
	#	93 Server=127.0.0.1,192.168.2.5		 允许连接服务的地址
	#	101 ListenPort=10050			 服务端口
	#	134 ServerActive=127.0.0.1,192.168.2.5   监控服务器地址
	#	145 Hostname=Zabbix server 		 主机名
	#	280 UnsafeUserParameters=1 		 允许自定义命令
agnetd_zabbix()
{
agentd_conf=/usr/local/etc/zabbix_agentd.conf
	sed -i "30c LogFile=/tmp/zabbix_agentd.log"	 $agentd_conf
	sed -i "93c Server=127.0.0.1,$ip_sh"		 $agentd_conf
	sed -i "101c ListenPort=10050"			 $agentd_conf
	sed -i "134c ServerActive=127.0.0.1,$ip_sh"	 $agentd_conf
	sed -i "145c Hostname=Zabbix server" 		 $agentd_conf
	sed -i "280c UnsafeUserParameters=1"		 $agentd_conf
zabbix_agentd
netstat -utnlp | grep 10050
zaagport=$(netstat -utnlp  | grep  zabbix_agentd  | awk -F: '{print $2}' | awk '{print $1}')
if [ "$zaagport" -eq "10050" ];then
	cecho 36 "zabbix_agentd服务启动成功..."	
else
        cecho 31 "zabbix_agentd服务启动失败,请检查相关配置..." && exit
fi
}

#初始化Zabbix准备
before_init_zabbix()
{
cd /root/Zabbix
yum_sh  
cecho 32 "正在安装初始化Zabbix所需要的安装包...."
YUM php-bcmath				   > /dev/null
YUM php-mbstring			   > /dev/null
YUM php-gd  				   > /dev/null
YUM php-xml  				   > /dev/null
YUM php-ldap				   > /dev/null
	sed -i "384c max_execution_time = 300" 		    /etc/php.ini
	sed -i "394c max_input_time = 300" 		   /etc/php.ini
	sed -i "405c memory_limit = 128M"		  /etc/php.ini
	sed -i "672c post_max_size = 16M" 		 /etc/php.ini
	sed -i "878c date.timezone = Asia/Shanghai" 	/etc/php.ini
restart_sh php-fpm
cecho 36 "zabbix监控平台部署完毕!!!"
cecho 42 "打开浏览器 输入zabbix URL地址: http://$ip_sh/index.php"
cecho 35 " 登陆管理页面
管理员:admin  
密码:zabbix"
}


while :
do
menu
read_num
case $num in 
1)	
	nginx_install
	;;
2)
	mariadb_install
	;;
3)	
	php_install
	nginx_conf
	;;
4)	
	zabbix_install
	init_zabbix
	zabbix_web
	server_zabbix
	agnetd_zabbix
	before_init_zabbix && exit
	;;
5)	
	cecho 32 "ByeBye!!!" && exit
	;;
*)
	cecho 35 "Sorry 请输入已有的菜单号:" 

esac
done



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值