ZABBIX4.0升級5.0 & ES6.1升級7.0

升級方案

影響範圍:

升級期間,不會影響到現有的系統,系統將保持正常的運行,升級完成後,將進行一段時間的可用性測試,待系統穩定後將替換生產上的監控。php

升級方法:

本次升級採用藍綠部署的方式,先在測試環境從新部署一套4.0,將原有的系統配置文件導入到測試環境中去,而後再經過從4.0升級到5.0的方法來實現。因爲5.0較4.0相比變化較大,數據庫中表數量和表字段較4.0有些變化,直接安裝5.0再導入4.0的庫會致使數據庫數據導入失敗。html

升級後的風險:

因爲官方ZABBIX5.0發佈時間短,ZABBIX5.0中可能會存在一些bug,後期官方還會進行一些小的升級來修復bug前端

升級原則:

  • 新搭建的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源node

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 's@repo.zabbix.com@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.sqlmysql

ZABBIX4.0升級5.0 & ES6.1升級7.0

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;

還須要更新配置文件linux

vim /etc/zabbix/web/zabbix.conf.php
$DB['DOUBLE_IEEE754'] = true;

更新完以後重啓zabbix-servergit

systemctl restart zabbix-server

ZABBIX4.0升級5.0 & ES6.1升級7.0

升級Elasticsearch

zabbix5.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.htmlweb

1.關閉Zabbix對接ES

zabbix5.0支持7.x的ES,ES在升級成功以前先暫時中止歷史數據到ES的寫入,改用MySQL存儲
將對接ES的部分註釋掉sql

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.4.0/config/elasticsearch.yml /elasticsearch-7.0.1/config/elasticsearch.yml

修改後的配置文件以下,第一次啓動集羣時須要在集羣中定義cluster.initial_master_nodes,爲一組具備master節點資格的節點
ZABBIX4.0升級5.0 & ES6.1升級7.0
5.啓動全部節點

su elker
./elasticsearch-7.0.1/bin/elasticsearch

查看節點狀態,能夠看到已經升級到7.0
ZABBIX4.0升級5.0 & ES6.1升級7.0
查看索引起現之前的索引也還在
ZABBIX4.0升級5.0 & ES6.1升級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

歡迎關注我的公號「運維開發故事」
ZABBIX4.0升級5.0 & ES6.1升級7.0

相關文章
相關標籤/搜索