Zabbix 3.2.1 升级3.4.1
偶然看到 Zabbix 有新版本,决定升级下,升级前也犹豫了很久,毕竟现在的版本用着好好的,新的功能对我似乎没有应用到;
但忍不住折腾,折腾完之后还是有亮点的,之前写的编译脚本,按自己的需求改吧。
需要注意的点
1、系统 CentOS 6.8 x64;
2、安装目录 /usr/local/zabbix;
3、升级前备份下现在运行的版本,防止需要回滚;
4、升级过程其实就是重新编译过程,第一次启动 Zabbix Server 会更改数据库的一些字段和类型等等,以平滑匹配新版本,这个动作不用干预;
5、升级过程中 Agent 数据会丢失,所以速度快点吧。
1 #!/bin/bash 2 #================================================================ 3 # Filename: install_zabbix.sh 4 # Author: chenc 5 # Create: 2018-07-18 14:19:35 6 # Description: --- 7 # Last Modified: 2018-07-18 14:29:43 8 #================================================================ 9 10 BASEDIR=$(dirname $(readlink -f $0)) 11 log=/root/update_zbx.log 12 13 [ -e $log ] || >$log 14 ls -l $BASEDIR |egrep "^d" |xargs rm -rf 15 16 [ -z "$(cat /etc/group |grep zabbix)" ] || groupadd zabbix 17 [ -z "$(cat /etc/passwd |grep zabbix)" ] || useradd -g zabbix -s /sbin/nologin -M zabbix 18 19 tools=(net-snmp-devel) 20 for i in ${tools[*]};do 21 rpm -qa |grep ^$i > /dev/null 2>&1 22 if [ $? != 0 ];then 23 yum install -y $i 24 if [ $? == 0 ];then 25 echo "install ok - $i" |tee -a $log 26 else 27 echo "install error - $i" |tee -a $log 28 fi 29 else 30 echo "installed - $i" |tee -a $log 31 fi 32 done 33 34 tar -xf zabbix-3.4.1.tar.gz && cd zabbix-3.4.1 35 ./configure \ 36 --prefix=/usr/local/zabbix \ 37 --enable-server \ 38 --with-mysql \ 39 --with-net-snmp \ 40 --with-libcurl \ 41 --with-libxml2 \ 42 --with-unixodbc \ 43 --enable-java 44 if [ $? == 0 ];then 45 make 46 if [ $? = 0 ];then 47 make install 48 if [ $? = 0 ];then 49 # 配置系统服务 50 \cp ${BASEDIR}/zabbix-3.4.1/misc/init.d/fedora/core/zabbix_server /etc/init.d/ 51 \cp ${BASEDIR}/zabbix-3.4.1/misc/init.d/fedora/core/zabbix_agentd /etc/init.d/ 52 chkconfig --add zabbix_server 53 chkconfig zabbix_server on 54 55 # 配置静态页面目录 56 [ -e "/var/www" ] || mkdir -p /var/www 57 cp -r ${BASEDIR}/zabbix-3.4.1/frontends/php /var/www/zabbix 58 chmod 777 /var/www/zabbix/conf 59 else 60 echo "make install error !!" |tee -a $log 61 break 62 fi 63 else 64 echo "make error !!" |tee -a $log 65 break 66 fi 67 else 68 echo "configure error !!" |tee -a $log 69 break 70 fi
踩坑:
1、新版本会有 sock 文件生成,有关进程的 pid 和 sock 文件默认是放在 /tmp 下;
这两个文件优先由 zabbix_server.conf 定义,虽然 /etc/init.d/zabbix_server 中也可编辑;
2、pid、scok、log 文件录权限要求是 zabbix 运行的账户权限目录,本例的账户是 zabbix;
3、本然在 zabbix_agentd.conf 中配置了 Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/
导致启动 agent 时报错:
Shutting down zabbix_agentd: [FAILED] Starting zabbix_agentd: zabbix_agentd [11192]: unknown parameter "pid" in config file "/usr/local/zabbix/etc/zabbix_agentd.conf.d/mysql_base.sh", line 3 [FAILED]
原因是启动时会将这个目录下的文件当成配置文件来读,并且匹配为内置启动参数,但这里是我自定义的 mysql 的 pid,和 zabbix_agentd 的进程 pid 不是一回事,程序就会报错了;注释掉这一样就好,或者自定义脚本不要放在这个目录。
升级过程很快,10分钟就编译完了,并且现在的体验也很不错,页面有些细节的修改,看起来比以前要舒服点:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下