资讯 Zabbix 8.0 升级踩点:Allow list 空着从「放行」变「全禁」,HTTP 模板默认校验 TLS

2026-11-07 20:04:29

Zabbix 8.0 升级踩点:Allow list 空着从「放行」变「全禁」,HTTP 模板默认校验 TLS

Zabbix 8.0.0 于 2026-11-05 发布,接在 7.4.0 之后。下面是 7.4.x → 8.0.0 的升级说明,重点在破坏性变更,而不是新功能列表。

  • Release Notes:
  • What's new:
  • 升级步骤:
  • 项目仓库:

8.0 大致加了什么

主要三条线。APM:基于 OpenTelemetry,接收应用或 OTel collector 通过 OTLP/gRPC 送来的 traces / metrics / logs;Zabbix proxy 负责接收并写入数据源,proxy 配置里多了 APM 标签页;在 Administration > Data source 指定遥测数据源(ClickHouse),在 APM 菜单查看;触发器与图表里用新的 telemetry query item type 取数。相关参数和 item:

  • Zabbix server:TelemetryProvider、StartTelemetryQueryPollers
  • Zabbix proxy:TelemetryProvider、StartTelemetryQueryPollers、StartAPMCollector、APMListenIP、APMListenPort、APMTLSCAFile、APMTLSCertFile、APMTLSKeyFile
  • Zabbix frontend:$TELEMETRY_PROVIDERS[]
  • Zabbix proxy 编译选项:--with-apm
  • 监控遥测采集的内部 item:zabbix[apm,]

另外两条:ClickHouse 成为新的历史数据后端(官方给的说法是 10x 性能提升、更省空间);Complex event processing(CEP)关联引擎,支持事件去重、抑制、丢弃、根因分析和 JavaScript 可编程逻辑。再零散一些的还有 JSON 数据类型、SAML 默认开启签名、API 默认关闭。

下面按后果分三类:起不来的、权限变空的、模板静默失效的。

一、升级后服务直接起不来

数据库版本门槛

数据库原最低版本8.0 最低版本
MySQL / Percona8.0.308.4.0
MariaDB10.5.0010.11.00
PostgreSQL13.015.0
TimescaleDB2.13.02.20.0
Elasticsearch7.0.08.0.0

Elasticsearch 低于 8.0.0 时 Zabbix server 直接不启动,且不能用 AllowUnsupportedDBVersions 覆盖。也就是说,升级 Zabbix server 之前必须先把 ES 升上去,顺序不能反。

其它硬门槛

  • PHP 最低版本从 8.0.0 抬到 8.2.0。
  • Logback 最低版本从 1.5.16 抬到 1.5.25(Java gateway 相关)。
  • 不再支持 1.6 之前的 Zabbix agent:server/proxy 的 trapper 移除了旧版 plain-text 与 XML 协议,pre-1.6 agent 无法再上报。
  • TimescaleDB + JSON 类型:新的 history_json hypertable 必须手动配置,不会自动建。
  • MySQL 字符集:如果 Zabbix 的 MySQL 库是用 utf8mb3 字符集与 utf8mb3_bin 排序规则建的,强烈建议升级前转成 utf8mb4 / utf8mb4_bin,做法见 Repairing Zabbix database character set and collation。

插件侧

  • Ceph 插件改为可加载插件(loadable plugin),需要额外的安装步骤,见 Ceph 插件 readme。
  • MongoDB 插件改用 MongoDB Go Driver v2,要求 MongoDB 4.2+,不再支持 MongoDB 2.6–4.0。要监控 2.6–4.0 只能用旧版插件,旧版支持 2.6–5.3,可用于 Zabbix agent 2 6.0.0 及以上。
  • Oracle 插件配置里的 Plugins.Oracle.CallTimeout 不再生效,最长等待时间由 item timeout 决定。
  • MongoDB 插件中 tcp:// scheme 已弃用,为兼容旧配置保留。

二、权限变空:API 与认证

空 API allow list 的语义反转

这是最容易踩的一条。用户角色里 Allow list 选了、但一个方法都没列,现在表示拒绝所有 API 方法;以前这种空列表会被忽略,等于允许全部方法。

为保留既有访问,升级过程会给所有「选了 Allow list 但没列方法」的角色自动加上 * 通配符。所以升级完不是没事,而是权限暂时被放大成全部——必须去 Users > User roles 复查这些角色:把 * 换成角色实际需要的方法;如果该角色根本不需要 API 访问,就直接取消 Access to API 区块的 Enabled 勾选。

API 默认访问关闭

  • 新安装:所有角色的 API 访问默认关闭,包括新建角色与默认用户角色。
  • 已有安装:只有新建角色默认关闭。

Host interface API 方法移除

以下方法已移除,升级后会从现有用户角色的 Access to API 列表中消失:

hostinterface.create
hostinterface.update
hostinterface.delete
hostinterface.massadd
hostinterface.massremove

SAML 签名默认开启

SAML 认证(Users > Authentication)里所有签名选项——Messages、Assertions、AuthN requests、Logout requests、Logout responses——现在默认开启。新建 SAML 配置时,除非清掉这些签名选项,否则 SP private key 与 SP certificate 变成必填。已有 SAML 配置不受升级影响。

前端配置变量替换

$ALLOW_HTTP_AUTH 被 zabbix.conf.php 里的 $ZBX_FEATURE_FLAGS['http_auth_enabled'] feature flag 取代。

三、模板与过滤器静默失效

HTTP 类模板与媒体类型的 TLS 校验

连接 HTTPS 端点的模板与媒体类型现在默认校验对端 TLS 证书。影响面很宽:

  • 所有云与 API 监控模板,例如 Claude API by HTTP、Cloudflare by HTTP、Kubernetes Cluster by HTTP
  • 所有 webhook 媒体类型,例如 Slack、Jira、Telegram

自签证书、内部 CA 签发证书、证书链不全的端点,升级后会直接报校验失败。新宏 {$HTTP.TLS.VERIFY} 控制行为:

  • none:关闭校验
  • peer:只校验证书链与有效期
  • full:全量校验

注意升级 Zabbix 时模板与媒体类型不会被自动升级(避免覆盖你自定义的改动),需按模板升级说明手动升级或手动添加,否则改动不会落到你现有的模板上。

废弃宏移除

已移除替代
{ACK.DATE}{EVENT.UPDATE.DATE}
{ACK.MESSAGE}{EVENT.UPDATE.MESSAGE}
{ACK.TIME}{EVENT.UPDATE.TIME}
{EVENT.ACK.HISTORY}{EVENT.UPDATE.HISTORY}
{HOSTNAME}{HOST.HOST}
{IPADDRESS}{HOST.IP}
{PROFILE.*}{INVENTORY.*}
{TRIGGER.COMMENT}{TRIGGER.DESCRIPTION}
{TRIGGER.KEY}{ITEM.KEY}
{STATUS}{TRIGGER.STATUS}
{USER.ALIAS}{USER.USERNAME}

引用旧宏的触发器、动作、消息模板升级后会解析失败或渲染为空,属于不报错但结果不对的那类问题。

自定义主题 / 媒体类型命名冲突

新增三个预定义前端主题 Blue (classic)、Dark (classic)、Dark blue,以及新的 Push notification media type。若你已有名为 blue-classic-theme、dark-classic-theme、dark-blue-theme 的自定义主题,或有名为 Push notification 的媒体类型,升级前先改名。否则:

  • 预定义主题会覆盖自定义主题的样式表,而自定义图表颜色仍生效,结果是两套主题混在一起。
  • 现有媒体类型保持不变,但新的媒体类型不会被创建。

过滤参数移到 column options

随可自定义表格(customizable tables)功能,以下过滤参数从 filter 标签移到 column options,之前保存的收藏过滤标签会被重置,升级后要手动重配:

  • Monitoring > Hosts:Show suppressed problems
  • Monitoring > Latest data:Show tags、Tag name、Tag display priority、Show details
  • Monitoring > Problems:Show tags、Tag name、Tag display priority、Show operational data、Compact view、Show details、Show timeline、Highlight whole row

其余会静默改变行为的改动

  • Kubernetes 模板弃用,由 Kubernetes Cluster by HTTP 模板取代;旧模板为兼容已有配置保留。
  • 内部 proxy item 限制:zabbix[proxy,*] 与 zabbix[proxy group,*] 不再支持在被 proxy 或 proxy group 监控的主机上使用。
  • UnsafeUserParameters 列表扩展:agent 与 agent 2 的 UnsafeUserParameters 列表加入 % 字符。
  • JavaScript 预处理内置方法只读:item 预处理脚本里内置 JS 对象的方法现在只读,之前改过 JS prototype 上内置方法的脚本会出问题。
  • 历史存储参数弃用:server 配置文件的 HistoryStorageDateIndex、HistoryStorageURL、HistoryStorageTypes 弃用,改用 HistoryProvider;frontend 配置文件的 $HISTORY 弃用,改用 $HISTORY_PROVIDERS。两个新参数都能选历史存储提供方:Elasticsearch、ClickHouse 或 SQL(默认)。新旧参数不能同时用。
  • HTTP agent item 的 Request body 字段不再校验是否为合法 XML/JSON;选择 XML 作为 Request body 类型也不再需要 libxml2 库。
  • 被禁用的链接(Graphs、Dashboards、Web)不再显示在受监控主机列表里。
  • JSON 数据类型:item 值支持 JSON 类型;用 Elasticsearch 时,已弃用的 HistoryStorageTypes 参数默认值现在包含 json。
  • New tag filter 表单:All tags 与 Tag list 之间的单选按钮被移除。
  • Item values 以 HTML 显示时被隔离在 iframe 中(Item history widget)。
  • 维护期状态改名:Approaching → Upcoming。
  • 仪表板 slideshow 参数:slideshow=1 将移除,新增 slideshow=on 开始、slideshow=off 停止。
  • 全局正则表达式类型改名:Character string included → Contains string;Any character string included → Contains any substring from list;Character string not included → Does not contain string;Result is TRUE → Matches regular expression;Result is FALSE → Does not match regular expression。

升级前检查清单

  • 先把 Elasticsearch 升到 8.0.0 以上,再升 Zabbix server(AllowUnsupportedDBVersions 不救这一条)
  • 核对 MySQL/Percona 8.4.0、MariaDB 10.11.00、PostgreSQL 15.0、TimescaleDB 2.20.0
  • MySQL 库若是 utf8mb3 / utf8mb3_bin,先转 utf8mb4 / utf8mb4_bin
  • PHP ≥ 8.2.0,Logback ≥ 1.5.25
  • 清掉 pre-1.6 的 agent
  • TimescaleDB 环境手动建 history_json hypertable
  • 三个自定义主题名、Push notification 媒体类型名先改名
  • 升级后在 Users > User roles 复查被自动加上 * 的角色,收窄或关掉 API 访问
  • 检查是否有角色/脚本还在调 hostinterface.*
  • 新建 SAML 配置前准备好 SP private key 与 SP certificate
  • 手动升级 HTTP 类模板与 webhook 媒体类型,自签证书端点设 {$HTTP.TLS.VERIFY} 为 none 或 peer
  • 全量搜一遍 {ACK.*}、{PROFILE.*}、{STATUS}、{TRIGGER.KEY} 等已移除宏
  • 重配 Monitoring > Hosts / Latest data / Problems 的收藏过滤
  • 检查预处理脚本是否改过 JS 内置 prototype 方法
  • 历史存储相关配置统一改成 HistoryProvider / $HISTORY_PROVIDERS,删掉旧参数
  • $ALLOW_HTTP_AUTH 迁到 $ZBX_FEATURE_FLAGS['http_auth_enabled']
复制全文 生成海报 Zabbix 监控 运维 升级 OpenTelemetry

推荐文章

程序员茄子在线接单