5 Zabbix 6.0.0 新功能
Zabbix server 的高可用集群
新版本附带了针对 Zabbix server 的原生高可用解决方案。
该解决方案由多个 zabbix_server 实例或节点组成,其中一次只能有一个节点处于活动状态(工作),而其他节点处于待机状态,准备好在当前节点停止或故障时接管。
另请参阅:高可用集群。
服务
对服务的监控进行了一些更新。服务监控提供了 Zabbix 中受监控基础设施的高级视图。
Zabbix 现在有一个新的服务菜单,包含四个菜单组件:
- 服务(Services) - 用于服务概述和服务配置(从Monitoring 移动到 Services)
- 服务动作(Service actions) - 用于服务动作(新操作类型)
- SLA - 用于配置 SLA
- SLA 报表 - 用于 SLA 报表(也可用作仪表板小部件)
下面概述了对服务功能的其他主要改进。
基于标签的服务到问题的映射
以前版本中 服务(services) 的可用性取决于触发器及其状态。在新版本中,它被相应服务的基于标签的问题映射所取代。
服务的配置和查看合并在 Monitoring → Services 中,并且在 Configuration → Services 中不再存在用于服务配置的单独部分。
在服务配置中,不再存在硬依赖和软依赖。相反,一个服务可以有多个父服务。
状态计算和传播规则
有新的状态计算规则和灵活的附加规则,用于基于直接子服务的状态和权重计算父服务的状态。现在还可以设置灵活的规则来将服务状态传播到父服务。
服务权限
在 用户角色 级别实现了对服务的灵活权限。可以向所有、无或选定的服务授予读写或只读访问权限(基于名称或标签)。
根本原因分析
一个新的 根本原因(Root cause) 列显示了直接或间接影响服务状态的潜在问题。
如果您单击问题名称,您可以在Monitoring → Problems中查看有关它的更多详细信息。
服务状态变化告警
现在可以接收有关服务状态更改的自动警报,类似于有关触发器状态更改的警报。
添加了一种新的 服务动作 类型,类似于 Zabbix 中的其他动作。服务可能动作包括与服务相关的问题、恢复和更新动作的步骤。可以配置两种类型的动作:向指定的收件人发送消息和在 Zabbix server 上执行远程命令。与触发动作类似,服务动作支持问题 升级场景。
新的消息模板 Service、Service recovery 和 Service update 已添加到 媒体类型 中,应该定义为能够正确发送服务动作的通知。
服务克隆
可以支持克隆服务。克隆按钮已添加到服务的配置表单中。克隆服务时,会保留其父链接,而不会保留子链接。
主键
主键现在用于新安装中的所有表,包括历史表。
现有安装不会自动升级主键。在现有安装中 手动升级 历史表主键的说明适用于MySQL/MariaDB、PostgreSQL、TimescaleDB v1 和 v2 以及 Oracle。
新增小部件
新版本中添加了以下几个仪表板小部件。
Top 主机
Top hosts 小部件被添加到仪表板小部件中。此小部件旨在替换弃用的 数据概览 小部件。
Top hosts 小部件允许为数据概览创建自定义表格,这对用于容量规划的类似 Top N 类报告和条形进度报告很有用。
有关更多信息,请参阅 Top 主机小部件。
监控项值
监控项值(Item value)小部件被添加到仪表盘小部件中。
这种类型的小部件对于突出显示单个监控项的值很有用。不同的视觉风格的显示成为可能:
有关详细信息,请参阅 Item value 小部件。
宏
新增宏
新增用于触发器表达式调试和内部动作的宏。
表达式调试宏简化了触发器表达式的调试过程:
- {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} - 用于基于触发器的内部通知。
有关更多详细信息,请参阅支持的宏。
由表达式宏替换的简单宏
Zabbix 5.4 中引入了触发器和可计算监控项的新表达式语法。然而,旧的语法仍然在简单的宏中使用。在新版本中,简单宏的功能已转移到表达式宏中,并使用了新的表达式语法。有关更改的详细信息,请参见下面的比较:
Zabbix 6.0 | Zabbix 6.0 之前 |
---|---|
{?avg(/host/key,1h)} 新版本中的表达式宏示例。 | {host:key.avg(1h)} 之前版本中的简单宏示例。 |
现有的简单宏将在升级过程中转换为表达式宏。表达式宏的范围与简单宏提供的范围相同。因此,表达式宏可用于:
- 问题通知和命令
- 问题更新通知和命令
- 地图元素标签
- 地图链接标签
- 地图形状标签
- 图形名称
不再支持位置宏
自 Zabbix 4.0 起已弃用的监控项名称 ($1, $2…$9) 中对位置宏的支持已被完全删除。
不再支持监控项名称中的用户宏
自 Zabbix 4.0 起已弃用的监控项名称(包括发现规则名称)中对用户宏的支持已被完全删除。
Prometheus 指标的批量处理
在预处理队列中引入了依赖监控项的批量处理,以提高检索 Prometheus 指标的性能。
有关详细信息,请参阅 Prometheus 检查 for more details。
Prometheus 模式的结果处理
预处理中的 Prometheus 模式步骤会产生匹配多行的结果。为了处理这种情况,Prometheus 模式预处理步骤中添加了一个新的结果处理 参数 ,该参数允许通过引入 sum、min、max、avg 和 count 等函数来聚合潜在的多个匹配行的数据。
函数
Prometheus 直方图的函数
在 Zabbix 中收集 Prometheus指标 已经有一段时间了,但有些指标很难使用。具体来说,直方图类型的指标可以在 Zabbix 中呈现为具有相同键值名称但参数不同的多个监控项。然而,即使这些监控项在逻辑上相关并代表相同的数据,如果没有专门的功能,很难分析收集到的数据。为了弥补新版本中的这一功能空白,添加了 rate() 和 histogram_quantile() 函数,产生与 PromQL 对应的相同结果。
补充此功能的其他新增功能是bucket_rate_foreach() 和 bucket_percentile() 函数。有关更多信息,请参阅:
- 历史函数(参见 rate())
- 聚合函数(参见 histogram_quantile(), bucket_percentile())
- Foreach 函数(参见 bucket_rate_foreach())
单调变化
现在可以使用新的 monoinc() 或 monodec() 历史函数 检查监控项值的单调增加或减少。
更改计数
添加了一个新的 历史函数changecount() ,允许计算相邻值之间的更改次数。该函数支持三种不同的模式:计算所有变化,只减少,或者只增加。例如,它可用于跟踪用户数量的变化或系统正常运行时间的减少。
实体计数
添加了新的 函数 来简化由 foreach函数 返回的特定主机、监控项或值的计数。
聚合函数:
- count - foreach 函数返回的数组中值的总数(返回一个整数);
- item_count - 当前启用的符合过滤条件的项目总数(返回一个整数)。
Foreach 函数:
- exists_foreach - 当前启用的符合过滤条件的项目数(返回一个数组)。
异常检测
Zabbix 5.2 引入了对基线监控有用的新趋势函数。但是,它们仍然需要定义相对阈值(例如,检查 2021 年 9 月的网络流量是否比 2020 年 9 月高出不到 2 倍)。存在难以定义此类阈值的用例。例如,一个新的但非常受欢迎的网站的网络流量可以在一年内自然增长很多倍,但增长速度是未知的。然而,无论自然流量增长如何,由于 DDOS 攻击导致的突然流量激增都必须生成警报。
异常检测算法正是这样做的——在其他值的上下文中查找看起来不正常的数据(异常值)。
添加了新的 历史函数 trendstl(),它使用 ‘分解’ 方法来计算异常率。它将单个时间序列拆分为其他三个序列:
- 仅包含原始数据发生较大变化的趋势序列(例如网站流量显示增长)
- 仅包含季节性变化的season序列(例如夏季网站流量较少,秋季较多)
- 仅包含不能被解释为趋势或season的一部分的剩余值的剩余序列
异常检测与余数序列一起工作,并检查是否存在与大多数余数相差太远的值。”远” 表示余数序列的绝对值比标准差或平均差大 N 倍。
字符串函数
字符串函数 concat 允许连接两个以上的参数。它可用于以不同的组合组合字符串和值,或将两个或多个值相互附加。还支持数字数据类型。
监控项
自动类型选择
监控项配置表单会自动建议匹配的信息类型,如果选定的监控项键值仅返回特定类型的数据(例如,log[] 监控行需要信息类型:Log)。 信息类型* 参数现在位于监控项选项卡上的键值参数下,如果指定了至少一个预处理步骤,则在预处理选项卡上重复。如果 Zabbix 检测到所选信息类型和密钥可能不匹配,则会在 信息类型 字段旁边显示一个警告图标。
新的和更新的监控项
Zabbix agent/agent 2 中添加了几个新监控项:
- agent.hostmetadata - 返回主机元数据
- kernel.openfiles - 返回打开文件描述符的数量
- net.tcp.socket.count[] - 返回匹配参数的 TCP 套接字数
- net.udp.socket.count[] - 返回匹配参数的 UDP 套接字数
- vfs.dir.get[] - 以 JSON 格式返回目录文件列表
- vfs.file.get[] - 以 JSON 格式返回有关文件的信息
- vfs.file.owner[] - 返回文件的所有权
- vfs.file.permissions[] - 返回一个 4 位字符串,其中包含具有 Unix 权限的八进制数
此外:
- vfs.file.cksum[] 支持第二个
mode
参数(crc32, md5, sha256) - vfs.file.size[] 支持第二个mode参数(bytes or lines)
- vfs.fs.discovery 和 vfs.fs.get 在 Windows 上返回一个 {#FSLABEL} 宏(带有卷名)
有关详细信息,请参阅agent监控项。
可计算监控项数据类型
可计算监控项现在不仅支持数字,还支持文本、日志和字符类型的信息。
无需重启 agent 即可重载用户参数
现在可以从配置文件重新加载用户参数,而无需重新启动 agent。为此,请运行新的userparameter_reload
运行时控制选项,例如:
zabbix_agentd -R userparameter_reload
或
zabbix_agent2 -R userparameter_reload
UserParameter 是唯一将使用此命令重新加载的 agent 配置选项。
基于 BSD 的操作系统上的运行时控制
以前,基于 BSD 的系统不支持 Zabbix server 和 Zabbix proxy 运行时控制选项。更改运行时命令传输方法已允许取消此限制。现在FreeBSD、NetBSD、OpenBSD 和 **BSD* 系列的其他操作系统都支持大多数命令。有关确切列表,请参阅 Zabbix server 或 proxy 的 运行时控制 。
Zabbix agent 2 插件
外部插件加载器
以前,插件只能编译到 Zabbix agent 2 中,每次需要更改可用插件集时都需要重新编译 agent。现在,通过添加外部插件加载器,插件不必直接集成到 agent 2 中,并且可以作为单独的外部插件添加,从而使用于收集新监控指标的附加插件的创建过程更加容易。
外部插件的引入导致以下配置参数更改: - Plugins.<PluginName>.Path 参数已移至 Plugins.<PluginName>.System.Path。 - Plugins.<PluginName>.Capacity 参数虽然仍受支持,但已被弃用,请改用 Plugins.<PluginName>.System.Capacity 。
密码要求
现在可以为 Zabbix 内部 身份验证方法 提供自定义密码复杂性要求。为了防止 Zabbix 用户设置弱密码,可以强制执行以下限制:
- 设置最小密码长度。
- 要求密码包含大小写字母、数字和/或特殊字符的组合。
- 禁止使用最常见且容易猜到的密码。
数据库
为了创造最佳的用户体验并确保在各种生产环境中获得最佳的 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
默认情况下,如果检测到不支持的数据库版本,Zabbix server 和 proxy 将不会启动。虽然不推荐,但现在可以通过修改 server 或 proxy 的 AllowUnsupportedDBVersions 配置参数来关闭数据库版本检查。
对 MySQL 的 utf8mb4 支持
使用 MySQL/MariaDB 数据库的 Zabbix 安装现在支持使用 utf8mb4_bin 排序规则的 utf8mb4 编码。
以前只支持 utf8 编码,MySQL 代表 utf8mb3 编码,因此只支持正确 UTF-8 字符的子集。在新版本中,增加了对 utf8mb4 的支持,并支持 完整的 UTF-8 字符集。使用 utf8mb3 的旧安装保持不变,并且可以继续使用该编码。
字段大小限制
以下字段的最大字段大小已增加:
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 traps 的速率。
支持的 OID 列表已扩展为新的 OID .10,用于以逗号分隔的触发器主机名列表。
SNMP 网关配置文件中添加了新参数: - ProblemBaseOID - 问题触发表的 OID; - ProblemMinSeverity - 最低严重性,不包括严重性较低的触发器; - ProblemHideAck - 如果指定,仅包含未确认问题的触发器; - ProblemTagFilter - 如果指定,仅包含具有指定标签名称的触发器; - TrapTimer - 如果设置,Zabbix 将在给定时间范围内发送不超过一个严重性最高的trap。
有关详细信息,请参阅 Zabbix SNMP 网关。
Web 监控
Zabbix web 监控中增加了处理压缩内容的能力。支持libcurl支持的所有编码格式。
Prometheus 查询
Zabbix Prometheus 预处理 查询语言 支持两个额外的标签匹配运算符:
- != — 选择不等于提供的字符串的标签;
- !~ — 选择与提供的字符串不匹配的标签。
JavaScript 方法
HTTP 方法 PATCH、HEAD、OPTIONS、TRACE、CONNECT 已添加到 JavaScript 引擎中。此外,引擎现在允许使用新的 JS 方法 HttpRequest.customRequest 发送自定义 HTTP 方法请求。
另请参阅:其他 JavaScript 对象。
审计日志
记录
审计日志现在包含有关所有 Zabbix 对象的所有配置更改的记录,包括由于执行 LLD 规则、网络发现操作、自动注册操作或脚本执行而发生的更改。以前,从 Zabbix server 发起的配置更改,例如作为执行发现规则的结果,不会被记录。现在,此类对象修改将存储为归属于用户系统的审计记录。
记录过滤器
添加了通过导致这些条目的前端操作过滤记录的功能。如果由于单个操作(例如链接/取消链接模板)而创建了多个日志记录,则这些记录将具有相同的Recordset ID。
审计设置
新的 Audit log 部分 已添加到 Administration→General 菜单,允许启用或禁用审计日志。以前位于 Housekeeper 部分下的用于审核的管家设置也已移至新的 Audit log 部分。
PCRE2 支持
已添加对 PCRE2 的支持,并且针对 RHEL/CentOS 7 及更高版本、SLES(所有版本)、Debian 9 及更高版本、Ubuntu 16.04 及更高版本的 Zabbix 安装包已更新为使用 PCRE2。
仍然支持 PCRE,但 Zabbix 只能使用 PCRE 或 PCRE2 库之一进行编译,两者不能同时使用。
单独处理 ODBC 检查
处理 ODBC 检查已从常规轮询器进程转移到单独的 server/proxy 进程 ODBC pollers。此更改允许限制轮询进程创建的与数据库的连接数。以前,ODBC 检查是由常规轮询器执行的,它也适用于 Zabbix agent 监控项、SSH 检查等。
Zabbix server 和 proxy 配置文件中添加了一个新的配置参数StartODBCPollers 。
您可以使用内部监控项 zabbix[process,<type>] 来监控 ODBC 轮询器负载。
Webhook 集成
Webhook 集成允许使用 webhook 媒体类型从 Zabbix 通知创建 Github事件。
模板
新的官方模板可用于监控:
Kubernetes
- 基于 HTTP 的 Kubernetes 节点
- 基于 HTTP 的 Kubernetes 集群状态
- 通过 HTTP 的 Kubernetes API 服务器
- 通过 HTTP 的 Kubernetes 控制器管理器
- 基于 HTTP 的 Kubernetes 调度程序
- 基于 HTTP 的 Kubernetes kubelet
要启用 Kubernetes 监控,您需要使用新工具 Zabbix Helm Chart,它会在 Kubernetes 集群中安装 Zabbix proxy 和 Zabbix agent。
要了解有关配置模板的更多信息,请参阅 HTTP 模板操作。
Mikrotik
- MikroTik <device model> SNMP - 53 新型号特定模板,用于监控各种型号的 MikroTik 以太网路由器和交换机,请参阅 完整列表;https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/net/mikrotik);
- Mikrotik SNMP - 用于监控 MikroTik 设备的通用模板。
可以获得以下模板:
- 在新装环境的 Configuration → Templates 中;
- 从以前的版本升级时,可以从 Zabbix Git 存储库 下载最新的模板,并在 Configuration → Templates 部分手动导入 Zabbix 。如果已存在同名模板,请在导入前选中删除缺失选项以实现干净导入。这样,已从更新模板中排除的监控项将被删除(请注意,已删除监控项的历史记录将丢失)。
模板链接更明显
为了使模板链接更加可见,现在将其放置在主机、主机原型和模板配置表单以及主机/模板批量更新表单的第一个选项卡中。
因此,已从所有相应表单中删除了用于模板链接的单独选项卡。
在相关的开发中,主机原型配置中的主机组/主机组原型选择的字段也已从单独的选项卡移动到第一个选项卡。
运行时命令传输
Zabbix server 和 proxy 运行时命令现在通过套接字而不是 Unix 信号发送。此更改可以改善使用运行时控制选项的用户体验:
- 命令执行的结果会打印到控制台。
- 可以发送更长的输入参数,例如 HA 节点名称而不是节点编号。
前端
地理地图
为仪表板引入了一个新的地理地图小部件,提供了一种在地理地图上显示主机的方法。有关详细信息,请参阅 Geomap 仪表板小部件和地理地图。
最新数据中的子过滤器
在Latest data部分中添加了一个子过滤器。子过滤器对于快速一键访问相关监控项组很有用。
子过滤器显示 可点击的链接 ,允许基于通用实体(主机、标签名称或标签值)过滤项目。单击实体后,立即过滤监控项。
有关详细信息,请参阅 最新数据(latest data) 部分。
自定义图表的可用性改进
Monitoring → Hosts → Graphs 中的图表页面已经看到了一些可用性改进:
- 页面中不再有 20 个图形的限制
- 添加了一个子过滤器,允许基于公共标签或标签值快速选择相关图表组
- 主机的简单图表可以与自定义图表一起显示
有关更多详细信息,请参阅 图表 页面。
从 Monitoring 创建主机
现在还可以从Monitoring → Hosts 建新主机。
管理员和超级管理员用户可以使用 Create host 按钮。
主机编辑作为弹窗
主机创建和编辑的表单可以在任何页面中通过点击 Configuration → Hosts、Monitoring → Hosts 通过(弹出)窗口模式打开,其中有主机菜单或其他直接链接到主机配置。
指向主机编辑页面的直接链接仍然有效,并且正在整页打开主机编辑页面。
在监控项配置和最新数据之间更好地导航
最新数据 中引入了新的监控项上下文菜单,允许访问监控项配置和可用图表:
相反,在配置菜单的 监控项列表 中引入了一个新的上下文菜单,允许访问监控项的最新数据和其他有用的选项:
此菜单取代了以前版本中的向导选项。还为 模板监控项和 监控项原型 引入了类似的菜单。
关于取消升级的通知
在配置 动作操作时,可以通过取消选中相应选项的复选框来取消有关取消升级的通知。
Monitoring → Latest data 更新
对最新数据部分进行了一些改进:
- 显示自上次检查以来的时间(例如,1m 20s),而不是上次监控项执行时间。
- 将鼠标悬停在监控项的最后一个值上将显示未应用单位或值映射的原始值。
- 如果主机处于维护状态,主机名旁边会显示一个橙色扳手图标。
Monitoring → Overview 被移除
监控菜单中的概览(Overview)部分已被完全删除。使用数据概览(Data overview) 和 触发器概览(Trigger overview)* 仪表板小部件 仍然可以访问相同的功能。
杂项
- Zabbix Web 界面的默认语言已从英式英语更改为美式英语。已放弃对英式英语的支持。
- 主菜单中的 Share 链接已被 Integrations 链接取代,指向 Zabbix 网站上的 Integrations 页面。
- 如果 Zabbix Web 界面以 Zabbix 网站上可用的语言之一打开,单击集成链接将以适当的语言打开集成页面。对于所有其他语言,包括英语,集成页面将以英语打开。
- 用于计算条件的 动作配置 中的自定义表达式现在最多可包含 1024 个字符(之前为 255 个)。
- Monitoring->Hosts 部分现在显示指向主机问题屏幕的链接,即使当前没有打开任何问题。
重大变化
审计日志
为了实现 审计日志 功能的变化,以前存在的数据库结构必须重新设计。在升级过程中auditlog
,auditlog_details
数据库表将被具有不同格式的新表 auditlog
替换。*现有的审核日志记录将被删除**。
支持的数据库版本检查
Zabbix server 和 proxy 现在将在启动前检查数据库版本,如果版本超出支持范围,将不会启动。有关更多详细信息,请参阅 数据库。
PCRE2 支持
Zabix 现在支持 PCRE 和 PCRE2。用于 RHEL/CentOS 7 及更高版本、SLES(所有版本)、Debian 9 及更高版本、Ubuntu 16.04 及更高版本的 Zabbix 软件包已更新为使用 PCRE2 而不是 PCRE 进行编译。从源代码编译时,用户可以选择指定 ‘’—with-libpcre’’ 或 ‘’—with-libpcre2’’ 标志。如果您要升级现有安装,将 PCRE 更改为 PCRE2 可能会导致某些正则表达式表现不同 - 请参阅 已知问题了解详细信息。
单独的配置文件
每个 Zabbix agent 2 插件现在都有一个单独的 配置文件。默认情况下,这些文件位于./zabbix_agent2.d/plugins.d/
目录中。该路径在 agent 2 配置文件的 Include
参数中指定,查看 zabbix_agent2.conf 或 zabbix_agent2.win.conf 文件相对路径。
基线监测
可用的基线监控选项集已通过两个新功能 baselinedev 和 baselinewma 进行了扩展。
- baselinedev - 将上一个数据周期与前一season的相同数据周期进行比较,返回偏差数;
- baselinewma - 通过使用加权移动平均算法对多个相等时间段 (‘seasons’) 中同一时间范围内的数据进行平均来计算基线。
在这些函数的上下文中,术语 ‘season’ 指的是可配置的时间范围,可以是几小时、几天、几周、几个月或几年。 ‘season’ 长度和要分析的季节数量在函数参数中设置。
有关更多信息,请参阅 历史函数 。