zabbix-server2.4全新升级3.0版本

Posted by Yancy on 2016-06-18

zabbix3.0出来了一段时间了,最近忍不住把公司原来的2.4.7版本升级到了3.0。zabbix升级其实很简单,基本步骤为:备份->重新安装新版本。接下来简单写下这次升级的操作和问题

1、 关闭zabbix server

防止有新的数据提交到数据库中、直接关闭数据库效果也是一样的。这里我先关闭掉我的服务:

1
2
/etc/init.d/zabbix_server stop 关闭了server服务端
/etc/init.d/zabbix_agentd stop 关闭了agent客户端

2、 备份

2.1 备份数据库

最简单的备份:关闭数据,整个数据库目录copy一份。虽说升级一般不会出现什么问题,但是安全起见还是有必要备份一下,就算升级成功,但是不能保证新版本让你喜欢,这个时候回退也有后路。

这里我用的是命令导出的:
也可以用NAvicat,导出结构和数据。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
mysqldump -u root -p***** -h MySQLIP地址 --opt --skip-lock-tables --flush-logs --database zabbix > /tmp/zabbix.sql
mysqldump -uroot -p -P7306 --opt --skip-lock-tables --flush-logs --database zabbix3 --ignore-table=zabbix.history --ignore-table=zabbix.history_log --ignore-table=zabbix.history_str --ignore-table=zabbix.history_text --ignore-table=zabbix.history_uint --ignore-table=zabbix.trends --ignore-table=zabbix.trends_uint >/root/zabbix20183026.sql
Warning: Using a password on the command line interface can be insecure.
Warning: Using unique option prefix database instead of databases is deprecated and will be removed in a future release. Please use the full name instead.
mysqldump: Got error: 1227: Access denied; you need (at least one of) the RELOAD privilege(s) for this operation when doing refresh
提示:
Login to mysql as root and enter your command:
FLUSH PRIVILEGES;

注意:zabbix数据库备份可以备份整个/var/lib/zabbix目录下所有数据,但是文件比较大,很占空间。不建议这么做。所以我们这里只备份zabbix的表文件,历史数据和趋势数据的表不备份。

2.2 备份文件

备份配置文件(通常是/etc/zabbix)、php网站源码、zabbix二进制文件(整个程序目录备份就OK)

1
2
3
4
5
6
7
8
9
备份配置文件: mv /usr/local/zabbix/ /usr/local/zabbix.2.4.7
备份启动脚本:
mv /etc/init.d/zabbix_server /etc/init.d/zabbix_server.2.4.7
mv /etc/init.d/zabbix_agentd /etc/init.d/zabbix_agentd.2.4.7
备份zabbix.php文件:
mv /var/www/html/zabbix/ /var/www/html/zabbix.2.4.7

3、安装配置

3.1 安装Zabbix server 重新安装新版本

重头安装一次zabbix,也就是configure –… make make install.
备注:一般高版本zabbix server兼容低版本zabbix客户端。如果发现有异常,那么你的zabbix客户端也相应升级一下。客户端升级比较简单:更新二进制文件,配置文件对照下是否有修改即可。

下载zabbix3.0版本,解压安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
wget http://oak0aohum.bkt.clouddn.com/zabbix-3.0.3.tar.gz -c /tmp/
cd /tmp/
tar zxf zabbix-3.0.3.tar.gz
./configure --prefix=/usr/local/zabbix --enable-server --with-mysql --with-net-snmp --with-libxml2 --with-libcurl --with-openipmi --enable-proxy --enable-agent --enable-java --with-ldap
如果编译失败没有libxml2 ldap 需要yum安装下:
yum install openldap openldap-devel libxml2* -y
编译成功这里会出现:
***********************************************************
* Now run 'make install' *
* *
* Thank you for using Zabbix! *
* <http://www.zabbix.com> *
***********************************************************
#直接make install 安装即可:
make install

这里编译安装 我加上了:–enable-java 这样防止后期监控tomcat需要重新编译。
安装好以后:

3.2 检查配置文件
zabbix_server.conf配置参数可能会有变化,修改变更后的参数,或者直接修改新的配置文件。

1.1 对照老版本的zabbix_server.conf进行修改,不能直接替换。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
vim /usr/local/zabbix/etc/
LogFile=/tmp/zabbix_server.log
DBHost=rdsm5t6w65741u8q1y53.mysql.rds.aliyuncs.com
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix2015
StartPollers=12
JavaGateway=127.0.0.1
JavaGatewayPort=10052
StartJavaPollers=5
Timeout=4
FpingLocation=/usr/local/fping/sbin/fping
LogSlowQueries=3000
AlertScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts

1.2 COPY相关脚本到新编译的目录下

1
2
3
4
5
6
7
8
cp /tmp/zabbix-3.0.3/misc/init.d/fedora/core/zabbix_server /etc/rc.d/init.d/zabbix_server
[root@salt etc]# cp /tmp/zabbix-3.0.3/misc/init.d/fedora/core/zabbix_agentd /etc/rc.d/init.d/zabbix_agentd
vim /etc/init.d/zabbix_server
BASEDIR=/usr/local/zabbix/
vim /etc/init.d/zabbix_agentd
BASEDIR=/usr/local/zabbix

1.3 alertscripts和externalscripts 里面的相关脚本复制到新的安装目录下。

1
2
cp /usr/local/zabbix.2.4.7/share/zabbix/alertscripts/* /usr/local/zabbix/share/zabbix/alertscripts/.
chown -R zabbix:zabbix /usr/local/zabbix/share/zabbix/alertscripts/*

4、 部署zabbix PHP源码
4.1 将新的前端PHP代码也COPY到对应的目录下。

1
2
3
4
5
6
cd /tmp/
cp -r /zabbix-3.0.3/frontends/php /var/www/html/zabbix
cd /var/www/html/
chown -R zabbix:zabbix zabbix
cp zabbix.2.4.7/conf/zabbix.conf.php zabbix/conf/zabbix.conf.php

拷贝下php文件这样数据就能访问同步过来了。

然后重启服务。

发现出现500 网页无法显示,我去网上Google了下,说我的PHP文件版本过低。

我查看了下我的版本:

1
2
3
4
5
6
7
php -version
PHP 5.3.3 (cli) (built: Feb 9 2016 10:36:17)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
whereis php
php: /usr/bin/php /etc/php.d /etc/php.ini /usr/lib64/php /usr/share/php /usr/share/man/man1/php.1.gz

查询了下这是默认安装的,yum安装的。

mv /usr/share/php/ /usr/share/php.5.3.3
备份之前的方便回滚,然后升级PHP:

快速将PHP 5.3升级至PHP 5.5

CentOS 6.7
以下为 CentOS 下安装 PHP 方法:

添加 epel 源

1
# rpm -Uvh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

添加 remi 源

1
# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

安装 PHP

1
# yum --enablerepo=remi,remi-php55 install php-fpm php-common php-devel php-mysqlnd php-mbstring php-mcrypt

查看 PHP 版本

1
2
3
4
# php -v
PHP 5.5.9 (cli) (built: Feb 11 2014 08:25:33)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies

启动 php-fpm

1
2
# service php-fpm start
Starting php-fpm:  [ OK ]

这里重启完以后,记得要让php生效,不然的话不行。

我一开始刷新还是出现了500错误,后来用php指针测试了下版本是多少?

www站点添加。info.php

1
2
3
4
5
<?php
phpinfo();
?>;

访问地址/info.php 出现版本是5.3 环境问题,重启http就可以了。

这里已经搞定咯。

如果出现图形乱码:可以参考下面的文档。

其实把之前的字体拷贝过去,然后先修改下配置文件即可。

1
cp /var/www/html/zabbix.2.4.7/fonts/simkai.ttf /var/www/html/zabbix/fonts/.

3.0版本升级以后其实就是个数据库不变,其他的重新安装一遍即可。 10多分钟就可以搞定的。

升级遇到的问题

  1. The frontend does not match Zabbix database. Current database version (mandatory/optional): 2050119/2050119. Required mandatory version: 3000000. Contact your system administrator.
    登录到数据库执行下面的sql,就可以修复这个问题
1
mysql>update dbversion set mandatory=3000000;
  1. 2 zabbix 内存溢出
    跑了新版本1天,老是启动不起来zabbix_server ,看日志出现下列问题
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
16701:20140925:191733.530 Starting Zabbix Server. Zabbix 3.0.3 (revision 48953).
16701:20140925:191733.530 ****** Enabled features ******
16701:20140925:191733.530 SNMP monitoring: YES
16701:20140925:191733.530 IPMI monitoring: YES
16701:20140925:191733.530 WEB monitoring: YES
16701:20140925:191733.530 VMware monitoring: NO
16701:20140925:191733.530 Jabber notifications: NO
16701:20140925:191733.530 Ez Texting notifications: YES
16701:20140925:191733.530 ODBC: NO
16701:20140925:191733.530 SSH2 support: NO
16701:20140925:191733.531 IPv6 support: NO
16701:20140925:191733.531 ******************************
16701:20140925:191733.531 using configuration file: /opt/zabbix/etc/zabbix_server.conf
15996:20140925:191145.759 completed 97% of database upgrade
15996:20140925:191147.139 completed 98% of database upgrade
15996:20140925:191147.422 completed 99% of database upgrade
15996:20140925:191147.428 completed 100% of database upgrade
15996:20140925:191147.428 database upgrade fully completed
15996:20140925:191148.800 __mem_malloc: skipped 0 asked 48 skip_min 0 skip_max 4294967295
15996:20140925:191148.800 [file:dbconfig.c,line:445] zbx_mem_malloc(): out of memory (requested 44 bytes)
15996:20140925:191148.800 [file:dbconfig.c,line:445] zbx_mem_malloc(): please increase CacheSize configuration parameter
15996:20140925:191148.800 [file:dbconfig.c,line:445] zbx_mem_malloc(): out of memory (requested 44 bytes)
15996:20140925:191148.800 [file:dbconfig.c,line:445] zbx_mem_malloc(): please increase CacheSize configuration parameter

解决
打开zabbix_server.conf找到 Option: CacheSize
把原来的# CacheSize=8M 前面的#注释去掉,将8M修改为1024,这个1024根据服务器性能修改。

交流学习:

🐧 Linux shell_高级运维派: 459096184 圈子 (系统运维-应用运维-自动化运维-虚拟化技术研究欢迎加入)
🐧 BigData-Exchange School : 521621407 圈子(大数据运维)(Hadoop开发人员)(大数据研究爱好者) 欢迎加入

相应Bidata有内部微信交流群互相学习,加入QQ群有链接。