1 調研
1)Zabbix server 和proxies必須屬於同一個主版本;
2)Zabbix server and proxies 建議在升級前先停止運行;
3)舊版本的 proxies 不再向新版本的servers報告,即不兼容;
4)新版本的agents 與舊版本的Zabbix server不再兼容;
5)新版本的zabbix server 和proxy可以兼容舊版本的zabbix-agent;
2 操作
2.1 準備工作
- 全量備份數據庫,參照 https://blog.csdn.net/qq_35550345/article/details/103588917
- 停止zabbix-server和zabbix-proxy
- 增量備份數據庫,參照 https://blog.csdn.net/qq_35550345/article/details/103588917
- 備份配置文件
- 準備好yum源,如果可以通公網則網絡正常即可,如果不可以通公網則須自己創建內網repo,自行百度。
2.2 升級
推薦的升級順序:zabbix-server —— zabbix-proxy —— zabbix-agent
- zabbix-server
直接yum安裝升級即可!
- zabbix web
#停止老的版本
docker stop zabbix-web-nginx-mysql-4.0.3
#運行新的版本
sudo 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=10.0.0.22 \
--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
#查看日誌
docker logs --tail=40 -f zabbix-web-nginx-mysql:alpine-4.4.1
- zabbix-proxy
#停止老的版本
docker stop zabbix-proxy-4.4.1
#運行新的版本
sudo docker run --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="zabbix-proxy" \
-e ZBX_SERVER_HOST="10.0.0.22" \
-e ZBX_PROXYMODE=1 \
-e ZBX_CACHESIZE=512M \
-e TZ="Asia/Shanghai" \
--net=host \
-d zabbix/zabbix-proxy-mysql:alpine-4.4.1
#查看日誌
docker logs --tail=40 -f zabbix-proxy-mysql:alpine-4.4.1
- zabbix-agent
使用ansible劇本批量升級
cat /etc/ansible/update_zabbix_agent.yml
---
- name: "update zabbix-agent"
hosts: "{{ host_name }}"
become: True
roles:
- "update_zabbix_agent"
cat /etc/ansible/roles/update_zabbix_agent/tasks/main.yml
---
- name: "clean all"
shell: yum clean all
- name: "makecache"
shell: yum makecache
- name: "update zabbix-agent"
shell: yum -y update zabbix-agent
- name: copy zabbix-agent.conf
template:
src: zabbix_agentd.conf
dest: /etc/zabbix/zabbix_agentd.conf
- name: "restart zabbix-agent"
systemd:
name: zabbix-agent
state: restarted
enabled: yes
- systemd:
name: zabbix-agent
state: started
- name: "check the version of zabbix-agent"
shell: zabbix_agentd -V
register: version
- debug:
var: version
cat /etc/ansible/roles/update_zabbix_agent/templates/zabbix_agentd.conf | grep -v "^#"
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server={{ zabbix_address }}
ServerActive={{ zabbix_address }}
Hostname={{ hostname_replaced }}
Include=/etc/zabbix/zabbix_agentd.d/*.conf
ansible-playbook執行劇本
ansible-playbook /etc/ansible/update_zabbix_agent.yml \
-i /etc/ansible/inventory/test \
-e "host_name=agent01" \
-e "zabbix_address=10.0.0.22" \
-e "hostnameAlias=test-agent"
cat /etc/ansible/inventory/test
[agent]
10.0.0.11
10.0.0.12
10.0.0.13