交互式自动化部署zabbix脚本

本文详细介绍了如何使用Bash脚本进行Zabbix服务器、proxy和agent的安装、网络检查、配置数据库、Web界面设置以及自定义流量监控。包括SSH命令行操作、MySQL配置和Nginx监控模板的创建。
摘要由CSDN通过智能技术生成
#!/bin/bash
ip=$(ifconfig |grep -A1 ens33 | grep inet | awk 'NR==1 {printf $2"\n"}')
#zabbix网络环境
wangluo (){
ping -c 1 www.baidu.com > /tmp/laji.txt && echo -e "\e[5;30;42m当前网络通畅\e[0m" || echo -e "\e[5;33;41m当前网络不通\e[0m"
ping -c 1 www.baidu.com > /tmp/laji.txt || exit
}
#zabbixserver端搭建
zabbixserverhs (){
find /etc/yum.repos.d/  -name CentOS-Base.repo -exec mv {} /etc/yum.repos.d \;
yum clean all && yum makecache
yum -y install net-snmp-devel OpenIPMI-devel httpd openssl-devel java lrzsz fping-devel libcurl-devel perl-DBI pcre-devel libxml2 libxml2-devel mysql-devel gcc php php-bcmath php-gd php-xml php-mbstring php-ldap php-mysql.x86_64 php-pear php-xmlrpc net-tools mariadb mariadb-server
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
yum -y install  centos-release-scl
sed -i "11s/0/1/g"   /etc/yum.repos.d/zabbix.repo
yum clean all  &&  yum  makecache  &&  yum -y install zabbix-server-mysql  zabbix-agent  zabbix-web-mysql-scl   zabbix-apache-conf-scl  zabbix-get
systemctl restart mariadb  &&  systemctl enable mariadb
cat << EOF > /tmp/mysql_kuhu
create database zabbix default character set utf8 collate utf8_bin;
grant all on zabbix.* to "zabbix"@"localhost" identified by "123";
EOF
mysql < /tmp/mysql_kuhu
zcat  /usr/share/doc/zabbix-server-mysql-5.0.41/create.sql.gz |mysql zabbix
sed -i "/DBPassword/c  DBPassword=123"  /etc/zabbix/zabbix_server.conf
sed -i "/date.timezone/c  php_value[date.timezone] = Asia/Shanghai"  /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
#以下代码为更改zabbix网页展示时字体集
mv  /usr/share/fonts/dejavu/DejaVuSans.ttf   /usr/share/fonts/dejavu/DejaVuSans.ttf.bak   &&  mv  DejaVuSans.ttf   /usr/share/fonts/dejavu/
#以下两行代码为更改zabbix角标,需提前准备角标ico文件
rm -rf /usr/share/zabbix/favicon.ico
cp -a favicon.ico  /usr/share/zabbix/favicon.ico
#以下两行代码为替换图标文件,需提前准备
rm -rf /usr/share/zabbix/assets/img/icon-sprite.svg
cp -a icon-sprite.svg  /usr/share/zabbix/assets/img/icon-sprite.svg
systemctl   restart  zabbix-server  httpd  zabbix-agent  rh-php72-php-fpm
systemctl  enable  zabbix-server  httpd  zabbix-agent  rh-php72-php-fpm
}
#proxy网络环境
proxywangluo (){
ssh $proxyip ping -c 1 www.baidu.com > /tmp/laji.txt && echo -e "\e[5;30;42m当前$proxyip网络通畅\e[0m" || echo -e "\e[5;33;41m当前$proxyip网络不通\e[0m"
for ((i=1;i>0;i=i))
do
ssh $proxyip ping -c 1 www.baidu.com > /tmp/laji.txt && i=$(($i-1)) || echo  -e "\e[5;33;41m请在$proxyip打开个终端去解决网络问题\e[0m"
sleep 10
done 
clear
echo -e  "\e[5;30;42m当前$proxyip网络通畅\e[0m"
}
#zabbix-proxy安装搭建
zabbixproxyhs (){
ssh $proxyip  'find /etc/yum.repos.d/  -name CentOS-Base.repo -exec mv {} /etc/yum.repos.d \;'
ssh $proxyip  'yum clean all && yum makecache'
ssh $proxyip  rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
ssh $proxyip  yum -y install zabbix-proxy-mysql  mariadb   mariadb-server zabbix-get
ssh $proxyip  systemctl restart mariadb  && ssh  $proxyip  systemctl enable mariadb
cat << EOF > /tmp/mysql_kuhu2
create database zabbix_proxy default character set utf8 collate utf8_bin;
grant all on zabbix_proxy.* to "zabbix"@"localhost" identified by "123";
EOF
scp /tmp/mysql_kuhu2  $proxyip:/tmp/
ssh $proxyip  mysql < /tmp/mysql_kuhu2
ssh $proxyip 'zcat /usr/share/doc/zabbix-proxy-mysql-5.0.41/schema.sql.gz | mysql  zabbix_proxy'
ssh $proxyip  'sed -i "30c Server='$ip'"   /etc/zabbix/zabbix_proxy.conf'
ssh $proxyip  'sed -i "196c  DBPassword=123"  /etc/zabbix/zabbix_proxy.conf'
ssh $proxyip  'systemctl restart zabbix-proxy  &&  systemctl  enable  zabbix-proxy'
}
#zabbix-agent网络环境
agentwangluo (){
ssh $agentip ping -c 1 www.baidu.com > /tmp/laji.txt && echo -e "\e[5;30;42m当前$agentip网络通畅\e[0m" || echo -e "\e[5;33;41m当前$agentip网络不通\e[0m"
for ((i=1;i>0;i=i))
do
ssh $agentip ping -c 1 www.baidu.com > /tmp/laji.txt && i=$(($i-1)) || echo  -e "\e[5;33;41m请在$agentip打开个终端去解决网络问题\e[0m"
sleep 10
done 
clear
echo -e  "\e[5;30;42m当前$agentip网络通畅\e[0m"
}
#zabbix-agent安装搭建
zabbixagenths (){
ssh $agentip  'find /etc/yum.repos.d/  -name CentOS-Base.repo -exec mv {} /etc/yum.repos.d \;'
ssh $agentip  'yum clean all && yum makecache'
ssh $agentip rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
ssh $agentip yum -y install zabbix-agent
read -e -p "请说明这个$agentipIP地址上的agent的指定的server端的IP地址:"  zhiming
ssh $agentip 'sed -i  "117c  Server='$zhiming'"   /etc/zabbix/zabbix_agentd.conf'
ssh $agentip 'sed -i  "163c  ServerActive='$zhiming'"  /etc/zabbix/zabbix_agentd.conf'
ssh $agentip 'systemctl restart zabbix-agent && systemctl restart zabbix-agent'
}
#钉钉脚本编写
dingdinghs (){
read -e -p "接下来配置钉钉信息发送脚本,请粘贴钉钉机器人的链接通道:"  dingding 
cat << EOF > /usr/lib/zabbix/alertscripts/dingding.sh
#!/bin/bash
to=\$1
subject=\$2
text=\$3
curl '$dingding' \\
-H 'Content-Type: application/json' \\
-d '
{"msgtype": "text",
"text": {
"content": "'"\$text"'"
},
"at":{
"atMobiles": [ "'"$to"'" ],
"isAtAll": false
}
}'
EOF
chmod +x /usr/lib/zabbix/alertscripts/dingding.sh
}
#nginx-自定义流量监控模板函数  
nginxhs (){
read -e -p "网页配置完成后接下来创建自定义监控模板,实现对nginx的流量监控,请说名nginx安装位置:" nginxip
scp nginx-1.24.0-1.el7.ngx.x86_64.rpm $nginxip:/root/
ssh $nginxip yum -y install nginx-1.24.0-1.el7.ngx.x86_64.rpm
ssh $nginxip 'sed -i "43d" /etc/nginx/conf.d/default.conf'
ssh $nginxip 'cat << EOF >> /etc/nginx/conf.d/default.conf
    location /tongji {
        stub_status on;
        access_log off;
    }
}
EOF'
ssh $nginxip 'systemctl restart nginx && systemctl enable nginx'
cat << EOF > /tmp/check_nginx.sh
#!/bin/bash	 
HOST="127.0.0.1"
PORT="80" 
# 检测 nginx 进程是否存在
function ping {
	/sbin/pidof nginx | wc -l 
}
# 检测 nginx 性能
function active {
	/usr/bin/curl "http://\$HOST:\$PORT/tongji/" 2>/dev/null| grep 'Active' | awk '{print \$NF}'
}	
function reading {
	/usr/bin/curl "http://\$HOST:\$PORT/tongji/" 2>/dev/null| grep 'Reading' | awk '{print \$2}'
}
function writing {
	/usr/bin/curl "http://\$HOST:\$PORT/tongji/" 2>/dev/null| grep 'Writing' | awk '{print \$4}'
}
function waiting {
	/usr/bin/curl "http://\$HOST:\$PORT/tongji/" 2>/dev/null| grep 'Waiting' | awk '{print \$6}'
}
function accepts {
	/usr/bin/curl "http://\$HOST:\$PORT/tongji/" 2>/dev/null| awk NR==3 | awk '{print \$1}'
}
function handled {
	/usr/bin/curl "http://\$HOST:\$PORT/tongji/" 2>/dev/null| awk NR==3 | awk '{print \$2}'
}
function requests {
	/usr/bin/curl "http://\$HOST:\$PORT/tongji/" 2>/dev/null| awk NR==3 | awk '{print \$3}'
}
# 执行function
\$1
EOF
scp /tmp/check_nginx.sh  $nginxip:/etc/zabbix/zabbix_agentd.d/check_nginx.sh 
ssh $nginxip  'chmod +x /etc/zabbix/zabbix_agentd.d/check_nginx.sh'
ssh $nginxip 'sed  -i  "343c UserParameter=nginx.status[*],/etc/zabbix/zabbix_agentd.d/check_nginx.sh \$1"  /etc/zabbix/zabbix_agentd.conf'
ssh $nginxip systemctl restart zabbix-agent  
}

clear
wangluo
zabbixserverhs && clear && echo -e  "\e[1;32;40m当前zabbix-server服务已搭建\n请使用浏览器访问http://$ip/zabbix安装配置zabbix web界面\nmysql创建zabbix用户密码为123\n登录zabbix web界面,用户名:Admin,密码:zabbix\e[0m"

read -e -p "网页界面操作完毕后,接下来搭建zabbix-proxy,请输入zabbix-proxy搭建在那个IP地址上:"  proxyip
proxywangluo
zabbixproxyhs && clear && echo -e "\e[1;32;40m当前zabbix-proxy服务已搭建完成\n请使用浏览器访问http://$ip/zabbix管理界面》agent代理程序》创建代理》代理程序名称:Zabbix proxy》主动模式》代理地址为:$proxyip\e[0m"

read -e -p "网页界面操作完毕后,接下来部署zabbix-agent,请用数字说明需要部署几个zabbix-agent:" agentsl
for ((j=1;j<=$agentsl;j++))
do
read -e -p "请说明第$j台部署agent的IP地址:" agentip
agentwangluo
zabbixagenths && clear && echo -e "\e[1;32;40m第$j台agent已部署完成\e[0m"
done
 
dingdinghs
clear
echo -e "\e[1;32;40m当前dingding脚本已完成\n你可以在用户设置里添加前端报警声音\n在管理》报警媒介》创建钉钉媒介》类型:脚本》脚本名称:dingding.sh》脚本参数:{ALERT.SENDTO}--{ALERT.SUBJECT}--{ALERT.MESSAGE}\n同样在创建邮箱媒介》添加邮件信息》保存\n在配置》动作》触发器动作》开启触发器动作\n在管理》用户》admin用户》添加钉钉和邮件的报警媒介\e[0m"

nginxhs
clear
echo -e "\e[1;32;40m接下来请去web界面创建nginx自定模板和自动发现规则和动作\e[0m"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值