5 Zabbix 6.0.0 新特性

参见重大变更了解此version。

Zabbix server 的高可用集群

新版version为Zabbix server提供了原生高可用性解决方案.

该解决方案由多个zabbix_server实例或节点组成, 其中同一时间只能有一个节点处于活动(工作)状态,其他节点处于待命状态, 在当前节点停止或发生故障时随时准备接管.

另请参阅: High availability cluster.

更新服务监控

服务的监控进行了多项更新。服务监控提供了Zabbix中被监控基础设施的高级视图。

基于标签的服务与问题映射

在先前版本的Zabbix中 services 的可用性取决于触发器及其状态。在新的 version中,这被替换为基于标签的映射,用于对应服务的问题。

在服务配置中,硬依赖和软依赖不再存在。取而代之的是,一个服务可以拥有多个父服务。

服务菜单

Zabbix现在新增了一个服务菜单,包含四个菜单部分:

  • Services - 用于服务概览和服务配置 (从监控 -> 服务迁移而来)
  • Service actions - 用于服务操作(新增的 操作类型)
  • SLA - 用于配置SLA
  • SLA report - 用于SLA报告(也可作为 仪表板组件使用)

请注意,独立的服务配置部分已不存在(原位于配置服务)。

状态计算与传播规则

新增了基于直接子服务状态及权重的父服务状态计算规则,以及灵活的可扩展规则。现在还可以为服务状态向父服务的传播设置灵活的规则。

权限

服务级别的灵活权限已在 user role 层级实现。可对所有服务、无服务或选定服务(基于名称或标签)授予读写或只读访问权限。

根本原因分析

新增的根本原因列列出了直接影响或间接影响服务状态的潜在问题。

点击问题名称可在 监控问题 页面查看更详细信息。

服务状态变更告警

现在可以接收关于服务状态变更的自动化告警,类似于触发器状态变更的告警。

新增了service action功能,与Zabbix中的其他操作类似。服务操作可包含与服务相关的问题、恢复及update操作步骤。可配置两种类型的操作:向指定接收者发送消息以及在Zabbix server上执行远程命令。与触发器操作类似,服务操作支持问题escalation场景。

新的消息模板服务服务恢复服务update已添加到通用参数中,需定义这些模板以确保正确发送服务操作的通知。

服务克隆

现在可以对服务进行克隆。在服务的 服务配置 中新增了克隆按钮。克隆服务时,其父级链接会被保留,而子级链接则不会保留。

小部件

新版version中新增了多个仪表板小部件

Top 主机

仪表板小部件中新增了Top 主机小部件。该小部件旨在替代现已弃用的数据概览小部件。

Top 主机小部件支持create自定义表格进行数据概览,这对于类似Top N的报告以及容量规划中使用的条形进度报告非常有用。

更多信息请参阅 Top hosts widget

监控项 值

仪表板小部件中新增了监控项值小部件。

该类型小部件适用于突出显示单个监控项的数值。支持多种可视化显示样式:

更多信息请参阅 Item value widget

地理地图

仪表板新增了一个地理地图部件,提供了在地理地图上显示主机的功能。更多信息请参阅地理地图 dashboard widget地理地图

函数

Prometheus 直方图函数

Zabbix 已支持采集Prometheus metrics有一段时间了,但部分指标难以直接使用。特别是直方图类型的指标在Zabbix中会呈现为多个具有相同键名但参数不同的监控项。尽管这些监控项在逻辑上相关联并代表同一组数据,但缺乏专用函数时分析采集数据一直较为困难。为填补这一功能空白,新版本version中新增了rate()histogram_quantile()函数,其计算结果与PromQL对应函数完全一致。

为完善此功能还新增了: bucket_rate_foreach()bucket_percentile()函数 更多信息请参阅:

单调变化

现在可以通过新的monoinc()monodec() history functions来检查监控项值的单调递增或递减情况。

变更计数

新增了一个history function changecount() 函数,用于计算相邻值之间的变更次数。该函数支持三种不同模式:统计所有变更、仅统计减少次数或仅统计增加次数。例如,可用于追踪用户数量变化或系统运行时间减少次数。

实体计数

新增functions用于简化特定主机、监控项或foreach functions返回值的计数操作。

聚合函数:

  • count - foreach函数返回的array中值的总数(返回integer类型);

  • 监控项_count - 当前启用的监控项中符合匹配条件的总数

    filter criteria (returns an integer).

Foreach函数:

  • exists_foreach - 当前启用的监控项中符合筛选条件的数量(返回array类型)。

基线监控

可用的基线监控选项集已扩展为包含两个新函数baselinedevbaselinewma

  • baselinedev - 将最近数据周期与先前季节中相同数据周期进行比较,并返回偏差次数;
  • baselinewma - 使用加权移动平均算法,通过平均多个相等时间段('季节')中相同时段的数据来计算基线。

在这些函数的上下文中,术语'季节'指可配置的时间段,可以是小时、天、周、月或年。季节长度和待分析季节数量通过函数参数设置。

更多信息请参阅history functions

异常检测

Zabbix 5.2引入了适用于基线监控的新趋势函数。然而这些函数仍需定义相对阈值(例如检查2021年9月的网络流量是否比2020年9月高出不到2倍)。在某些使用场景中此类阈值难以界定。例如一个新上线但极受欢迎的网站在一年内的自然流量可能增长数倍但增长率未知。然而无论自然流量如何增长由DDOS攻击导致的突发流量激增都必须generate触发告警。

异常检测算法正是为此而生——在其他数值的上下文中找出看起来不正常的数据(异常值)。

新增的trend function trendstl() 函数采用"分解"方法来计算异常率。它将单个时间序列分解为三个子序列:

  • 仅包含原始数据重大变化的趋势序列(如网站流量增长)
  • 仅包含季节性变化的周期序列(如夏季网站流量减少秋季增多)
  • 仅包含无法归类为趋势或周期成分的残差序列

异常检测作用于残差序列检查是否存在偏离大多数残差值过远的数值。"过远"意味着残差序列中的绝对值超过标准偏差或平均偏差的N倍。

String 函数

String function concat 现在允许连接超过两个参数。该函数可用于以不同方式组合字符串和数值,或将两个及以上的值相互追加。同时支持数值数据类型。

监控项

自动类型选择

监控项配置表单现在会自动建议匹配的信息类型,如果选定的监控项键返回的数据仅属于特定类型(例如log[]监控项需要信息类型:日志)。 信息类型参数现在位于主监控项标签页的参数下方,并在预处理标签页上重复显示(如果至少指定了一个预处理步骤)。当Zabbix检测到所选信息类型与键可能存在不匹配时,会在信息类型字段旁显示警告图标。

Agent 监控项

多个监控项已添加到Zabbix agent/agent 2:

  • agent.hostmetadata - 返回 主机 元数据

  • kernel.openfiles - 返回已打开的file描述符数量

  • net.tcp.socket.count[] - 返回TCP套接字的数量 匹配参数

  • net.udp.socket.count[] - 返回UDP套接字的数量 匹配参数

  • vfs.dir.get[] - 以JSON格式返回目录文件列表

  • vfs.file.get[] - 以JSON格式返回file的相关信息

  • vfs.file.owner[] - 返回file的所有权信息

  • vfs.file.permissions[] - 返回一个包含4位数字的string

    octal number with Unix permissions

此外:

  • vfs.file.cksum[] 现在支持第二个 mode 参数 (crc32, md5, sha256)

  • vfs.file.size[] 现在支持第二个 mode 参数 (字节)

  • vfs.fs.discoveryvfs.fs.get 现在会返回一个 {#FSLABEL}

    macro on Windows (with volume names)

更多详情请参阅agent items

计算型 监控项

计算型监控项现在不仅支持数值类型,还支持文本日志字符类型的信息。

Prometheus 指标批量处理

预处理队列中引入了对依赖监控项的批量处理机制,以提升Prometheus指标获取的性能。

详见批量处理获取更多细节。

JavaScript 方法

JavaScript引擎已新增支持PATCH、HEAD、OPTIONS、TRACE、CONNECT等HTTP方法。同时,该引擎现在允许通过新的JS方法HttpRequest.customRequest发送自定义HTTP方法请求。

另请参阅:Additional JavaScript objects

Web 监控中的压缩内容

Zabbix网页监控已新增对压缩内容的处理能力。支持libcurl支持的所有编码格式。

预处理

Prometheus query 语言

Zabbix Prometheus预处理query language现在支持两种额外的标签匹配运算符:

  • != -- 选择不等于提供的string的标签;
  • !~ -- 选择不匹配提供的string正则表达式的标签.

Prometheus 模式的结果处理

在预处理阶段,Prometheus模式步骤可能会产生匹配多行数据的结果。为应对这种情况,我们为Prometheus模式预处理步骤新增了parameter结果处理功能,通过引入sum、min、max、avg和count等聚合函数,可对可能匹配的多行数据进行聚合计算。

New macros

现在支持用于触发器表达式调试和内部操作的新宏.

表达式调试宏简化了触发器表达式的调试过程:

  • {TRIGGER.EXPRESSION.EXPLAIN}, {TRIGGER.EXPRESSION.RECOVERY.EXPLAIN} - 解析为部分评估的 触发器或恢复表达式, 其中仅应用基于监控项的 函数;
  • {FUNCTION.VALUE<1-9>}, {FUNCTION.RECOVERY.VALUE<1-9>} - 解析为事件发生时第N个基于监控项的函数 的结果.

用于内部操作的宏包含以下原因:为何某个监控项、LLD规则或触发器变为不受支持状态:

  • {ITEM.STATE.ERROR} - 用于基于监控项的内部通知;
  • {LLDRULE.STATE.ERROR} - 用于基于LLD规则的内部通知;
  • {TRIGGER.STATE.ERROR} - 用于基于触发器的内部通知。

更多详细信息,请参阅Supported macros

简单宏替换为表达式宏

Zabbix 5.4中引入了针对触发器和计算型监控项的新表达式语法。 然而旧语法仍被用于简单宏。在新版version中,简单宏的功能已迁移至 表达式宏并采用新表达式语法。具体变更细节请参阅以下对比:

Zabbix 6.0版本 Zabbix 6.0之前版本
{?avg(/host/key,1h)}

新版version中的表达式宏示例。
{host:key.avg(1h)}

旧版本中的简单宏示例。

升级过程中现有简单宏将被转换为表达式宏。表达式宏的适用范围 完全覆盖原先简单宏的功能。因此表达式宏可用于:

  • 问题通知与命令
  • 问题update通知与命令
  • 地图元素标签
  • 地图链接标签
  • 地图形状标签
  • 图表名称

位置宏不再受支持

Zabbix 4.0起已弃用的监控项名称中位置宏($1, $2...$9)支持现已被完全移除。

监控项 名称中的用户宏不再受支持

自Zabbix 4.0起弃用的在监控项名称(包括发现规则名称)中使用用户宏的支持已被完全移除。

数据库

为了create最佳用户体验并确保Zabbix在各种生产环境中获得最佳性能 部分旧版数据库版本已停止支持。这主要适用于那些已 接近其服务寿命终点且版本存在未修复的问题问题,可能影响正常性能。

自Zabbix 6.0起,以下所需软件版本正式 支持

  • MySQL/Percona 8.0.X
  • mariadb 10.5.X - 10.6.X
  • PostgreSQL 13.X - 14.X
  • Oracle 19c - 21c
  • TimescaleDB 2.0.1-2.3
  • SQLite 3.3.5-3.34.X

默认情况下,如果检测到不支持的数据库version,Zabbix server和proxy将不会启动。现在可以, 尽管不推荐,但可以通过修改AllowUnsupportedDBVersions配置参数来关闭数据库version检查 serverproxy

主键

新安装的Zabbix系统中所有表(包括历史数据表)现在均使用主键。

现有安装不会自动升级为主键配置。 针对已有系统的历史数据表手动升级主键的操作指南适用于: mysqlpostgresqlpostgresql-timescaledbpostgresql-timescaledb, 以及oracle

MySQL 的 utf8mb4 支持

现在支持使用utf8mb4编码及utf8mb4_bin排序规则的Zabbix安装,适用于MySQL/mariadb数据库。

此前仅支持utf8编码,在MySQL中该编码实际指代utf8mb3编码,因此仅支持标准UTF-8字符的子集。新版本version已添加对utf8mb4的支持,可完整支持 full UTF-8字符集。使用utf8mb3的旧有安装不受影响,可继续沿用该编码。

另请参阅升级至6.0后执行utf8mb4 conversion的操作说明。

进程

无需重启 agent 的用户参数重载

用户参数现在可以从配置file重新加载而无需重启agent。为此,run新的userparameter_reload运行时控制选项,例如:

zabbix_agentd -R userparameter_reload

zabbix_agent2 -R userparameter_reload

UserParameter是唯一会通过此命令重新加载的agent配置选项。

PCRE2 支持

已添加对PCRE2的支持,并且针对RHEL 7及以上版本、SLES(所有版本)、Debian 9及以上版本、Ubuntu 16.04及以上版本的Zabbix安装包已更新为使用PCRE2。 PCRE仍然受支持,但Zabbix只能使用PCRE或PCRE2其中一个库进行编译,无法同时使用两者。

Zabbix get 与 Zabbix sender 超时

Zabbix get 和 Zabbix sender 工具现在支持 -t <seconds>--timeout <seconds> 超时参数. 有效范围为:

  • Zabbix get 为 1-30 秒 (默认: 30 秒)
  • Zabbix sender 为 1-300 秒 (默认: 60 秒)

扩展 SNMP 网关功能

SNMP网关现在可以提供处于问题状态的触发器信息,并在触发器详情中显示主机信息。

此外,现在可以限制SNMP网关发送SNMP陷阱的速率。

支持的OID列表已扩展,新增了用于逗号分隔触发器主机名列表的OID .10

SNMP网关配置file中新增了以下参数:

  • ProblemBaseOID - 问题触发器表的OID;
  • ProblemMinSeverity - 最低严重性,低于此严重性的触发器将不被包含;
  • ProblemHideAck - 若指定,则仅包含未确认问题的触发器;
  • ProblemTagFilter - 若指定,则仅包含具有指定标签名称的触发器;
  • TrapTimer - 若设置,Zabbix将在给定时间范围内发送不超过一个最高严重性的陷阱。

详情请参阅Zabbix SNMP Gateway

ODBC 检查的独立处理

ODBC检查的处理已从常规轮询器进程迁移至独立的server/proxy进程ODBC轮询器. 这一变更允许限制轮询器进程创建的数据库连接数量. 原先ODBC检查由常规轮询器执行, 这些轮询器还需处理Zabbix agent监控项, SSH检查等任务.

Zabbix新增了一个配置参数StartODBCPollers, 该参数可配置于serverproxy配置文件中.

您可以使用内部监控项zabbix[process,<type>]来监控ODBC轮询器的负载情况.

运行时命令传输

Zabbix server和proxy运行时命令现在通过套接字而非Unix信号发送。这一改进提升了运行时控制选项的用户体验:

  • 命令执行结果现在会输出到控制台
  • 可以发送更长的输入参数,例如HA节点名称而非节点编号

基于 BSD 操作系统的运行时控制

此前,基于BSD的系统不支持Zabbix server和Zabbix proxy运行时控制选项。通过更改运行时命令传输方式,现已解除该限制。目前大多数命令可在FreeBSDNetBSDOpenBSD及其他*BSD系列操作系统上运行。

具体支持列表请参阅Zabbix的Runtime control文档运行时控制运行时控制

Zabbix agent 2 插件

独立配置文件

每个Zabbix agent 2插件现在拥有独立的configuration file。默认情况下,这些文件位于./zabbix_agent2.d/plugins.d/目录中。路径通过agent 2配置file的Include参数指定,可以是相对于zabbix_agent2.confzabbix_agent2.win.conffile位置的相对路径。

外部插件加载器

以往插件只能编译到Zabbix agent 2中,每次需要更改可用插件集时都必须重新编译agent。现在通过添加外部插件加载器,插件无需直接集成到agent 2中,可以作为独立的外部附加组件(可加载插件)添加,从而简化了为收集新监控指标创建额外插件的过程。

可加载插件的引入导致了以下配置参数变更:

  • Plugins.<PluginName>.Path 参数已移至 Plugins.<PluginName>.System.Path
  • Plugins.<PluginName>.Capacity 参数虽然仍受支持,但已被弃用,请改用 Plugins.<PluginName>.System.Capacity

模板

新的官方模板可用于监控。

Kubernetes

  • 通过HTTP监控Kubernetes节点
  • 通过HTTP监控Kubernetes集群状态
  • 通过HTTP监控Kubernetes API服务器
  • 通过HTTP监控Kubernetes控制器管理器
  • 通过HTTP监控Kubernetes调度器
  • 通过HTTP监控Kubernetes kubelet

要启用Kubernetes监控,您需要使用新工具 Zabbix Helm Chart, 该工具会在Kubernetes集群中安装Zabbix proxy和Zabbix agents。

要了解有关配置模板的更多信息,请参阅HTTP template operation

Mikrotik

  • MikroTik <设备型号> SNMP - 新增53个针对特定型号的模板,用于监控各类MikroTik以太网路由器和交换机,详见full list
  • Mikrotik SNMP - 用于监控MikroTik设备的通用模板。

您可以get这些模板:

  • Configuration模板中(新安装时);
  • 从先前版本升级时,可从Zabbix Git repository下载最新模板, 并手动导入Zabbix的Configuration模板部分。若已存在同名模板, 导入前勾选Delete missing选项以实现干净的import。此方式将移除 更新模板中已排除的监控项(注意被删除监控项的历史记录将丢失)。

通知

Webhook 集成

新集成功能现已可用,支持使用 webhook 媒体类型从Zabbix通知创建 Github issues

关于已取消升级的通知

在配置配置操作时 现在可以通过取消勾选相应选项的复选框来取消有关已取消升级的通知

前端

密码要求

现在可以为Zabbix内部内部认证提供自定义密码复杂度要求。 为防止Zabbix用户设置弱密码,可以强制执行以下限制:

  • 设置最小密码长度
  • 要求密码包含大小写字母、数字和/或特殊字符的组合
  • 禁止使用最常见且易猜测的密码

审计日志

记录

审计日志现在包含所有Zabbix objects配置变更的记录,包括因执行LLD规则、网络发现动作、自动注册动作或脚本执行而产生的变更。先前,由Zabbix server发起的配置变更(例如执行发现规则的结果)不会被记录。现在这类object修改将作为归属于系统用户的审计记录存储。

记录过滤器

新增了一项功能,可通过触发这些条目的前端操作来筛选记录。如果多个日志记录是由单一操作(例如关联/取消关联模板)产生的,这些记录将具有相同的记录集ID

审计设置

新增 审计日志 审计日志功能已添加到管理→常规菜单中,允许启用或禁用审计日志记录。 原先位于Housekeeper部分的审计数据清理设置也已迁移至新的审计日志版块。

模板链接更显眼

为了使模板链接更加直观,现在它被放置在主机、主机原型和模板的第一个标签页中 配置表单和主机/模板批量update表单

因此,所有相关表单中用于模板链接的独立标签页已被移除。

在一项相关进展中,主机原型配置中用于主机组/主机组原型选择的字段 也已从单独的标签页移至首个标签页。

最新数据中的子过滤器

最新数据部分新增了子过滤器功能. 该子过滤器可快速一键访问相关联的监控项组.

子过滤器显示可点击链接, 支持基于共同实体-主机,标签名称或标签值来筛选监控项. 点击实体后,监控项将立即被过滤.

更多详情请参阅latest data章节.

自定义图表可用性改进

监控主机图表 页面进行了多项可用性改进:

  • 页面不再限制显示20个图表
  • 新增子过滤器功能,可根据公共标签或标签值快速筛选相关图表组
  • 主机的简单图表现在可与自定义图表同时显示

更多详情请参阅graph页面。

从监控创建主机

现在还可以通过监控Hosts来create新的主机.

创建主机按钮对管理员和超级管理员用户可见.

主机编辑弹窗

主机创建和编辑表单现已在模态窗口(弹出窗口)中打开,包括配置主机监控主机以及任何包含一个主机菜单或其他直接链接至主机配置的页面。

指向主机编辑页面的直接链接仍然有效,并会在完整页面中打开主机编辑界面。

在 监控项 配置与最新数据间实现更优导航

Latest data中新增了监控项的上下文菜单 可访问监控项配置和可用图表:

相应地 在配置菜单的item list中 新增了上下文菜单 可访问监控项的最新数据 及其他实用选项:

该菜单取代了旧版本中的向导选项 类似的菜单也已 在template itemsitem prototypes中实现

监控 → 最近数据更新

最新数据部分进行了多项改进:

  • 现在显示自上次检查以来的时间(例如1m 20s),而非上次监控项执行时间
  • 将鼠标悬停在监控项的最后一个值上时,会显示未应用单位或值映射的原始值
  • 如果一个主机处于维护状态,主机名称旁边将显示一个橙色扳手图标

监控 → 概览已移除

监控菜单中的概览部分已被完全移除。 相同功能仍可通过数据概览触发器概览仪表盘widgets访问。

杂项

  • 以下字段的最大长度已增加:
  • Zabbix网页界面的默认语言已从英式英语更改为美式英语,不再支持英式英语
  • 主菜单中的"分享"链接已被替换为"集成"链接,该链接指向Zabbix官网的Integrations页面
  • 当Zabbix网页界面使用Zabbix官网支持的某种语言打开时,点击集成链接将以相应语言打开集成页面。对于其他所有语言(包括英语),集成页面将以英语打开
  • 配置操作中用于计算条件的自定义表达式现在最长可达1024个字符(之前为255个)
  • 监控->主机部分现在即使没有当前未解决的问题,也会显示指向主机问题屏幕的链接

重大变更

审计日志

为实现审计日志功能的变更,必须重构先前存在的数据库结构。在升级过程中,auditlogauditlog_details数据库表将被格式不同的新表auditlog取代。现有审计日志记录将被删除。

支持的数据库版本检查

Zabbix serverproxy 现在会在启动前检查数据库 version 并在 version 超出支持范围时拒绝启动. 更多详情请参阅 databases.

PCRE2 支持

Zabbix现已同时支持PCRE和PCRE2。针对RHEL 7及以上版本、SLES(所有版本)、Debian 9及以上版本、Ubuntu 16.04及以上版本的Zabbix软件包已更新为使用PCRE2而非PCRE进行编译。从源代码编译时,用户可通过指定''--with-libpcre''或''--with-libpcre2''flag进行选择。若升级现有安装环境,将PCRE切换为PCRE2可能导致部分正则表达式行为差异——详见切换到pcre2后无效的正则表达式获取详细信息。