Zabbix 4.0升級5.0
一、升級方案
1影響範圍
升級期間,不會影響到現有的系統,系統將保持正常的運行,升級完成後,將進行一段時間的可用性測試,待系統穩定後將替換生產上的監控。
2升級方法
本次升級採用藍綠部署的方式,先在測試環境重新部署一套4.0,將原有的系統配置文件導入到測試環境中去,然後再通過從4.0升級到5.0的方法來實現。由於5.0較4.0相比變化較大,數據庫中表數量和表字段較4.0有些變化,直接安裝5.0再導入4.0的庫會導致數據庫數據導入失敗。
3升級後的風險
由於官方Zabbix 5.0發佈時間短,Zabbix 5.0中可能會存在一些bug,後期官方還會進行一些小的升級來修復bug。
4升級原則
新搭建的Zabbix 服務與原有4.0的環境應相同,各個服務的配置比照原有4.0的服務配置和Zabbix 監控的內容來設置。對一些組件要求的最低版本若不符合要求應進行升級,如Zabbix 中的MySQL服務內存使用過高,可在新環境中適當提高MySQL服務的內存配置。
做好網絡之間的隔離,切勿與原有網絡環境衝突。
保證原有數據可用,做好備份,可能會進入原4.0環境查看一些服務配置,切勿誤操作造成數據丟失或導致服務不可用。
主機命名規範,能通過主機名字瞭解單個主機的用途,ES集羣名字不要與現有集羣名字衝突。
升級後服務可用性要求,mysql主從同步須正常,ES各節點同步數據正常,ES收集歷史數據正常,集羣健康狀態爲green,Zabbix proxy與server連接正常,能正常獲取到數據,web服務採用lamp搭建。
二、升級ZABBIX
1 關閉Zabbix 進程和web進程
systemctl stop zabbix-server
systemctl stop zabbix-proxy
systemctl stop httpd php-fpm
2、備份4.0配置數據
mysqldump -uzabbix -p --single-transaction --master-data=2 --databases zabbix > olddata.sql
# mkdir /opt/zabbix-backup/
# cp /etc/zabbix/zabbix_server.conf /opt/zabbix-backup/
# cp /etc/httpd/conf.d/zabbix.conf /opt/zabbix-backup/
# cp -R /usr/share/zabbix/ /opt/zabbix-backup/
# cp -R /usr/share/doc/zabbix-* /opt/zabbix-backup/
3、更新存儲庫
由於使用官方源網絡不好,這裏我使用了阿里雲的Zabbix 源。
rm -rf /etc/repos.d/zabbix.repo
rpm -qa | grep zabbix-release && rpm -e zabbix-release
rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
sed -i '[email protected]@mirrors.aliyun.com/zabbix@g'/etc/yum.repos.d/zabbix.repo
yum clean all
yum makecache fast
4、升級Zabbix
yum upgrade zabbix-server-mysql zabbix-web-mysql zabbix-agent
5、升級Zabbix web前端
yum remove zabbix-web
yum install centos-release-scl -y
yum install https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/frontend/zabbix-web-deps-scl-5.0.0-1.el7.noarch.rpm
yum install https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/frontend/zabbix-web-5.0.0-1.el7.noarch.rpm
yum install https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/frontend/zabbix-web-mysql-scl-5.0.0-1.el7.noarch.rpm
yum install https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/frontend/zabbix-apache-conf-scl-5.0.0-1.el7.noarch.rpm
6、修改php時區
vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
php_value[date.timezone] = Asia/shanghai
7、啓動Zabbix
systemctl start zabbix-server zabbix-agent httpd rh-php72-php-fpm
8、啓動之後可能會遇到這個報錯
這裏還是沒有仔細看官方文檔,是因爲Zabbix 的歷史數據和趨勢數據的數值(浮點型)數據類型支持的精度更高,需要手動更新數據庫補丁,
MySQL的補丁地址爲:
https://git.zabbix.com/projects/ZBX/repos/zabbix/raw/database/mysql/double.sql
ALTER TABLE trends MODIFY value_min DOUBLE PRECISION DEFAULT '0.0000' NOT NULL, MODIFY value_avg DOUBLE PRECISION DEFAULT '0.0000' NOT NULL, MODIFY value_max DOUBLE PRECISION DEFAULT '0.0000' NOT NULL;
ALTER TABLE history MODIFY value DOUBLE PRECISION DEFAULT '0.0000' NOT NULL;
還需要更新配置文件
vim /etc/zabbix/web/zabbix.conf.php
$DB['DOUBLE_IEEE754'] = true;
更新完之後重啓Zabbix-server
systemctl restart zabbix-server
三、升級Elasticsearch
Zabbix 5.0 現在已經開始支持ES7.x版本,不再支持舊版本,升級後的好處之一就是ES從6.6版本開始支持索引生命週期管理,這樣對Zabbix 收集到的歷史數據索引管理更加方便。
ES新升級的這套Zabbix 可以直接部署7.x的ES集羣。如果還需要以前的歷史數據,可以將原來的歷史數據從原先集羣複製一份,可以使用ES的快照功能或者logstash進行復制。
下面介紹將ES的6.1升級到ES7.0的步驟,6.1-7.0.1不支持滾動升級,也就是必須要停止整個ES集羣來進行升級。
參考ES官方文檔:
https://www.elastic.co/guide/en/elasticsearch/reference/7.0/restart-upgrade.html
1、關閉Zabbix對接ES
Zabbix5.0支持7.x的ES,ES在升級成功之前先暫時停止歷史數據到ES的寫入,改用MySQL存儲。
將對接ES的部分註釋掉。
vim /etc/zabbix/web/zabbix.conf.php
//$HISTORY['url'] = 'http://192.168.179.134:9200';
//$HISTORY['types']=['uint','dbl','str','log','text'];
vim /etc/zabbix/zabbix_server.conf
#HistoryStorageURL=http://192.168.179.134:9200
#HistoryStorageTypes=uint,dbl,str,log,text
#HistoryStorageDateIndex=1
systemctl restart zabbix-server
2、禁用副本分片分配
PUT_cluster/settings
{
"persistent": {
"cluster.routing.allocation.enable": "primaries"
}
}
3、停止ES集羣下的所有節點
systemctl stop elasticsearch
4、升級所有節點
由於之前是使用二進制部署的,這裏我也使用二進制升級。
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.0.1-linux-x86_64.tar.gz
tar -zxvf elasticsearch-7.0.1-linux-x86_64.tar.gz
將6.1的配置文件覆蓋至7.0.1的config目錄。
cp /elasticsearch/elasticsearch-6.1.0/config/elasticsearch.yml /elasticsearch-7.0.1/config/elasticsearch.yml
修改後的配置文件如下,第一次啓動集羣時需要在集羣中定義。
cluster.initial_master_nodes,爲一組具有master節點資格的節點。
5、啓動所有節點
su elker
./elasticsearch-7.0.1/bin/elasticsearch
查看節點狀態,可以看到已經升級到7.0。
查看索引發現以前的索引也還在。
6、重新啓用分片分配
當主分片恢復完成,集羣狀態爲yellow後可以重新啓用分片分配。
PUT_cluster/settings
{
"persistent": {
"cluster.routing.allocation.enable": null
}
}
7、修改配置文件使Zabbix對接ES
vim /etc/zabbix/web/zabbix.conf.php
$HISTORY['url'] = 'http://192.168.179.134:9200';
$HISTORY['types']=['uint','dbl','str','log','text'];
vim /etc/zabbix/zabbix_server.conf
HistoryStorageURL=http://192.168.179.134:9200 HistoryStorageTypes=uint,dbl,str,log,text
HistoryStorageDateIndex=1
systemctl restart zabbix-server
參考鏈接 :
Zabbix 4.0升級5.0 &&ES 6.1升級7.0 :https://mp.weixin.qq.com/s/seqiel-5RFfISGyGGQGY8Q