zabbix3.2源碼編譯安裝版升級到zabbix4.0長期支持版 項目需求: 3.2版本不再支持,想升級成4.0的長期支持版 環境介紹: zabbix服務端是編譯安裝的,數據庫和web在一台機器上 整體思路: 先升級3.2版本到3.4過渡版本,然后再次將3.4升級成4.0版本 因為升級過程較長 為了避免影響正常的zabbix業務,克隆出一台服務器用來升級使用,升級完成后互換ip或者直接修改客戶端的agent把新的服務端也加入其中 可以並行一段時間,如果沒問題就可以棄用老的zabbix服務器了 大概步驟: 1.編譯安裝zabbix3.4.15,然后修改zabbix_server.conf連接zabbix3.2的數據庫,運行zabbix_server服務端進行數據表結構升級到3.4 2.再次編譯安裝zabbix4.0.10,再次修改zabbix_server.conf連接到已經升級到zabbix3.4的表結構數據庫中,再次運行zabbix_server服務端程序將數據庫表結構升級到zabbix4.0 最終就達到了升級的目標 實際在編譯安裝zabbix3.4過程中發現在原來的服務器上直接編譯安裝zabbix3.4是安裝不上的,環境被破壞了,於是在另外一台機器上編譯安裝服務端和web,然后修改配置連接數據庫進行數據庫表結構升級 准備工作: 備份zabbix-3.2相關的數據庫、前端網頁、執行程序文件,如果升級失敗可以回滾 一、zabbix-3.2版本升級zabbix3.4版本 1.安裝依賴 yum install mysql-devel gcc libxml2-devel libevent-devel net-snmp net-snmp-devel curl curl-devel php php-bcmath php-mbstring php-gettext php-session php-ctype php-xmlreader php-xmlwrer php-xml php-net-socket php-gd php-mysql -y https://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/3.4.15/zabbix-3.4.15.tar.gz ln -s /usr/local/mysql/lib/libperconaserverclient.so /usr/lib/libperconaserverclient.so ./configure --prefix=/usr/local/zabbix-3.4.15 --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-libxml2 # 報錯如下,找了很多方案解決不了,於是再另外的服務器中編譯安裝zabbix3.4 /libs/zbxserver/libzbxserver.a ../../src/libs/zbxdbcache/libzbxdbcache.a ../../src/libs/zbxhistory/libzbxhistory.a ../../src/libs/zbxmemory/libzbxmemory.a ../../src/libs/zbxregexp/libzbxregexp.a ../../src/libs/zbxself/libzbxself.a ../../src/libs/zbxnix/libzbxnix.a ../../src/libs/zbxalgo/libzbxalgo.a ../../src/libs/zbxsys/libzbxsys.a ../../src/libs/zbxconf/libzbxconf.a ../../src/libs/zbxmedia/libzbxmedia.a ../../src/libs/zbxcommon/libzbxcommon.a ../../src/libs/zbxcrypto/libzbxcrypto.a ../../src/libs/zbxcomms/libzbxcomms.a ../../src/libs/zbxcommshigh/libzbxcommshigh.a ../../src/libs/zbxjson/libzbxjson.a ../../src/libs/zbxhttp/libzbxhttp.a ../../src/libs/zbxipcservice/libzbxipcservice.a ../../src/libs/zbxexec/libzbxexec.a ../../src/libs/zbxicmpping/libzbxicmpping.a ../../src/libs/zbxdbupgrade/libzbxdbupgrade.a ../../src/libs/zbxdbhigh/libzbxdbhigh.a ../../src/libs/zbxdb/libzbxdb.a ../../src/libs/zbxmodules/libzbxmodules.a ../../src/libs/zbxtasks/libzbxtasks.a -lmysqlclient -lz -lcrypt -lnsl -lm -lssl -lcrypto -lxml2 -lnetsnmp -levent -lcurl -lm -ldl -lrt -lresolv -lpcre ../../src/libs/zbxhistory/libzbxhistory.a(history_elastic.o): In function `elastic_writer_flush': /usr/local/src/zabbix-3.4.15/src/libs/zbxhistory/history_elastic.c:457: undefined reference to `curl_multi_wait' ../../src/libs/zbxipcservice/libzbxipcservice.a(libzbxipcservice_a-ipcservice.o): In function `ipc_client_free_events': /usr/local/src/zabbix-3.4.15/src/libs/zbxipcservice/ipcservice.c:521: undefined reference to `event_free' /usr/local/src/zabbix-3.4.15/src/libs/zbxipcservice/ipcservice.c:527: undefined reference to `event_free' ../../src/libs/zbxipcservice/libzbxipcservice.a(libzbxipcservice_a-ipcservice.o): In function `zbx_ipc_service_close': /usr/local/src/zabbix-3.4.15/src/libs/zbxipcservice/ipcservice.c:1530: undefined reference to `event_free' /usr/local/src/zabbix-3.4.15/src/libs/zbxipcservice/ipcservice.c:1531: undefined reference to `event_free' ../../src/libs/zbxipcservice/libzbxipcservice.a(libzbxipcservice_a-ipcservice.o): In function `ipc_service_add_client': /usr/local/src/zabbix-3.4.15/src/libs/zbxipcservice/ipcservice.c:798: undefined reference to `event_new' /usr/local/src/zabbix-3.4.15/src/libs/zbxipcservice/ipcservice.c:799: undefined reference to `event_new' ../../src/libs/zbxipcservice/libzbxipcservice.a(libzbxipcservice_a-ipcservice.o): In function `zbx_ipc_service_start': /usr/local/src/zabbix-3.4.15/src/libs/zbxipcservice/ipcservice.c:1489: undefined reference to `event_new' /usr/local/src/zabbix-3.4.15/src/libs/zbxipcservice/ipcservice.c:1493: undefined reference to `event_new' collect2: ld returned 1 exit status make[3]: *** [zabbix_server] Error 1 make[3]: Leaving directory `/usr/local/src/zabbix-3.4.15/src/zabbix_server' make[2]: *** [install-recursive] Error 1 make[2]: Leaving directory `/usr/local/src/zabbix-3.4.15/src/zabbix_server' make[1]: *** [install-recursive] Error 1 make[1]: Leaving directory `/usr/local/src/zabbix-3.4.15/src' make: *** [install-recursive] Error 1 2.獲取源碼 https://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/3.4.15/zabbix-3.4.15.tar.gz # 編譯安裝zabbix3.4 ./configure --prefix=/usr/local/zabbix3.4.15 --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --enable-java # 將服務器默認的zabbix鏈接到新的服務端程序中 cd /usr/local/ rm -f zabbix ln -s zabbix3.4.15 zabbix 修改zabbix_server.conf連接之前的3.2數據庫 # 啟動zabbix服務端 [root@zabbix4_clone:~]# cat /etc/init.d/zabbix_server #!/bin/bash # # chkconfig: - 90 10 # description: Starts and stops Zabbix Server using chkconfig # Tested on Fedora Core 2 - 5 # Should work on all Fedora Core versions # # @name: zabbix_server # @author: Alexander Hagenah <hagenah@topconcepts.com> # @created: 18.04.2006 # # Modified for Zabbix 2.0.0 # May 2012, Zabbix SIA # # Source function library. . /etc/init.d/functions # Variables # Edit these to match your system settings # Zabbix-Directory BASEDIR=/usr/local/zabbix # Binary File BINARY_NAME=zabbix_server # Full Binary File Call FULLPATH=$BASEDIR/sbin/$BINARY_NAME # PID file PIDFILE=/tmp/$BINARY_NAME.pid # Establish args ERROR=0 STOPPING=0 # # No need to edit the things below # # application checking status if [ -f $PIDFILE ] && [ -s $PIDFILE ] then PID=`cat $PIDFILE` if [ "x$PID" != "x" ] && kill -0 $PID 2>/dev/null && [ $BINARY_NAME == `ps -e | grep $PID | awk '{print $4}'` ] then STATUS="$BINARY_NAME (pid `pidof $APP`) running.." RUNNING=1 else rm -f $PIDFILE STATUS="$BINARY_NAME (pid file existed ($PID) and now removed) not running.." RUNNING=0 fi else if [ `ps -e | grep $BINARY_NAME | head -1 | awk '{ print $1 }'` ] then STATUS="$BINARY_NAME (pid `pidof $APP`, but no pid file) running.." else STATUS="$BINARY_NAME (no pid file) not running" fi RUNNING=0 fi # functions start() { if [ $RUNNING -eq 1 ] then echo "$0 $ARG: $BINARY_NAME (pid $PID) already running" else action $"Starting $BINARY_NAME: " $FULLPATH touch /var/lock/subsys/$BINARY_NAME fi } stop() { echo -n $"Shutting down $BINARY_NAME: " killproc $BINARY_NAME RETVAL=$? echo [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$BINARY_NAME RUNNING=0 } # logic case "$1" in start) start ;; stop) stop ;; status) status $BINARY_NAME ;; restart) stop sleep 10 start ;; help|*) echo $"Usage: $0 {start|stop|status|restart|help}" cat <<EOF start - start $BINARY_NAME stop - stop $BINARY_NAME status - show current status of $BINARY_NAME restart - restart $BINARY_NAME if running by sending a SIGHUP or start if not running help - this screen EOF exit 1 ;; esac exit 0 # 查看zabbix服務端日志,出現以下內容說明升級成功 30788:20190626:213252.069 Starting Zabbix Server. Zabbix 3.4.15 (revision 86739). 30788:20190626:213252.070 ****** Enabled features ****** 30788:20190626:213252.070 SNMP monitoring: YES 30788:20190626:213252.070 IPMI monitoring: NO 30788:20190626:213252.070 Web monitoring: YES 30788:20190626:213252.070 VMware monitoring: YES 30788:20190626:213252.070 SMTP authentication: YES 30788:20190626:213252.070 Jabber notifications: NO 30788:20190626:213252.070 Ez Texting notifications: YES 30788:20190626:213252.070 ODBC: NO 30788:20190626:213252.070 SSH2 support: NO 30788:20190626:213252.070 IPv6 support: NO 30788:20190626:213252.070 TLS support: NO 30788:20190626:213252.070 ****************************** 30788:20190626:213252.070 using configuration file: /usr/local/zabbix-3.4.15/etc/zabbix_server.conf 30788:20190626:213252.080 current database version (mandatory/optional): 03020000/03020000 30788:20190626:213252.080 required mandatory version: 03040000 30788:20190626:213252.081 optional patches were found 30788:20190626:213252.081 starting automatic database upgrade 30788:20190626:213252.093 completed 0% of database upgrade 30788:20190626:213252.145 completed 1% of database upgrade 30788:20190626:213252.244 completed 2% of database upgrade 30788:20190626:213252.267 completed 3% of database upgrade 30788:20190626:213252.293 completed 4% of database upgrade 30788:20190626:213252.371 completed 5% of database upgrade 30788:20190626:213252.416 completed 6% of database upgrade 30788:20190626:213252.436 completed 7% of database upgrade 30788:20190626:213252.449 completed 8% of database upgrade 30788:20190626:213252.694 completed 9% of database upgrade 30788:20190626:213253.316 completed 10% of database upgrade 30788:20190626:213253.792 completed 11% of database upgrade 30788:20190626:213253.827 completed 12% of database upgrade 30788:20190626:213253.832 completed 13% of database upgrade 30788:20190626:213253.855 completed 14% of database upgrade 30788:20190626:213253.888 completed 15% of database upgrade 30788:20190626:213253.897 completed 16% of database upgrade 30788:20190626:213253.911 completed 17% of database upgrade 30788:20190626:213253.922 completed 18% of database upgrade 30788:20190626:213253.932 completed 19% of database upgrade 30788:20190626:213253.948 completed 20% of database upgrade 30788:20190626:213253.954 completed 21% of database upgrade 30788:20190626:213253.965 completed 22% of database upgrade 30788:20190626:213253.983 completed 23% of database upgrade 30788:20190626:213253.989 completed 24% of database upgrade 30788:20190626:213253.998 completed 25% of database upgrade 30788:20190626:213254.012 completed 26% of database upgrade 30788:20190626:213254.019 completed 27% of database upgrade 30788:20190626:213254.029 completed 28% of database upgrade 30788:20190626:213254.046 completed 29% of database upgrade 30788:20190626:213254.058 completed 30% of database upgrade 30788:20190626:213254.075 completed 31% of database upgrade 30788:20190626:213254.086 completed 32% of database upgrade 30788:20190626:213254.097 completed 33% of database upgrade 30788:20190626:213254.101 completed 34% of database upgrade 30788:20190626:213254.105 completed 35% of database upgrade 30788:20190626:213254.108 completed 36% of database upgrade 30788:20190626:213254.130 completed 37% of database upgrade 30788:20190626:213254.138 completed 38% of database upgrade 30788:20190626:213254.157 completed 39% of database upgrade 30788:20190626:213254.177 completed 40% of database upgrade 30788:20190626:213254.195 completed 41% of database upgrade 30788:20190626:213254.205 completed 42% of database upgrade 30788:20190626:213254.215 completed 43% of database upgrade 30788:20190626:213254.219 completed 44% of database upgrade 30788:20190626:213256.229 completed 45% of database upgrade 30788:20190626:213256.810 completed 46% of database upgrade 30788:20190626:213257.205 completed 47% of database upgrade 30788:20190626:213259.141 completed 48% of database upgrade 30788:20190626:213259.148 completed 49% of database upgrade 30788:20190626:213300.869 completed 50% of database upgrade 30788:20190626:213300.875 completed 51% of database upgrade 30788:20190626:213300.888 completed 52% of database upgrade 30788:20190626:213300.913 completed 53% of database upgrade 30788:20190626:213300.919 completed 54% of database upgrade 30788:20190626:213300.931 completed 55% of database upgrade 30788:20190626:213300.943 completed 56% of database upgrade 30788:20190626:213300.954 completed 57% of database upgrade 30788:20190626:213300.974 completed 58% of database upgrade 30788:20190626:213300.986 completed 59% of database upgrade 30788:20190626:213300.997 completed 60% of database upgrade 30788:20190626:213301.007 completed 61% of database upgrade 30788:20190626:213301.018 completed 62% of database upgrade 30788:20190626:213301.029 completed 63% of database upgrade 30788:20190626:213301.041 completed 64% of database upgrade 30788:20190626:213301.052 completed 65% of database upgrade 30788:20190626:213301.057 completed 66% of database upgrade 30788:20190626:213301.065 completed 67% of database upgrade 30788:20190626:213301.082 completed 68% of database upgrade 30788:20190626:213301.323 completed 69% of database upgrade 30788:20190626:213301.392 completed 70% of database upgrade 30788:20190626:213301.424 completed 71% of database upgrade 30788:20190626:213301.438 completed 72% of database upgrade 30788:20190626:213301.445 completed 73% of database upgrade 30788:20190626:213301.459 completed 74% of database upgrade 30788:20190626:213301.466 completed 75% of database upgrade 30788:20190626:213301.480 completed 76% of database upgrade 30788:20190626:213301.486 completed 77% of database upgrade 30788:20190626:213301.496 completed 78% of database upgrade 30788:20190626:213301.503 completed 79% of database upgrade 30788:20190626:213301.510 completed 80% of database upgrade 30788:20190626:213301.517 completed 81% of database upgrade 30788:20190626:213301.536 completed 82% of database upgrade 30788:20190626:213301.556 completed 83% of database upgrade 30788:20190626:213301.585 completed 84% of database upgrade 30788:20190626:213301.590 completed 85% of database upgrade 30788:20190626:213301.640 completed 86% of database upgrade 30788:20190626:213301.699 completed 87% of database upgrade 30788:20190626:213301.718 completed 88% of database upgrade 30788:20190626:213301.918 completed 89% of database upgrade 30788:20190626:213302.407 completed 90% of database upgrade 30788:20190626:213302.422 completed 91% of database upgrade 30788:20190626:213302.425 completed 92% of database upgrade 30788:20190626:213302.428 completed 93% of database upgrade 30788:20190626:213302.431 completed 94% of database upgrade 30788:20190626:213302.434 completed 95% of database upgrade 30788:20190626:213302.437 completed 96% of database upgrade 30788:20190626:213302.440 completed 97% of database upgrade 30788:20190626:213302.455 completed 98% of database upgrade 30788:20190626:213302.496 completed 99% of database upgrade 30788:20190626:213302.501 completed 100% of database upgrade 30788:20190626:213302.501 database upgrade fully completed 30788:20190626:213303.154 server #0 started [main process] 30799:20190626:213303.155 server #1 started [configuration syncer #1] 30800:20190626:213303.156 server #2 started [alerter #1] 30801:20190626:213303.157 server #3 started [alerter #2] 30802:20190626:213303.157 server #4 started [alerter #3] 30803:20190626:213303.158 server #5 started [housekeeper #1] 30804:20190626:213303.158 server #6 started [timer #1] 30805:20190626:213303.159 server #7 started [http poller #1] 30806:20190626:213303.159 server #8 started [discoverer #1] 2.zabbix3.4升級到zabbix4.0 參考:https://www.zabbix.com/documentation/4.0/zh/manual/installation/upgrade/sources 獲取zabbix4.0.10源碼 https://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/4.0.10/zabbix-4.0.10.tar.gz # 編譯安裝zabbix4.0.10 ./configure --prefix=/usr/local/zabbix4.0.10 --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --enable-java Zabbix server 升級步驟 1.停止 Zabbix 進程 /etc/init.d/zabbix_server stop 2.備份當前的數據庫 這是非常重要的步驟。升級前請確保備份了數據庫。如果升級失敗(因磁盤空間不足、斷電或其他意外導致的升級失敗),備份的數據庫將大有幫助。 3.備份配置文件、PHP 文件和 Zabbix 二進制文件 在升級前請確保備份了配置文件、PHP 文件和 Zabbix 二進制文件。 # 刪除軟連接 [root@zabbix4_clone:/usr/local]# ll zabbix lrwxrwxrwx 1 root root 13 Jun 26 21:28 zabbix -> zabbix-3.4.15 [root@zabbix4_clone:/usr/local]# rm -f zabbix 4.從源代碼包安裝新的 Zabbix server4.0.10 5.檢查 Zabbix server 配置文件的參數 在新版本中,Zabbix server 的配置文件發生了一些變化 [root@zabbix4_clone:/usr/local]# ln -s zabbix4.0.10 zabbix [root@zabbix4_clone:/usr/local]# egrep -v '^#|^$' zabbix/etc/zabbix_server.conf ListenPort=10051 LogFile=/var/log/zabbix/zabbix_server.log LogFileSize=10 DBHost=192.168.254.200 # 此時連接的是zabbix3.4的數據庫(即從3.2升級到3.4的數據庫) DBName=zabbix DBUser=zabbix DBPassword=zabbix # 密碼也是zabbix3.4的密碼 DBSocket=/tmp/mysql.sock DBPort=3306 StartPollers=30 StartTrappers=30 StartVMwareCollectors=20 VMwareFrequency=20 VMwarePerfFrequency=20 VMwareCacheSize=64M VMwareTimeout=30 ListenIP=0.0.0.0 HousekeepingFrequency=12 CacheSize=256M Timeout=15 AlertScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts ExternalScripts=/usr/local/zabbix/share/zabbix/externalscripts LogSlowQueries=3000 StartProxyPollers=20 6.啟動新的 Zabbix 進程 啟動新的 Zabbix 進程。檢查日志文件以查看進程是否成功啟動。 31846:20190626:215155.763 Starting Zabbix Server. Zabbix 4.0.10 (revision cc25224816). 31846:20190626:215155.763 ****** Enabled features ****** 31846:20190626:215155.763 SNMP monitoring: YES 31846:20190626:215155.763 IPMI monitoring: NO 31846:20190626:215155.763 Web monitoring: YES 31846:20190626:215155.763 VMware monitoring: YES 31846:20190626:215155.763 SMTP authentication: YES 31846:20190626:215155.764 Jabber notifications: NO 31846:20190626:215155.764 Ez Texting notifications: YES 31846:20190626:215155.764 ODBC: NO 31846:20190626:215155.764 SSH2 support: NO 31846:20190626:215155.764 IPv6 support: YES 31846:20190626:215155.764 TLS support: NO 31846:20190626:215155.764 ****************************** 31846:20190626:215155.764 using configuration file: /usr/local/zabbix4.0.10/etc/zabbix_server.conf 31846:20190626:215155.776 current database version (mandatory/optional): 03040000/03040007 31846:20190626:215155.776 required mandatory version: 04000000 31846:20190626:215155.776 optional patches were found 31846:20190626:215155.776 starting automatic database upgrade 31846:20190626:215155.823 completed 0% of database upgrade 31846:20190626:215155.825 completed 1% of database upgrade 31846:20190626:215155.958 completed 2% of database upgrade 31846:20190626:215155.971 completed 3% of database upgrade 31846:20190626:215155.991 completed 4% of database upgrade 31846:20190626:215156.002 completed 5% of database upgrade 31846:20190626:215156.016 completed 6% of database upgrade 31846:20190626:215156.022 completed 7% of database upgrade 31846:20190626:215156.036 completed 8% of database upgrade 31846:20190626:215156.048 completed 9% of database upgrade 31846:20190626:215156.056 completed 10% of database upgrade 31846:20190626:215156.058 completed 11% of database upgrade 31846:20190626:215156.060 completed 12% of database upgrade 31846:20190626:215156.065 completed 13% of database upgrade 31846:20190626:215156.070 completed 14% of database upgrade 31846:20190626:215156.076 completed 15% of database upgrade 31846:20190626:215156.108 completed 16% of database upgrade 31846:20190626:215156.111 completed 17% of database upgrade 31846:20190626:215156.116 completed 18% of database upgrade 31846:20190626:215156.119 completed 19% of database upgrade 31846:20190626:215156.121 completed 20% of database upgrade 31846:20190626:215156.126 completed 21% of database upgrade 31846:20190626:215156.133 completed 22% of database upgrade 31846:20190626:215156.145 completed 23% of database upgrade 31846:20190626:215156.152 completed 24% of database upgrade 31846:20190626:215201.414 completed 99% of database upgrade 31846:20190626:215201.456 completed 100% of database upgrade 31846:20190626:215201.456 database upgrade fully completed 自此,zabbix3.2升級到zabbix4.0成功