1 环境描述
zabbix server:yum安装的4.4.1版本,172.16.212.77
zabbix web:docker安装的4.4.1版本,172.16.212.77
zabbix proxy:docker安装的4.4.1版本,172.16.212.88
zabbix agent:yum安装的4.4.1版本,所有节点上都安装
mysql:yum安装的5.7版本,172.16.212.213(server用)和172.16.212.88(proxy用)上
所有节点都是Centos7
拓扑图
2 搭建4.4.1环境
2.1 172.16.212.213/88上安装配置数据库
#安装mysql5.7
wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
yum -y install mysql57-community-release-el7-10.noarch.rpm
yum -y install mysql-community-server
systemctl start mysqld.service
#获取临时密码
grep "password" /var/log/mysqld.log
#登录数据库并修改root密码
mysql -uroot -p
#使用弱密码的话还要执行下面两句,用强密码的话不用执行
set global validate_password_policy=LOW;
set global validate_password_length=6;
#修改密码
ALTER USER 'root'@'%' IDENTIFIED BY 'new password';
#登录到数据库中创建zabbix数据库和授权用户
mysql -uroot -p
create database zabbix character set utf8 collate utf8_bin;
create user zabbix@'%' identified by 'zabbix';
grant all privileges on zabbix.* to zabbix@'%';
2.2 172.16.212.77上安装配置server、web和agent
#安装server和agent
rpm -Uvh https://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm
yum clean all
yum install zabbix-server-mysql zabbix-agent
#初始化数据库
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -h 172.16.212.213 -uzabbix -p zabbix
#配置server
vim /etc/zabbix/zabbix_server.conf
DBHost=172.16.212.213
DBUser=zabbix
DBName=zabbix
DBPassword=zabbix
#配置agent
vim /etc/zabbix/zabbix_agent.conf
Server=172.16.212.77
ServerActive=172.16.212.77
Hostname=agent77
#启动服务
systemctl start zabbix-server zabbix-agent
systemctl enable zabbix-server zabbix-agent
#安装web
docker run --restart=always -d \
--name zabbix-web-nginx-mysql-4.4.1 \
--env ZBX_SERVER_HOST=127.0.0.1 \
--env ZBX_SERVER_PORT=10051 \
--env DB_SERVER_HOST=172.16.212.213 \
--env DB_SERVER_PORT=3306 \
--env MYSQL_USER=zabbix \
--env MYSQL_PASSWORD="zabbix" \
--env MYSQL_DATABASE="zabbix" \
--env PHP_TZ="Asia/Shanghai" \
--env ZBX_SERVER_NAME="Zabbix server" \
--env ZBX_MEMORYLIMIT=256M \
--net=host \
-p 80:80/tcp \
-v /data/docker/zabbix/DejaVuSans.ttf:/usr/share/zabbix/fonts/graphfont.ttf:ro \
docker.io/zabbix/zabbix-web-nginx-mysql:alpine-4.4.1
此时已经可以访问 http://172.16.212.77,用户名Admin,密码zabbix
改一下agent77的配置为:
等观察到实时数据再进行下一步~
2.3 172.16.212.88上安装配置proxy和agent
#proxy
docker run --restart=always -d \
--name zabbix-proxy-4.4.1 \
-e DB_SERVER_HOST="127.0.0.1" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix" \
-e ZBX_HOSTNAME="proxy" \
-e ZBX_SERVER_HOST="172.16.212.77" \
-e ZBX_PROXYMODE=1 \
-e ZBX_CACHESIZE=512M \
-e PHP_TZ="Asia/Shanghai" \
-p 10051:10051 \
--net=host \
-d zabbix/zabbix-proxy-mysql:alpine-4.4.1
#agent
rpm -Uvh https://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm
yum clean all
yum install zabbix-agent -y
vim /etc/zabbix/zabbix_agent.conf
Server=172.16.212.88
ServerActive=172.16.212.88
Hostname=agent88
systemctl start zabbix-agent
systemctl enable zabbix-agent
2.4 172.16.212.213上安装配置agent
rpm -Uvh https://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm
yum clean all
yum install zabbix-agent -y
vim /etc/zabbix/zabbix_agent.conf
Server=172.16.212.88
ServerActive=172.16.212.88
Hostname=agent213
systemctl start zabbix-agent
systemctl enable zabbix-agent
2.5 页面配置自动注册主机
配置好了之后等了好一段时间ZBX才变成Available,一开始proxy一直报找不到agent88和agent213。后面应该是自动刷新之后就不报错了。
3 升级流程
3.1 查询官方升级须知
升级注意事项
升级顺序
web——server——proxy——agent
3.2 升级web
docker stop zabbix-web-nginx-mysql-4.4.1
docker run --restart=always \
--name zabbix-web-nginx-mysql-5.0.1 \
--env ZBX_SERVER_HOST=127.0.0.1 \
--env ZBX_SERVER_PORT=10051 \
--env DB_SERVER_HOST=172.16.212.213 \
--env DB_SERVER_PORT=3306 \
--env MYSQL_USER=zabbix \
--env MYSQL_PASSWORD="zabbix" \
--env MYSQL_DATABASE="zabbix" \
--env PHP_TZ="Asia/Shanghai" \
--env ZBX_SERVER_NAME="server" \
--env ZBX_MEMORYLIMIT=256M \
--net=host \
-p 80:80/tcp \
-v /data/docker/zabbix/DejaVuSans.ttf:/usr/share/zabbix/fonts/graphfont.ttf:ro \
-d docker.io/zabbix/zabbix-web-nginx-mysql:alpine-5.0.1
升级之后访问web页面的端口是8080,原来的80端口已经不监听了。
由于server还没有升级到5.0,所以页面报错如下:
3.3 升级server
systemctl stop zabbix-server
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
yum clean all
yum makecache
yum upgrade zabbix-server -y
systemctl start zabbix-server
访问页面查看状态:
等了一会之后,agent都可用了,说明server5.0与proxy4.4和agent4.4兼容
查看server的log:
查看proxy的log:
过了一会查看页面,已经没有连不上agent的告警了
也可以拿到数据了,进行下一步吧!
3.4 升级proxy
docker stop zabbix-proxy-4.4.1
docker run --restart=always \
--name zabbix-proxy-5.0.1 \
-e DB_SERVER_HOST="127.0.0.1" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix" \
-e ZBX_HOSTNAME="proxy" \
-e ZBX_SERVER_HOST="172.16.212.77" \
-e ZBX_PROXYMODE=1 \
-e ZBX_CACHESIZE=512M \
-e PHP_TZ="Asia/Shanghai" \
-p 10051:10051 \
--net=host \
-d zabbix/zabbix-proxy-mysql:alpine-5.0.1
这个过程对监控几乎0影响,数据监控图都没有出现断点,当然也可能是因为我只有这几个节点,比较轻量。此外,说明了proxy5.0可以兼容agent4.4
3.5 升级agent
systemctl stop zabbix-agent
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
yum clean all
yum makecache
yum upgrade zabbix-agent -y
systemctl start zabbix-agent
查看agent213日志:
查看proxy日志:
查看web,监控数据是有断点的:
agent77日志:
查看server日志:
查看web页面:
升级结束~
4 遇到的问题
1)被proxy代理的agent端报了这个错
agent关闭主动模式就不报错了
2)但是如果agent就用主动模式呢?
vim /etc/zabbix/zabbix_agentd.conf
Server=172.16.212.88
StartAgents=1 #默认启动的zabbix_agentd pre-fork进程,如果为0的话表示停用被动模式
ServerActive=172.16.212.88