前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Zabbix 4.0升级5.0 &&ES 6.1升级7.0

Zabbix 4.0升级5.0 &&ES 6.1升级7.0

作者头像
没有故事的陈师傅
发布2020-06-16 15:08:33
2.2K0
发布2020-06-16 15:08:33
举报
文章被收录于专栏:运维开发故事运维开发故事

此身一往知何处,三界茫茫愁杀人

升级方案

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

升级原则

  1. 新搭建的Zabbix 服务与原有4.0的环境应相同,各个服务的配置比照原有4.0的服务配置和Zabbix 监控的内容来设置。对一些组件要求的最低版本若不符合要求应进行升级,如Zabbix 中的MySQL服务内存使用过高,可在新环境中适当提高MySQL服务的内存配置。
  2. 做好网络之间的隔离,切勿与原有网络环境冲突。
  3. 保证原有数据可用,做好备份,可能会进入原4.0环境查看一些服务配置,切勿误操作造成数据丢失或导致服务不可用。
  4. 主机命名规范,能通过主机名字了解单个主机的用途,ES集群名字不要与现有集群名字冲突。
  5. 升级后服务可用性要求,mysql主从同步须正常,ES各节点同步数据正常,ES收集历史数据正常,集群健康状态为green,Zabbix proxy与server连接正常,能正常获取到数据,web服务采用lamp搭建。

升级ZABBIX

1

关闭Zabbix 进程和web进程

代码语言:javascript
复制
systemctl stop zabbix-server
systemctl stop zabbix-proxy
systemctl stop httpd php-fpm

2

备份4.0配置数据

代码语言:javascript
复制
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 源。

代码语言:javascript
复制
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

代码语言:javascript
复制
yum upgrade zabbix-server-mysql zabbix-web-mysql zabbix-agent

5

升级Zabbix web前端

代码语言:javascript
复制
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时区

代码语言:javascript
复制
vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
php_value[date.timezone] = Asia/shanghai

7

启动Zabbix

代码语言:javascript
复制
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

代码语言:javascript
复制
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;

还需要更新配置文件

代码语言:javascript
复制
vim /etc/zabbix/web/zabbix.conf.php
$DB['DOUBLE_IEEE754'] = true;

更新完之后重启Zabbix-server

代码语言:javascript
复制
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的部分注释掉。

代码语言:javascript
复制
vim /etc/zabbix/web/zabbix.conf.php
//$HISTORY['url'] = 'http://192.168.179.134:9200';
//$HISTORY['types']=['uint','dbl','str','log','text'];
代码语言:javascript
复制
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

禁用副本分片分配

代码语言:javascript
复制
PUT_cluster/settings
{  
 "persistent": {    
 "cluster.routing.allocation.enable": "primaries"
 }
}

3

停止ES集群下的所有节点

代码语言:javascript
复制
systemctl stop elasticsearch

4

升级所有节点

由于之前是使用二进制部署的,这里我也使用二进制升级。

代码语言:javascript
复制
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目录。

代码语言:javascript
复制
cp /elasticsearch/elasticsearch-6.1.0/config/elasticsearch.yml /elasticsearch-7.0.1/config/elasticsearch.yml

修改后的配置文件如下,第一次启动集群时需要在集群中定义。

cluster.initial_master_nodes,为一组具有master节点资格的节点。

5

启动所有节点

代码语言:javascript
复制
su elker
./elasticsearch-7.0.1/bin/elasticsearch

查看节点状态,可以看到已经升级到7.0。

查看索引发现以前的索引也还在。

6

重新启用分片分配

当主分片恢复完成,集群状态为yellow后可以重新启用分片分配。

代码语言:javascript
复制
PUT_cluster/settings
{  
  "persistent": {    
  "cluster.routing.allocation.enable": null
 }
}

7

修改配置文件使Zabbix对接ES

代码语言:javascript
复制
vim /etc/zabbix/web/zabbix.conf.php
$HISTORY['url'] = 'http://192.168.179.134:9200'; 
$HISTORY['types']=['uint','dbl','str','log','text'];
代码语言:javascript
复制
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

欢迎各位一起交流

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-06-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维开发故事 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档