前提镜像源可用
#!/bin/bash
#set -x
echo "*************************************************
* zabbix 5.x一键安装脚本 *
* 官方文档 https://www.zabbix.com/cn/download? *
* 可用稳定版本5.0.16 5.4.5 5.4.6 5.4.7 *
* rc是候选版 apph1a是内测版 *
* 官方安装包地址 https://repo.zabbix.com/zabbix *
* 环境 centos 8.3.2011 x86_64 *
*************************************************"
read -p "Enter db_root_password > " dbrootpw #输入数据库密码
read -p "Enter zabbix_dbpassword > " dbpassword #输入zabbix库密码
#zabbix 版本号
version=5.4.7
#多网卡自己填ip
IP=`ip add|grep global|awk -F'[ /]+' '{ print $3 }'|head -n 1`
#1、设置
echo '调整selinux、关闭防火墙'
systemctl stop firewalld.service
systemctl disable firewalld.service
firewall-cmd --state
sed -i '/^SELINUX=.*/c SELINUX=disable' /etc/selinux/config
grep --color=auto '^SELINUX' /etc/selinux/config
setenforce 0
#更换源
yum install -y wget &> /dev/null
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repo
#zabbix repo源 会下载5.4最新的子版本
rpm -Uvh https://repo.zabbix.com/zabbix/5.4/rhel/8/x86_64/zabbix-release-5.4-1.el8.noarch.rpm
#同步时间
[[ -f /usr/sbin/ntpdate ]] || { echo "install ntp";yum install ntp ntpdate -y &> /dev/null; }
#若没NTP则安装
/usr/sbin/ntpdate ntp6.aliyun.com
echo "*/3 * * * * /usr/sbin/ntpdate ntp6.aliyun.com &> /dev/null" > /tmp/crontab
crontab /tmp/crontab
echo '------------执行完毕---------'
##########################################
#2 安装
yum install mariadb-server -y
echo '启动数据库服务'
systemctl start mariadb && systemctl enable mariadb
sleep 5
netstat -antp|grep mysqld
#mysql_secure_installation #初始化设置密码,自动交互
[[ -f /usr/bin/expect ]] || { yum install expect -y; } #若没expect则安装
/usr/bin/expect << EOF
set timeout 30
spawn mysql_secure_installation
expect {
"enter for none" { send "\r"; exp_continue}
"Y/n" { send "Y\r" ; exp_continue}
"password:" { send "$dbrootpw\r"; exp_continue}
"new password:" { send "$dbrootpw\r"; exp_continue}
"Y/n" { send "Y\r" ; exp_continue}
eof { exit }
}
EOF
#测试
mysql -u root -p$dbrootpw -e "show databases;"
[ $? = 0 ] || { echo "mariadb初始化失败";exit; }
#创建zabbix库并授权
echo '创建数据库、用户授权'
mysql -u root -p$dbrootpw -e "create database zabbix character set utf8 collate utf8_bin;"
mysql -u root -p$dbrootpw -e "create user zabbix@localhost identified by '$dbpassword';"
mysql -u root -p$dbrootpw -e "grant all privileges on zabbix.* to zabbix@localhost;"
mysql -u root -p$dbrootpw -e "flush privileges;"
echo '安装zabbix----------------------------------------------------------------------------------------------------------'
#安装zabbix 推荐使用repo源安装,如果使用下载rpm包安装则需要安装依赖包
yum install -y zabbix-server-mysql zabbix-web-mysql zabbix-nginx-conf zabbix-sql-scripts zabbix-agent
#导入数据库 如果你的版本和我不一样可能create.sql.gz所在位置不一样,可以 find / -name create.sql.gz 查一下
zcat /usr/share/doc/zabbix-sql-scripts/mysql/create.sql.gz | mysql -uzabbix -p$dppassword -h localhost zabbix
#配置zabbix
sed -i '/^# DBHost=/c DBHost=localhost' /etc/zabbix/zabbix_server.conf
sed -i '/^# DBPassword=/c DBPassword='$dbpassword'' /etc/zabbix/zabbix_server.conf
grep -n ^DB /etc/zabbix/zabbix_server.conf
#配置php
sed -i 's/^;\(date.timezone =.*\)/\1 Asia\/Shanghai/' /etc/php.ini
#启动服务并添加为开机启动项
systemctl restart zabbix-server zabbix-agent nginx php-fpm
systemctl enable zabbix-server zabbix-agent nginx php-fpm
ss -tnl
echo ‘=================================安装完成========================================’
echo 'Please visit http://'$IP' user:Admin passwd: zabbix to further configuration!!!!!'
遇到的错误
A. zabbix-server错误
思路:查看zabbix-server日志 /var/log/zabbix/zabbix_server.log
一. zabbix和数据库连接出错
[Z3001] connection to database 'zabbix' failed: [1130] Host '10.166.30.33' is not allowed to connect to this MariaDB server
原因:当时我数据库授权的是localhost,但我zabbix配置的DBHost是本机ip地址,所以我zabbix以ip登录失败
排查方法:mysql -uzabbix -p$password -h $ip
解决办法:DBHost改成localhost
二. 数据未导入或导入出错
[Z3005] query failed: [1146] Table 'zabbix.users' doesn't exist [select userid from users limit 1]
原因:我用脚本安装过5.0的版本,后来安装5.4.7版本的时候,发现create.sql.gz文件位置变了,不在zabbix-server-mysql目录下
排错办法: mysql -uzabbix -p$dbpassword -e "use zabbix;show tables;" | grep users
解决办法: 删除旧表zabbix,重新导入create.sql.gz
三. 导入出错
cannot use database "zabbix": its "users" table is empty (is this the Zabbix proxy database?)
原因:我之前没有删除旧表,导入了5.0版本的数据后又导入了5.4.7的
解决办法:删除旧表zabbix,重新导入create.sql.gz
++解决无法在仪表盘无法切换成中文问题
cat /usr/share/zabbix/include/locales.inc.php | grep 'zh_cn' #//查询是否支持中文,如果能查到
locale -a | grep "zh_CN" #//看系统是否安装了中文编码
yum search langpacks
yum install -y langpacks-zh_CN.noarch
#还是locale -a | grep "zh_CN" 查不到,安装glibc-common
yum install -y glibc-common
++ 解决监控图形乱码问题:
yum -y install wqy-microhei-fonts #//安装文泉驿-微黑字体
mv /usr/share/zabbix/assets/fonts/graphfont.ttf{,.bak} #//备份旧的绘图字体
cp /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/zabbix/assets/fonts/graphfont.ttf #//部署新的绘图字体
执行完后首先需要将nginx.conf的server代码块注释掉,因为默认访问的是nginx下的www目录下,然后设置子配置文件conf.d里的zabbix.conf即可,最后restart nginx
参考:
https://my.oschina.net/u/4579491/blog/5163551