Welcome!
欢迎光临!

Zabbix前后端分离式部署升级

环境说明:

zabbix-server 7.0安装在一台Linux上使用zabbix仓库安装,前端文件使用宝塔部署(或者其他Web应用服务器部署)。本文是对于非同一台机器上的Zabbix升级过程。

⚠注意:在任何有可能损坏数据的情况下,必须要进行备份或快照!

升级Zabbix-Server

Zabbix下载页面根据当前系统和环境选择命令

根据我当前的系统AlmaLinux9、MySQL、Nginx选择仓库为https://repo.zabbix.com/zabbix/7.2/release/alma/9/noarch/zabbix-release-latest-7.2.el9.noarch.rpm

通过命令升级,这里主要分为3步:①添加最新版本Zabbix仓库。②清理dnf缓存。③更新软件包(你也可以只更新Zabbix)。

rpm -Uvh https://repo.zabbix.com/zabbix/7.2/release/alma/9/noarch/zabbix-release-latest-7.2.el9.noarch.rpm
dnf clean all
dnf update -y

升级完成之后查看Zabbix-Server的运行情况:

[root@ZabbixServer ~]# systemctl status zabbix-server.service
● zabbix-server.service - Zabbix Server
     Loaded: loaded (/usr/lib/systemd/system/zabbix-server.service; enabled; preset: disabled)
     Active: active (running) since Thu 2025-04-10 01:11:18 CST; 5 days ago
    Process: 177620 ExecStart=/usr/sbin/zabbix_server -c $CONFFILE (code=exited, status=0/SUCCESS)
   Main PID: 177622 (zabbix_server)
      Tasks: 78 (limit: 48340)
     Memory: 398.2M
        CPU: 3h 35min 53.941s
     CGroup: /system.slice/zabbix-server.service
             ├─177622 /usr/sbin/zabbix_server -c /etc/zabbix/zabbix_server.conf
             ├─177644 "/usr/sbin/zabbix_server: ha manager"
             ├─177645 "/usr/sbin/zabbix_server: service manager #1 [processed 0 events, updated 0 event tags, deleted 0 problems, synced 0 service updates, idle 5.005325 sec during 5.005451 sec]"
             ├─177646 "/usr/sbin/zabbix_server: configuration syncer [synced configuration in 0.038076 sec, idle 10 sec]"
             ├─177664 "/usr/sbin/zabbix_server: alert manager #1 [sent 0, failed 0 alerts, idle 5.005786 sec during 5.005901 sec]"
             ├─177665 "/usr/sbin/zabbix_server: alerter #1 started"
             ├─177666 "/usr/sbin/zabbix_server: alerter #2 started"
             ├─177667 "/usr/sbin/zabbix_server: alerter #3 started"
             ├─177668 "/usr/sbin/zabbix_server: preprocessing manager #1 [queued 65, processed 352 values, idle 4.995278 sec during 5.005454 sec]"
             ├─177669 "/usr/sbin/zabbix_server: lld manager #1 [processed 0 LLD rules, idle 5.005411sec during 5.005577 sec]"
             ├─177670 "/usr/sbin/zabbix_server: lld worker #1 [processed 1 LLD rules, idle 318.499155 sec during 318.539707 sec]"
             ├─177671 "/usr/sbin/zabbix_server: lld worker #2 [processed 1 LLD rules, idle 66.833412 sec during 66.872666 sec]"
             ├─177672 "/usr/sbin/zabbix_server: housekeeper [deleted 3854 hist/trends, 0 items/triggers, 612 events, 0 sessions, 0 alarms, 0 audit items, 0 autoreg_host, 0 records in 0.641957 sec, idle for 1 hour(>
             ├─177673 "/usr/sbin/zabbix_server: timer #1 [updated 0 hosts, suppressed 0 events in 0.002068 sec, idle 59 sec]"
             ├─177674 "/usr/sbin/zabbix_server: http poller #1 [got 0 values in 0.000019 sec, getting values]"
             ├─177675 "/usr/sbin/zabbix_server: browser poller #1 [got 0 values in 0.000044 sec, idle 5 sec]"
             ├─177676 "/usr/sbin/zabbix_server: discovery manager #1 [processing 0 rules, 0 unsaved checks]"
             ├─177677 "/usr/sbin/zabbix_server: history syncer #1 [processed 1 values, 1 triggers in 0.003739 sec, idle 1 sec]"
             ├─177678 "/usr/sbin/zabbix_server: history syncer #2 [processed 0 values, 0 triggers in 0.000027 sec, idle 1 sec]"
             ├─177679 "/usr/sbin/zabbix_server: history syncer #3 [processed 0 values, 0 triggers in 0.000033 sec, idle 1 sec]"
             ├─177680 "/usr/sbin/zabbix_server: history syncer #4 [processed 0 values, 0 triggers in 0.000012 sec, idle 1 sec]"
             ├─177681 "/usr/sbin/zabbix_server: escalator #1 [processed 0 escalations in 0.002626 sec, idle 3 sec]"
             ├─177682 "/usr/sbin/zabbix_server: proxy poller #1 [exchanged data with 0 proxies in 0.000038 sec, idle 5 sec]"
             ├─177683 "/usr/sbin/zabbix_server: self-monitoring [processed data in 0.000070 sec, idle 1 sec]"
             ├─177684 "/usr/sbin/zabbix_server: task manager [processed 0 task(s) in 0.000869 sec, idle 5 sec]"
             ├─177685 "/usr/sbin/zabbix_server: poller #1 [got 3 values in 0.005984 sec, idle 1 sec]"
             ├─177686 "/usr/sbin/zabbix_server: poller #2 [got 0 values in 0.000052 sec, idle 1 sec]"
             ├─177687 "/usr/sbin/zabbix_server: poller #3 [got 0 values in 0.000041 sec, idle 1 sec]"
             ├─177688 "/usr/sbin/zabbix_server: poller #4 [got 0 values in 0.000069 sec, idle 1 sec]"
             ├─177689 "/usr/sbin/zabbix_server: poller #5 [got 0 values in 0.000050 sec, idle 1 sec]"
             ├─177690 "/usr/sbin/zabbix_server: unreachable poller #1 [got 0 values in 0.000049 sec, idle 5 sec]"
             ├─177691 "/usr/sbin/zabbix_server: trapper #1 [processed data in 0.000228 sec, waiting for connection]"
             ├─177692 "/usr/sbin/zabbix_server: trapper #2 [processed data in 0.000198 sec, waiting for connection]"
             ├─177693 "/usr/sbin/zabbix_server: trapper #3 [processed data in 0.000206 sec, waiting for connection]"
             ├─177694 "/usr/sbin/zabbix_server: trapper #4 [processed data in 0.000056 sec, waiting for connection]"
             ├─177695 "/usr/sbin/zabbix_server: trapper #5 [processed data in 0.000207 sec, waiting for connection]"
             ├─177696 "/usr/sbin/zabbix_server: icmp pinger #1 [got 3 values in 2.004884 sec, idle 5 sec]"
             ├─177697 "/usr/sbin/zabbix_server: alert syncer [queued 0 alerts(s), flushed 0 result(s) in 0.000001 sec, idle 1 sec]"
             ├─177698 "/usr/sbin/zabbix_server: history poller #1 [got 0 values in 0.000013 sec, idle 1 sec]"
             ├─177699 "/usr/sbin/zabbix_server: history poller #2 [got 0 values in 0.000022 sec, idle 1 sec]"
             ├─177700 "/usr/sbin/zabbix_server: history poller #3 [got 0 values in 0.000072 sec, idle 1 sec]"
             ├─177701 "/usr/sbin/zabbix_server: history poller #4 [got 1 values in 0.000114 sec, idle 1 sec]"
             ├─177709 "/usr/sbin/zabbix_server: history poller #5 [got 0 values in 0.000013 sec, idle 1 sec]"
             ├─177710 "/usr/sbin/zabbix_server: availability manager #1 [queued 0, processed 0 values, idle 5.189914 sec during 5.190063 sec]"
             ├─177711 "/usr/sbin/zabbix_server: trigger housekeeper [deleted 0 problems records in 0.001376 sec, idle for 60 second(s)]"
             ├─177712 "/usr/sbin/zabbix_server: odbc poller #1 [got 0 values in 0.000124 sec, idle 5 sec]"
             ├─177713 "/usr/sbin/zabbix_server: http agent poller #1 [got 0 values, queued 0 in 5 sec, awaiting 0]"
             ├─177720 "/usr/sbin/zabbix_server: agent poller #1 [got 173 values, queued 177 in 5 sec, awaiting 40]"
             ├─177722 "/usr/sbin/zabbix_server: snmp poller #1 [got 0 values, queued 0 in 5 sec, awaiting 0]"
             ├─177723 "/usr/sbin/zabbix_server: configuration syncer worker [synced 0, updated 0 item names in 0.001672 sec, idle]"
             ├─177726 "/usr/sbin/zabbix_server: internal poller #1 [got 2 values in 0.000114 sec, idle 4 sec]"
             └─177729 "/usr/sbin/zabbix_server: proxy group manager #1 started"

4月 10 01:11:18 ZabbixServer systemd[1]: Starting Zabbix Server...
4月 10 01:11:18 ZabbixServer systemd[1]: Started Zabbix Server.

[root@ZabbixServer ~]# zabbix_server -V
zabbix_server (Zabbix) 7.2.5
Revision d2eb5068f4b 27 March 2025, compilation time: Mar 27 2025 00:00:00

Copyright (C) 2025 Zabbix SIA
License AGPLv3: GNU Affero General Public License version 3 <https://www.gnu.org/licenses/>.
This is free software: you are free to change and redistribute it according to
the license. There is NO WARRANTY, to the extent permitted by law.

This product includes software developed by the OpenSSL Project
for use in the OpenSSL Toolkit (http://www.openssl.org/).

Compiled with OpenSSL 3.0.7 1 Nov 2022
Running with OpenSSL 3.2.2 4 Jun 2024

至此,Zabbix-Server和这台机器上的Zabbix-Agent已完成升级,接下来我们需要替换前端Web文件。

升级Zabbix Web

由于我们是分离式部署,需要进行一些手动的配置,分为以下几步:

下载Web文件

Download Zabbix sources下载和Zabbix-Server对应的源码文件,将压缩包中的ui文件夹存放至一个方便的地方以便上传至Web应用服务器(zabbix-release-7.2.zip\zabbix-release-7.2\ui\*

备份关键文件

需要提前备份的文件有:
数据库及参数配置文件:/www/wwwroot/你的zabbix网站/conf/zabbix.conf.php
参数定义文件:/www/wwwroot/你的zabbix网站/include/defines.inc.php(主要是如果原来你因为图形中的中文字符是白色框进行过字体替换那么需要备份这个文件。)
字体文件:根据实际情况进行备份,字体文件在/www/wwwroot/你的zabbix网站/assets/fonts目录下。
你可以根据网站目录的实际位置进行备份。

替换并启动Zabbix-Web

做好以上备份后即可进行替换,对于宝塔建议关闭防跨站攻击和堡塔网站加速,开启后可能会出现不可预料的问题。
替换后最好重启PHP与Nginx。

导入数据库更新

使用任何一种你喜欢的数据库连接工具连接到Zabbix的数据库,导入上方提到的Zabbix源码包中的数据库结构升级工具,一般在zabbix-release-7.2.zip\zabbix-release-7.2\database\mysql\option-patches下,如果没有的话可以到Zabbix project overview – ZABBIX GIT或GitHub的Zabbix页面找到下载。

升级模板文件

因为我们是手动升级,内置模板是存放在数据库中,而我们的手动升级没有涉及该部分,所以要利用Zabbix的API进行批量的模板导入。

准备模板文件

找到前面下载好的源码包,官网提供的源码包可能没有包含模板,我们还是去上方提到的Zabbix project overview – ZABBIX GIT或GitHub的Zabbix页面打包下载仓库,模板文件在zabbix-release-7.2.zip\zabbix-release-7.2\templates中,可以解压到任意目录等待操作。

新建管理员API

进入Zabbix前端页面,新建API,路径为用户-API tokens-创建API令牌

创建好后可以利用如下Python代码进行批量更新

import requests
import json
import os

ZABBIX_SERVER = "https://你的zabbix网站/api_jsonrpc.php"
API_TOKEN = "5db938a6b63348fcbf9bd7bxxxxxx4180a8768b2c4cb07e48f2b02de5a9fa"  # 这里填入你的 Zabbix API Token

TEMPLATE_DIR = r"D:\Users\xieya\Desktop\templates"  # 模板文件位置

headers = {
    "Content-Type": "application/json",
    "Authorization": f"Bearer {API_TOKEN}"  
}

def find_templates(directory):
    template_files = []
    for root, _, files in os.walk(directory):
        for file in files:
            if file.endswith(".yaml") or file.endswith(".xml"):  
                template_files.append(os.path.join(root, file))
    return template_files

def read_template(file_path):
    with open(file_path, "r", encoding="utf-8") as f:
        return f.read()

def import_templates():
    templates = find_templates(TEMPLATE_DIR)

    if not templates:
        print("❌ 未找到任何模板文件,请检查目录是否正确!")
        return

    for file_path in templates:
        template_content = read_template(file_path)

        payload = {
            "jsonrpc": "2.0",
            "method": "configuration.import",
            "params": {
                "format": "yaml" if file_path.endswith(".yaml") else "xml", 
                "rules": {
                    "templates": {"createMissing": True, "updateExisting": True}
                },
                "source": template_content
            },
            "id": 2 
        }

        response = requests.post(ZABBIX_SERVER, headers=headers, json=payload)
        print(f"✅ 导入 {file_path} 结果:", response.json())

print("🔍 开始批量导入 Zabbix 模板...")
import_templates()

如果代码执行无误,回显应该类似于这样

E:\PyCharmProjects\ntp\.venv\Scripts\python.exe E:\PyCharmProjects\ntp\1.py 
🔍 开始批量导入 Zabbix 模板...
✅ 导入 D:\Users\xieya\Desktop\templates\app\acronis\template_app_acronis_cyber_protect_cloud_http.yaml 结果: {'jsonrpc': '2.0', 'result': True, 'id': 2}
✅ 导入 D:\Users\xieya\Desktop\templates\app\activemq_jmx\template_app_activemq_jmx.yaml 结果: {'jsonrpc': '2.0', 'result': True, 'id': 2}
✅ 导入 D:\Users\xieya\Desktop\templates\app\apache_agent\template_app_apache_agent.yaml 结果: {'jsonrpc': '2.0', 'result': True, 'id': 2}
✅ 导入 D:\Users\xieya\Desktop\templates\app\apache_agent_active\template_app_apache_agent_active.yaml 结果: {'jsonrpc': '2.0', 'result': True, 'id': 2}
✅ 导入 D:\Users\xieya\Desktop\templates\app\apache_http\template_app_apache_http.yaml 结果: {'jsonrpc': '2.0', 'result': True, 'id': 2}
✅ 导入 D:\Users\xieya\Desktop\templates\app\aranet_http\template_app_aranet_http.yaml 结果: {'jsonrpc': '2.0', 'result': True, 'id': 2}
✅ 导入 D:\Users\xieya\Desktop\templates\app\ceph_agent2\template_app_ceph_agent2.yaml 结果: {'jsonrpc': '2.0', 'result': True, 'id': 2}
✅ 导入 D:\Users\xieya\Desktop\templates\app\certificate_agent2\template_app_certificate_agent2.yaml 结果: {'jsonrpc': '2.0', 'result': True, 'id': 2}
✅ 导入 D:\Users\xieya\Desktop\templates\app\certificate_agent2_active\template_app_certificate_agent2_active.yaml 结果: {'jsonrpc': '2.0', 'result': True, 'id': 2}
✅ 导入 D:\Users\xieya\Desktop\templates\app\cloudflare_http\template_app_cloudflare_http.yaml 结果: {'jsonrpc': '2.0', 'result': True, 'id': 2}
✅ 导入 D:\Users\xieya\Desktop\templates\app\consul_http\consul\template_consul_node_http.yaml 结果: {'jsonrpc': '2.0', 'result': True, 'id': 2}
✅ 导入 D:\Users\xieya\Desktop\templates\app\consul_http\consul_cluster\template_consul_cluster_http.yaml 结果: {'jsonrpc': '2.0', 'result': True, 'id': 2}
✅ 导入 D:\Users\xieya\Desktop\templates\app\controlm_http\template_app_controlm_http.yaml 结果: {'jsonrpc': '2.0', 'result': True, 'id': 2}
✅ 导入 D:\Users\xieya\Desktop\templates\app\docker\template_app_docker.yaml 结果: {'jsonrpc': '2.0', 'result': True, 'id': 2}

检查Zabbix模板更新状态

插件完成,原来的Zabbix模板是7.0版本,现在都已经升级到了仓库的内置模板最新版本。

赞(0)
未经允许不得转载:fuRyZ's Blog » Zabbix前后端分离式部署升级

评论 抢沙发

评论前必须登录!

 

登录

找回密码

注册