1 创建监控项

概述

要在 Zabbix 前端中创建监控项,请执行以下操作:

  • 前往:数据采集 > 主机
  • 在该主机所在行中单击 监控项
  • 单击屏幕右上角的 创建监控项
  • 在表单中输入监控项参数

您也可以通过打开一个现有监控项,按下 克隆 按钮,然后以其他名称保存来创建监控项。

配置

监控项选项卡包含监控项的一般属性。

所有必填输入字段都以红色星号标记。

参数 说明
Name 监控项名称。
支持 用户宏
Type 监控项类型。请参见各个监控项类型章节。
Key 监控项键值(最多 2048 个字符)。
支持的监控项键值可在各个监控项类型章节中找到。
键值在单个主机内必须唯一。
如果键值类型为“Zabbix agent”、“Zabbix agent (active)”或“Simple check”,则键值必须受 Zabbix agent 或 Zabbix 服务器支持。
另请参见:正确的key 格式
Type of information 用于校验监控项值并将其存储到数据库中的数据类型,包括在任何转换之后:
Numeric (unsigned) - 64 位无符号整数;
Numeric (float) - 64 位浮点数;
Character - 短文本;
Log - 带或不带日志属性(时间戳、来源、严重性、日志事件 ID)的长文本;
Text - 长文本;
Binary - 二进制数(仅支持依赖监控项);
JSON - 结构化 JSON 数据,以原生格式存储在数据库中(计算型监控项不支持)。
返回二进制或 JSON 数据类型值的监控项不支持在计算型监控项公式或触发器表达式中使用。
有关每种数据类型和数据库后端的存储限制,请参见监控项数据限制
对于以单一特定格式返回数据的监控项,会自动选择匹配的数据类型——例如,system.cpu.loadsystem.cpu.util 都返回 64 位浮点数,因此会自动选择 Numeric (float)
Host interface 选择主机接口。此字段在主机级别编辑监控项时可用。
Units 如果设置了单位符号,Zabbix 会对接收到的监控项值进行后处理,并以指定的单位后缀显示。
支持具有特殊格式的单位符号(以及接收到的监控项值 → 显示值的示例):
B - 字节(1024 → 1 KB)
Bps - 每秒字节数(1024 → 1 KBps)
s - 秒,使用最多三个最大的非零时间单位显示(881764 → 10d 4h 56m)
uptime - 运行时间,以 hh:mm:ss 或 N days, hh:mm:ss 显示(881764 → 10 days, 04:56:04)
unixtime - Unix 时间戳,格式化为 yyyy.mm.dd hh:mm:ss(881764 → 1970-01-11 04:56:04 AM);要正确格式化,接收到的监控项值必须为 Numeric (unsigned)
对于其他单位(如 Hz、W 等),如果接收到的值超过 1000,则会除以 1000 并使用相应前缀显示(5000 → 5 KHz,881764 → 881.76 KW)。
如果单位符号前加上 !,则禁用单位转换和前缀添加(1024 !B → 1024 B,61 !s → 61 s)。
有关单位符号和单位转换的更多示例与详细信息,请参见监控项值后缀
Update interval 每 N 秒为此监控项获取一个新值。允许的最大更新间隔为 86400 秒(1 天)。
支持时间后缀,例如 30s、1m、2h、1d。
支持用户宏
单个宏必须填满整个字段。不支持在一个字段中使用多个宏,也不支持宏与文本混合。
注意:仅当存在非零值的自定义间隔时,更新间隔才可以设置为“0”。如果设置为“0”,且存在非零值的自定义间隔(灵活或计划),则监控项将在自定义间隔持续期间被轮询。
注意,监控项变为活动状态后或更新间隔更改后的第一次轮询,可能会早于配置值发生。
新建监控项将在创建后的 60 秒内被检查,除非它们设置了 Scheduling 或 Flexible 更新间隔,且 Update interval 设置为 0。
对于现有的被动监控项,可通过按下 Execute now 按钮 立即轮询其值。
Custom intervals 您可以为检查监控项创建自定义规则:
Flexible - 为 Update interval 创建例外(使用不同频率的间隔)。
Scheduling - 创建自定义轮询计划。
详细信息请参见自定义间隔
Interval 字段支持时间后缀,例如 30s、1m、2h、1d。
支持用户宏
单个宏必须填满整个字段。不支持在一个字段中使用多个宏,也不支持宏与文本混合。
Timeout 设置监控项检查超时时间(适用于支持的监控项类型)。选择超时选项:
Global - 使用 proxy/全局超时时间(显示在灰显的 Timeout 字段中)。
Override - 使用自定义超时时间(在 Timeout 字段中设置;允许范围:1 - 600s)。支持时间后缀(例如 30s、1m)和用户宏
点击 Timeouts 链接可配置proxy 超时时间或全局超时时间(如果未使用 proxy)。请注意,Timeouts 链接仅对具有 Super admin 类型且拥有 Administration > GeneralAdministration > Proxies 前端部分权限的用户可见。
History 选择以下之一:
Do not store - 不存储监控项历史记录。如果只有依赖监控项需要保留历史记录,则这对主监控项很有用。
此设置不能被全局 housekeeper settings 覆盖。
Store up to - 指定在数据库中保留详细历史记录的时长(1 小时到 25 年)。较旧的数据将由 housekeeper 删除。以秒为单位存储。
支持时间后缀,例如 2h、1d。支持用户宏
Store up to 值可在 Administration > Housekeeping 中被全局覆盖。
如果存在全局覆盖设置,则会显示橙色 信息图标。将鼠标悬停其上时,会显示警告消息,例如 Overridden by global housekeeper settings (1d)
建议将记录值保留尽可能短的时间,以减少数据库中值历史记录的大小。与其存储较长时间的值历史,不如存储更长时间的趋势数据。
另请参见历史记录和趋势
Trends 选择以下之一:
Do not store - 不存储趋势数据。
此设置不能被全局 housekeeper settings 覆盖。
Store up to - 指定在数据库中保留聚合历史记录(每小时最小值、最大值、平均值、计数)的时长(1 天到 25 年)。较旧的数据将由 housekeeper 删除。以秒为单位存储。
支持时间后缀,例如 24h、1d。支持用户宏
Store up to 值可在 Administration > Housekeeping 中被全局覆盖。
如果存在全局覆盖设置,则会显示橙色 信息图标。将鼠标悬停其上时,会显示警告消息,例如 Overridden by global housekeeper settings (7d)
注意: 非数值数据——character、log 和 text——不支持保留趋势数据。
另请参见历史记录和趋势
Value mapping 对此监控项应用值映射。值映射不会更改接收到的值,仅用于数据显示。
它适用于 Numeric(unsigned)Numeric(float)Character 监控项。
例如,“Windows service states”。
Log time format 仅适用于类型为 Log 的监控项。支持的占位符:
y年 (1970-2038)
M月 (01-12)
d日 (01-31)
h小时 (00-23)
m分钟 (00-59)
s秒 (00-59)
如果留空,时间戳将被设置为 Unix 时间中的 0,即 1970 年 1 月 1 日。
例如,考虑 Zabbix agent 日志文件中的以下一行:
" 23480:20100328:154718.045 Zabbix agent started. Zabbix 1.8.2 (revision 11211)."
它以 6 个字符位置的 PID 开头,后跟日期、时间和消息其余部分。
该行的日志时间格式应为 "pppppp:yyyyMMdd:hhmmss"。
请注意,"p" 和 ":" 字符是占位符,可以是除 "yMdhms" 之外的任意字符。
Populates host inventory field 您可以选择一个主机资产清单字段,由监控项的值填充。如果为主机启用了自动inventory填充,并且监控项类型为 Numeric(unsigned)Numeric(float)CharacterText,则此功能可用。
Description 输入监控项描述。支持用户宏
Enabled 勾选复选框以启用监控项,使其被处理。
禁用监控项时,它会立即从历史缓存中移除(其最后一个值除外,该值会为日志保留)。
Latest data 点击链接以查看该监控项的最新数据。
此链接仅在编辑已存在的监控项时可用。

监控项类型特有的字段在对应页面中说明。

在主机级别编辑现有的模板级别监控项时,部分字段为只读。 您可以使用表单标题中的链接转到模板级别并在那里编辑它们,但请注意,模板级别上的更改会影响链接到该模板的所有主机上的监控项。

Tags 选项卡允许定义监控项级别的标签

监控项值预处理

预处理选项卡允许为接收到的值定义转换规则

监控项测试

要执行监控项测试,请确保服务器和 proxy 上的系统时间已同步。 如果服务器时间落后,监控项测试可能会返回错误消息:“The task has been expired.” 但是,在服务器和 proxy 上设置不同的时区不会影响测试结果。

可以对监控项进行测试,并在配置正确时返回实际值。 即使在监控项保存之前,也可以进行测试。

测试适用于主机和模板监控项、监控项原型以及低级别发现规则。 测试不适用于主动监控项。

监控项测试适用于以下被动监控项类型:

  • Zabbix agent
  • SNMP agent(v1、v2、v3)
  • IPMI agent
  • SSH 检查
  • Telnet 检查
  • JMX agent
  • 简单检查(icmpping*vmware.* 监控项除外)
  • Zabbix 内部
  • 计算型监控项
  • 外部检查
  • 数据库监控
  • HTTP agent
  • 脚本
  • 浏览器

要测试监控项,请点击监控项配置表单底部的 Test 按钮。 请注意,对于无法测试的监控项(如主动检查、被排除的简单检查),Test 按钮将被禁用。

监控项测试表单包含所需主机参数(主机地址、端口、使用服务器/proxy 测试(proxy 名称))以及监控项特定详细信息(例如 SNMPv2 community 或 SNMPv3 安全凭据)的字段。 这些字段具有上下文感知能力:

  • 在可能的情况下,这些值会被预填充;例如,对于需要 agent 的监控项,会从主机所选的 agent 接口中获取信息。
  • 对于模板监控项,这些值必须手动填写。
  • 纯文本宏值会被解析。
  • 当字段值(或部分字段值)为 secret 或 Vault 宏时,这些字段将为空,必须手动输入。
    如果任何监控项参数包含 secret 宏值,则会显示以下警告消息:“Item contains user-defined macros with secret values. Values of these macros should be entered manually.”
  • 当在当前监控项类型的上下文中不需要某些字段时,这些字段将被禁用(例如,对于计算型监控项,主机地址字段和 proxy 字段会被禁用)

要测试监控项,请点击 Get value。 如果成功获取到值,该值将填入 Value 字段,同时当前值(如果有)会移至 Previous value 字段,并计算 Prev. time 字段,即两个值(两次点击)之间的时间差;同时还会尝试检测 EOL 序列,并在检测到获取值中存在 "\n\r" 时切换为 CRLF。

点击 Get value and test 可测试预处理。

从主机获取的值和测试结果在发送到前端时会被截断,最大大小为 512KB。 如果测试结果被截断,将显示一个警告图标;将鼠标悬停在其上可查看详细信息。 如果值被截断,在后续比较大值(例如 JSON)的测试中,可能会导致数据类型验证失败;在这种情况下,将显示错误消息。 请注意,大于 512KB 的数据仍会由 Zabbix 服务器完整处理。

如果配置不正确,将显示一条错误消息,说明可能的原因。

从主机成功获取的值也可用于测试预处理步骤

表单按钮

表单底部的按钮允许执行多项操作。

添加项目。此按钮仅适用于新项目。
更新项目的属性。
根据当前项目的属性创建另一个项目。
立即执行对新项目值的检查。仅支持被动检查(请参阅更多详细信息)。
请注意,立即检查值时,配置缓存不会更新,因此值不会反映项目配置的最新更改。
通过获取值来测试项目配置是否正确。
删除项目历史记录和趋势。
删除项目。
取消编辑物品属性。

监控项数据限制

监控项数据限制取决于监控项数据类型和数据库后端。

数值(无符号)值按原样存储。 如果接收到浮点值,则仅存储整数部分(例如,1.23 → 1)。

数值(浮点)值按原样存储,支持大约 15 到 17 位精度,范围约为 -1.79E+308 到 1.79E+308。 同时也支持科学计数法表示的值(例如,1.23E+7、1e308、1.1E-4)。

文本值在存储前会被截断,以符合数据库值类型限制:

数据库 信息类型
字符 日志 文本
MySQL 255 个字符 65536 字节 65536 字节
PostgreSQL 255 个字符 65536 个字符 65536 个字符
SQLite(仅 Zabbix proxy) 255 个字符 65536 个字符 65536 个字符

二进制值限制为 16MiB(16777216 字节)。 超过此限制的值将被丢弃,并在前端中显示相应错误。

JSON 数据类型的值限制为 128MiB(134217728 字节)。 超过此限制的值将被丢弃,并在前端中显示相应错误。 对于 MySQL/MariaDB,建议为 history_json 表(用于存储 JSON 值)设置每日分区,因为该表可能会迅速增长,并长时间锁定 housekeeper。 如果您的使用场景涉及较大的 JSON 值(1MiB 或更大),请参阅如何为 large JSON value support 配置系统。

当 Zabbix 将任何监控项数据写入数据库时,它会使用 INSERT 查询并记录这些查询(如果 DebugLevel 设置为 45)。 较大的日志条目会被截断为 64KB。

自定义脚本限制

可用的自定义脚本长度取决于所使用的数据库:

数据库 字符数限制 字节数限制
MySQL 65535 65535
PostgreSQL 65535 不受限制
SQLite(仅 Zabbix proxy) 65535 不受限制

监控项超时

监控项超时用于指定 Zabbix 在将检查中止并判定为失败之前应等待多长时间。

当达到超时时间时,即使数据检索尚未完成,检查也会被中止。如果只接收到部分数据,则该监控项会变为不支持,并记录一条错误消息(例如,在 SNMP 检查中,多个 OID 里只有一个成功采集到数据时)。

对于许多监控项类型,您可以设置灵活的监控项超时:

  • 针对单个监控项
  • 按监控项类型(在 proxy 级别)
  • 按监控项类型(在全局级别)

如果您希望为某个特定监控项指定更长的超时时间,同时保持其他监控项的超时时间较低,则“针对单个监控项”的自定义超时会很有用。

超时优先级

  1. 单个监控项超时会覆盖任何其他超时设置。
  2. proxy 级别的超时会覆盖全局超时。

对于已设置灵活超时的检查,Zabbix 服务器proxy 配置中的超时不起作用。

灵活超时支持

以下监控项类型支持灵活的监控项超时设置:

不受支持的监控项

不受支持的监控项会显示为 不支持 状态,并且仍会按照其标准的 更新间隔 重新检查。

如果由于某种原因无法获取监控项的值,则该监控项会变为不受支持状态(例如,连接错误,或未配置用于处理该监控项的 poller)。 此外,未接收到历史数据的监控项也会保持在 不支持 状态。 这是预期行为——只有当监控项接收到新的有效历史数据时,才会转换为 正常 状态。

与问题类似,不受支持的监控项也仅在接收到新数据时才会重新评估——即使该监控项已不再有任何可用的历史数据。 换句话说,监控项和触发器仅会在接收到新数据时改变其状态。 但是,如果触发器表达式包含 日期和时间 和/或 nodata() 函数,则触发器将每 30 秒重新计算一次(详见 触发器计算时间)。