#!/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
部署zabbix监控平台
最新推荐文章于 2024-09-08 13:14:15 发布