1 Zabbix agent
概述
本节提供有关使用 Zabbix agent 通信进行数据采集的监控项键值的详细信息。
存在被动和主动 agent 检查。 在配置监控项时,您可以选择所需的类型:
- Zabbix agent - 用于被动检查
- Zabbix agent (active) - 用于主动检查
请注意,Zabbix agent 支持的所有监控项键值也都受新一代 Zabbix agent 2 支持。 请参阅附加监控项键值,这些键值仅可用于 agent 2。
支持的监控项键值
下面列出了可与 Zabbix agent 一起使用的监控项键值。
这些监控项键值在列出时不包含参数和附加信息。 单击监控项键值可查看完整详细信息。
| Item key | Description | Item group |
|---|---|---|
| kernel.maxfiles | 操作系统支持的最大打开文件数。 | 内核 |
| kernel.maxproc | 操作系统支持的最大进程数。 | |
| kernel.openfiles | 当前打开的文件描述符数量。 | |
| log | 日志文件监控。 | 日志监控 |
| log.count | 受监控日志文件中匹配行的数量。 | |
| logrt | 轮转日志文件监控。 | |
| logrt.count | 受监控且已轮转的日志文件中匹配行的数量。 | |
| modbus.get | 读取 Modbus 数据。 | Modbus |
| net.dns | 检查 DNS 服务的状态。 | 网络 |
| net.dns.perf | 检查 DNS 服务的性能。 | |
| net.dns.record | 执行 DNS 查询。 | |
| net.if.collisions | 窗口外冲突的数量。 | |
| net.if.discovery | 网络接口列表。 | |
| net.if.in | 网络接口上的入站流量统计。 | |
| net.if.out | 网络接口上的出站流量统计。 | |
| net.if.total | 网络接口上的入站和出站流量统计总和。 | |
| net.tcp.listen | 检查此 TCP 端口是否处于 LISTEN 状态。 | |
| net.tcp.port | 检查是否可以与指定端口建立 TCP 连接。 | |
| net.tcp.service | 检查服务是否正在运行并接受 TCP 连接。 | |
| net.tcp.service.perf | 检查 TCP 服务的性能。 | |
| net.tcp.socket.count | 返回与参数匹配的 TCP 套接字数量。 | |
| net.udp.listen | 检查此 UDP 端口是否处于 LISTEN 状态。 | |
| net.udp.service | 检查服务是否正在运行并响应 UDP 请求。 | |
| net.udp.service.perf | 检查 UDP 服务的性能。 | |
| net.udp.socket.count | 返回与参数匹配的 UDP 套接字数量。 | |
| proc.cpu.util | 进程 CPU 利用率百分比。 | 进程 |
| proc.get | 操作系统进程及其参数列表。 | |
| proc.mem | 进程使用的内存字节数。 | |
| proc.num | 进程数量。 | |
| sensor | 硬件传感器读数。 | 传感器 |
| system.boottime | 系统启动时间。 | 系统 |
| system.cpu.discovery | 检测到的 CPU/CPU 核心列表。 | |
| system.cpu.intr | 设备中断。 | |
| system.cpu.load | CPU 负载。 | |
| system.cpu.num | CPU 数量。 | |
| system.cpu.switches | 上下文切换次数。 | |
| system.cpu.util | CPU 利用率百分比。 | |
| system.hostname | 系统主机名。 | |
| system.hw.chassis | 机箱信息。 | |
| system.hw.cpu | CPU 信息。 | |
| system.hw.devices | PCI 或 USB 设备列表。 | |
| system.hw.macaddr | MAC 地址列表。 | |
| system.localtime | 系统时间。 | |
| system.run | 在主机上运行指定命令。 | |
| system.stat | 系统统计信息。 | |
| system.sw.arch | 软件架构信息。 | |
| system.sw.os | 操作系统信息。 | |
| system.sw.os.get | 操作系统的详细信息(版本、类型、发行版名称、次版本号和主版本号等)。 | |
| system.sw.packages | 已安装软件包列表。 | |
| system.sw.packages.get | 已安装软件包的详细列表。 | |
| system.swap.in | 换入(从设备到内存)统计信息。 | |
| system.swap.out | 换出(从内存到设备)统计信息。 | |
| system.swap.size | 交换空间大小,以字节表示或以占总量的百分比表示。 | |
| system.uname | 系统标识。 | |
| system.uptime | 系统运行时间(秒)。 | |
| system.users.num | 已登录用户数量。 | |
| vfs.dev.discovery | 块设备及其类型列表。 | 虚拟文件系统 |
| vfs.dev.read | 磁盘读取统计信息。 | |
| vfs.dev.write | 磁盘写入统计信息。 | |
| vfs.dir.count | 目录条目数量。 | |
| vfs.dir.get | 目录条目列表。 | |
| vfs.dir.size | 目录大小。 | |
| vfs.file.cksum | 使用 UNIX cksum 算法计算的文件校验和。 | |
| vfs.file.contents | 获取文件内容。 | |
| vfs.file.exists | 检查文件是否存在。 | |
| vfs.file.get | 返回文件信息。 | |
| vfs.file.md5sum | 文件的 MD5 校验和。 | |
| vfs.file.owner | 获取文件所有者。 | |
| vfs.file.permissions | 返回一个 4 位字符串,其中包含 UNIX 权限的八进制数字。 | |
| vfs.file.regexp | 检索文件中的字符串。 | |
| vfs.file.regmatch | 在文件中查找字符串。 | |
| vfs.file.size | 文件大小。 | |
| vfs.file.time | 文件时间信息。 | |
| vfs.fs.discovery | 已挂载文件系统及其类型和挂载选项列表。 | |
| vfs.fs.get | 已挂载文件系统及其类型、可用磁盘空间、inode 统计信息和挂载选项列表。 | |
| vfs.fs.inode | inode 数量或百分比。 | |
| vfs.fs.size | 磁盘空间大小,以字节表示或以占总量的百分比表示。 | |
| vm.memory.size | 内存大小,以字节表示或以占总量的百分比表示。 | 虚拟内存 |
| web.page.get | 获取网页内容。 | Web 监控 |
| web.page.perf | 完整网页的加载时间。 | |
| web.page.regexp | 在网页上查找字符串。 | |
| agent.hostmetadata | agent 主机元数据。 | Zabbix |
| agent.hostname | agent 主机名。 | |
| agent.ping | agent 可用性检查。 | |
| agent.variant | Zabbix agent 的变体(Zabbix agent 或 Zabbix agent 2)。 | |
| agent.version | Zabbix agent 的版本。 | |
| zabbix.stats | 返回一组 Zabbix 服务器或 proxy 内部指标。如果指定了 ip 和 port,则从远程实例获取指标;否则,从本地实例获取。 |
|
| zabbix.stats | 返回 Zabbix 服务器或 proxy 上队列中延迟的受监控监控项数量。如果指定了 ip 和 port,则从远程实例获取指标;否则,从本地实例获取。 |
支持的平台
除非在监控项详情中另有说明,否则 agent 监控项(以及所有参数)支持以下平台:
- Linux
- FreeBSD
- Solaris
- HP-UX
- AIX
- MacOS X
- OpenBSD
- NetBSD
许多 agent 监控项也支持 Windows。
详情请参见 Windows agent 监控项 页面。
监控项键值详情
不带尖括号的参数为必填参数。
带有尖括号 < > 标记的参数为可选参数。
kernel.maxfiles
操作系统支持的最大打开文件数。
返回值:整数。
支持的平台:Linux, FreeBSD, MacOS X, OpenBSD, NetBSD.
kernel.maxproc
操作系统支持的最大进程数。
返回值:整数。
支持的平台:Linux 2.6及更高版本,FreeBSD,Solaris,MacOS X,OpenBSD,NetBSD。
kernel.openfiles
当前打开文件描述符的数量。
返回值:整数。
支持的平台:Linux(该项可能在其他类UNIX平台上也可以工作)。
log[file,<regexp>,<encoding>,<maxlines>,<mode>,<output>,<maxdelay>,<options>,<persistent dir>]
对日志文件的监控。
返回值:Log。
请参见支持的平台。
参数:
- file - 日志文件的完整路径和名称;
- regexp - 描述所需模式的正则表达式;
- encoding - 代码页标识符;
- maxlines - agent 每秒发送到 Zabbix 服务器或 proxy 的最大新行数。
此参数会覆盖 zabbix_agentd.conf 中的 'MaxLinesPerSecond' 值;
- mode - 可选值:all(默认)或 skip - 跳过对较旧数据的处理(仅影响新创建的监控项);
- output - 可选的输出格式模板。
\0 转义序列会被替换为匹配到的文本部分(从匹配开始的第一个字符到匹配结束的字符),而 \N(其中 N=1...9)转义序列会被替换为第 N 个匹配分组(如果 N 超过已捕获分组的数量,则替换为空字符串);
- maxdelay - 最大延迟(秒)。
类型:float。
取值:0 - (默认)永不忽略日志文件中的行;> 0.0 - 为了在 "maxdelay" 秒内分析最新的行而忽略较旧的行。
使用前请先阅读 maxdelay 说明!
- options - 附加选项:
mtime-noreread - 对于非唯一记录,仅在文件大小发生变化时重新读取(忽略修改时间变化)。 (此参数自 5.0.2 起已弃用,因为现在会忽略 mtime。) - persistent dir(仅适用于 Unix 系统上的 zabbix_agentd;Zabbix agent 2 不支持)- 用于存储持久化文件的目录绝对路径名。 另请参见关于持久化文件的附加说明。
说明:
- 该监控项必须配置为主动检查。
- 如果文件不存在,或者权限不允许访问,则该监控项会变为不支持。
- 如果
output留空,则返回包含匹配文本的整行内容。 请注意,除 'Result is TRUE' 之外的所有全局正则表达式类型始终返回整个匹配行,并且会忽略output参数。 - 使用
output参数进行内容提取是在 agent 端完成的。
示例:
log[/var/log/syslog]
log[/var/log/syslog,error]
log[/home/zabbix/logs/logfile,,,100]
使用 output 参数从日志记录中提取数字的示例:
log[/app1/app.log,"task run [0-9.]+ sec, processed ([0-9]+) records, [0-9]+ errors",,,,\1] #此监控项将匹配日志记录 "2015-11-13 10:08:26 task run 6.08 sec, processed 6080 records, 0 errors",并且仅向服务器发送 '6080'。由于发送的是数值,因此该监控项的“信息类型”可以设置为“数值(无符号)”,并且该值可用于图形、触发器等。
使用 output 参数在发送到服务器之前重写日志记录的示例:
log[/app1/app.log,"([0-9 :-]+) task run ([0-9.]+) sec, processed ([0-9]+) records, ([0-9]+) errors",,,,"\1 RECORDS: \3, ERRORS: \4, DURATION: \2"] #此监控项将匹配日志记录 "2015-11-13 10:08:26 task run 6.08 sec, processed 6080 records, 0 errors",并将修改后的记录 "2015-11-13 10:08:26 RECORDS: 6080, ERRORS: 0, DURATION: 6.08" 发送到服务器。
log.count[file,<regexp>,<encoding>,<maxproclines>,<mode>,<maxdelay>,<options>,<persistent dir>]
受监控日志文件中匹配行的数量。
返回值:Integer。
请参见支持的平台。
参数:
- file - 日志文件的完整路径和名称;
- regexp - 描述所需模式的正则表达式;
- encoding - 代码页标识符;
- maxproclines - agent 每秒将分析的新行最大数量(不能超过 10000)。
默认值为 zabbix_agentd.conf 中 'MaxLinesPerSecond' 的 10 倍。
- mode - 可选值:all(默认)或 skip - 跳过对较旧数据的处理(仅影响新创建的监控项)。
- maxdelay - 最大延迟秒数。
类型:float。
取值:0 - (默认)永不忽略日志文件行;> 0.0 - 忽略较旧的行,以便在“maxdelay”秒内分析最新的行。
使用前请先阅读 maxdelay 说明!
- options - 附加选项:
mtime-noreread - 对于非唯一记录,仅当文件大小发生变化时才重新读取(忽略修改时间变化)。 (此参数自 5.0.2 起已弃用,因为现在会忽略 mtime。) - persistent dir(仅适用于 Unix 系统上的 zabbix_agentd;Zabbix agent 2 不支持)- 用于存储持久化文件的目录绝对路径名。 另请参见关于持久化文件的附加说明。
注释:
- 该监控项必须配置为主动检查。
- 匹配行的计数基于自 agent 上次检查日志以来的新行,因此取决于监控项更新间隔。
- 如果文件缺失或权限不允许访问,则该监控项会变为不支持。
logrt[file regexp,<regexp>,<encoding>,<maxlines>,<mode>,<output>,<maxdelay>,<options>,<persistent dir>]
对已轮转日志文件的监控。
返回值:Log。
请参见支持的平台。
参数:
- file regexp - 文件的绝对路径,其中文件名使用正则表达式指定。
请注意,正则表达式仅应用于文件名,不需要匹配整个名称(例如,/path/to/agent 将匹配 zabbix_agentd.log)。
- regexp - 描述所需内容模式的正则表达式。
- encoding - 代码页标识符。
- maxlines - agent 每秒发送到 Zabbix 服务器或 proxy 的最大新行数。
此参数会覆盖 zabbix_agentd.conf 中的 'MaxLinesPerSecond' 值。
- mode - 可选值:all(默认)或 skip - 跳过对较旧数据的处理(仅影响新创建的监控项)。
- output - 可选的输出格式模板。
\0 转义序列会被替换为匹配到的文本部分(从匹配开始的第一个字符到匹配结束的字符),而 \N(其中 N=1...9)转义序列会被替换为第 N 个匹配组(如果 N 超过已捕获组的数量,则替换为空字符串)。
- maxdelay - 最大延迟(秒)。
类型:float。
取值:0 - (默认)永不忽略日志文件行;> 0.0 - 忽略较旧的行,以便在 "maxdelay" 秒内分析到最新的行。
使用前请先阅读 maxdelay 说明!
- options - 日志文件轮转类型及其他选项。
可能的值:
rotate(默认),
copytruncate - 请注意,copytruncate 不能与 maxdelay 一起使用。 在这种情况下,maxdelay 必须为 0 或不指定;请参见 copytruncate 说明,
mtime-reread - 非唯一记录,当修改时间或大小变化时重新读取(如果未显式设置mtime-*选项,则默认使用),
mtime-noreread - 非唯一记录,仅当大小变化时重新读取(忽略修改时间变化)。 - persistent dir(仅适用于 Unix 系统上的 zabbix_agentd;Zabbix agent 2 不支持)- 用于存储持久化文件的目录绝对路径名。 另请参见关于持久化文件的附加说明。
注释:
- 该监控项必须配置为主动检查。
- 日志轮转基于文件的最后修改时间。
- 请注意,logrt 的设计是用于处理一个当前活动的日志文件,以及若干其他匹配但非活动的已轮转文件。 例如,如果某个目录中有许多活动日志文件,则应为每个文件分别创建一个 logrt 监控项。 否则,如果一个 logrt 监控项匹配到过多文件,可能会导致内存耗尽并使监控崩溃。
- 如果
output留空,则返回包含匹配文本的整行内容。 请注意,除“Result is TRUE”之外的所有全局正则表达式类型始终返回整个匹配行,并且会忽略output参数。 - 使用
output参数进行内容提取是在 agent 端完成的。 - 在
file regexp参数中,日志目录路径和日志文件正则表达式必须使用正确的目录分隔符分开:- 在 Windows 上,分隔符必须是反斜杠 (\);在其他位置可以容忍正斜杠,但用于分隔日志目录路径和日志文件正则表达式的位置除外(见下方示例)。
- 在其他系统上,必须使用正斜杠 (/)。
Windows 示例:
logrt["c:/dir1/dir2/dir3\filename.*\.log","pattern_to_match"] #该监控项将从 "c:/dir1/dir2/dir3" 中收集日志文件的数据,这些文件名以 "filename" 开头,并以匹配 ".log" 的任意扩展名结尾。
logrt["//example.com/share/dir1/dir2/dir3\filename.*\.log","pattern_to_match"] #该监控项将从网络共享 "//example.com/share/dir1/dir2/dir3" 中收集日志文件的数据,这些文件名以 "filename" 开头,并以匹配 ".log" 的任意扩展名结尾。
其他系统示例:
logrt["/home/zabbix/logs/^logfile[0-9]{1,3}$",,,100] #该监控项将匹配类似 "logfile1" 的文件(不会匹配 ".logfile1")。
logrt["/home/user/^logfile_.*_[0-9]{1,3}$","pattern_to_match","UTF-8",100] #该监控项将从诸如 "logfile_abc_1" 或 "logfile__001" 之类的文件中收集数据。
使用 output 参数从日志记录中提取数字的示例:
logrt[/app1/^test.*log$,"task run [0-9.]+ sec, processed ([0-9]+) records, [0-9]+ errors",,,,\1] #该监控项将匹配日志记录 "2015-11-13 10:08:26 task run 6.08 sec, processed 6080 records, 0 errors",并仅将 '6080' 发送到服务器。由于发送的是数值,因此该监控项的 "Type of information" 可以设置为 "Numeric (unsigned)",并且该值可用于图形、触发器等。
使用 output 参数在发送到服务器之前重写日志记录的示例:
logrt[/app1/^test.*log$,"([0-9 :-]+) task run ([0-9.]+) sec, processed ([0-9]+) records, ([0-9]+) errors",,,,"\1 RECORDS: \3, ERRORS: \4, DURATION: \2"] #该监控项将匹配日志记录 "2015-11-13 10:08:26 task run 6.08 sec, processed 6080 records, 0 errors",并将修改后的记录 "2015-11-13 10:08:26 RECORDS: 6080, ERRORS: 0, DURATION: 6.08" 发送到服务器。
logrt.count[file regexp,<regexp>,<encoding>,<maxproclines>,<mode>,<maxdelay>,<options>,<persistent dir>]
已轮转的受监控日志文件中匹配行的计数。
返回值:Integer。
请参见支持的平台。
参数:
- file regexp - 文件的绝对路径,其中文件名使用常规表达式指定。
请注意,正则表达式仅应用于文件名,且不需要匹配整个名称(例如,/path/to/agent 将匹配 zabbix_agentd.log)。
- regexp - 描述所需模式的常规表达式。
- encoding - 代码页标识符。
- maxproclines - agent 每秒将分析的新行最大数量(不能超过 10000)。
默认值为 zabbix_agentd.conf 中 10*'MaxLinesPerSecond'。
- mode - 可选值:all(默认)或 skip - 跳过对较旧数据的处理(仅影响新创建的监控项)。
- maxdelay - 最大延迟(秒)。
类型:float。
取值:0 - (默认)从不忽略日志文件行;> 0.0 - 忽略较旧的行,以便在“maxdelay”秒内分析到最新的行。
使用前请先阅读 maxdelay 说明!
- options - 日志文件轮转类型及其他选项。
可能的值:
rotate(默认),
copytruncate - 请注意,copytruncate 不能与 maxdelay 一起使用。 在这种情况下,maxdelay 必须为 0 或不指定;请参见 copytruncate 说明,
mtime-reread - 非唯一记录,如果修改时间或大小发生变化则重新读取(默认),
mtime-noreread - 非唯一记录,仅当大小发生变化时重新读取(忽略修改时间变化)。 - persistent dir(仅适用于 Unix 系统上的 zabbix_agentd;Zabbix agent 2 不支持)- 用于存储持久化文件的目录绝对路径名。 另请参见关于持久化文件的附加说明。
注释:
- 该监控项必须配置为主动检查。
- 匹配行的计数基于自 agent 上次检查日志以来的新行,因此取决于监控项更新间隔。
- 日志轮转基于文件的最后修改时间。
- 在
file regexp参数中,日志目录路径和日志文件正则表达式必须使用正确的目录分隔符分开:- 在 Windows 上,分隔符必须是反斜杠 (\);在其他位置可以容忍正斜杠,但用于分隔日志目录路径和日志文件正则表达式的位置除外(见下方示例)。
- 在其他系统上,必须使用正斜杠 (/)。
Windows 示例:
logrt.count["c:/dir1/dir2/dir3\filename.*\.log","pattern_to_match"] #此监控项将统计位于 "c:/dir1/dir2/dir3" 的日志文件中模式 "pattern_to_match" 的匹配次数。
logrt.count["//example.com/share/dir1/dir2/dir3\filename.*\.log","pattern_to_match"] #此监控项将统计网络共享 "//example.com/share/dir1/dir2/dir3" 上日志文件中模式 "pattern_to_match" 的匹配次数。
其他系统示例:
logrt.count["/home/zabbix/logs/.*","^logfile[0-9]{1,3}$",,100] #此监控项将统计 "/home/zabbix/logs" 目录中日志文件里模式 "^logfile[0-9]{1,3}$" 的匹配次数。
logrt.count["/home/user/^logfile_.*_[0-9]{1,3}$","pattern_to_match","UTF-8",100] #此监控项将统计位于 "/home/user" 的日志文件中模式 "pattern_to_match" 的出现次数。
modbus.get[endpoint,<slave id>,<function>,<address>,<count>,<type>,<endianness>,<offset>]
读取 Modbus 数据。
返回值:JSON string。
支持的平台:Linux、Windows。
参数:
- endpoint - 定义为
protocol://connection_string的端点; - slave id - 从站 ID;
- function - Modbus 功能;
- address - 第一个寄存器、线圈或输入的地址;
- count - 要读取的记录数;
- type - 数据类型;
- endianness - 字节序配置;
- offset - 从“address”开始要丢弃其结果的寄存器数量。
在 Windows 上,此监控项会遵循 endpoint 参数中的 UNC 路径,这可能带来安全风险。
请参阅参数的详细说明。
net.dns[<ip>,name,<type>,<timeout>,<count>,<protocol>]
检查 DNS 服务的状态。
返回值:0 - DNS 解析失败(DNS 服务器未响应或返回错误);1 - DNS 解析成功。
请参见支持的平台。
参数:
- ip(在 Windows 上会被忽略,除非使用 Zabbix agent 2)- DNS 服务器的 IP 地址(留空则使用默认 DNS 服务器);
- name - 要查询的 DNS 名称;
- type - 要查询的记录类型(默认为 SOA);
- timeout(在 Windows 上会被忽略,除非使用 Zabbix agent 2)- 请求超时时间,单位为秒(默认为 1 秒);
- count(在 Windows 上会被忽略,除非使用 Zabbix agent 2)- 请求重试次数(默认为 2);
- protocol - 执行 DNS 查询时使用的协议:udp(默认)或 tcp。
说明:
type的可能取值为:ANY、A、NS、CNAME、MB、MG、MR、PTR、MD、MF、MX、SOA、NULL、WKS(Windows 上的 Zabbix agent 不支持,所有操作系统上的 Zabbix agent 2 均不支持)、HINFO、MINFO、TXT、SRV。- 对于反向 DNS 查询(当
type设置为 PTR 时),可以同时使用反转和非反转格式提供 DNS 名称(请参见下面的示例)。 请注意,当请求 PTR 记录时,DNS 名称实际上是一个 IP 地址。 - 不支持国际化域名,请改用 IDNA 编码后的名称。
示例:
net.dns[198.51.100.1,example.com,MX,2,1]
net.dns[,198.51.100.1,PTR]
net.dns[,1.100.51.198.in-addr.arpa,PTR]
net.dns[,2a00:1450:400f:800::200e,PTR]
net.dns[,e.0.0.2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.0.f.0.0.4.0.5.4.1.0.0.a.2.ip6.arpa,PTR]
net.dns.perf[<ip>,name,<type>,<timeout>,<count>,<protocol>]
检查 DNS 服务的性能。
返回值:Float(0 - 服务不可用;秒 - 等待服务响应所花费的秒数)。
请参见支持的平台。
参数:
- ip(在 Windows 上会被忽略,除非使用 Zabbix agent 2)- DNS 服务器的 IP 地址(留空则使用默认 DNS 服务器);
- name - 要查询的 DNS 名称;
- type - 要查询的记录类型(默认为 SOA);
- timeout(在 Windows 上会被忽略,除非使用 Zabbix agent 2)- 请求超时时间,单位为秒(默认为 1 秒);
- count(在 Windows 上会被忽略,除非使用 Zabbix agent 2)- 请求的重试次数(默认为 2);
- protocol - 执行 DNS 查询时使用的协议:udp(默认)或 tcp。
说明:
type的可能取值为:
ANY、A、NS、CNAME、MB、MG、MR、PTR、MD、MF、MX、SOA、NULL、WKS(Windows 上的 Zabbix agent 以及所有操作系统上的 Zabbix agent 2 不支持)、HINFO、MINFO、TXT、SRV。- 对于反向 DNS 查询(当
type设置为 PTR 时),可以同时使用反转和非反转格式提供 DNS 名称(请参见下面的示例)。 请注意,当请求 PTR 记录时,DNS 名称实际上是一个 IP 地址。 - 不支持国际化域名,请改用 IDNA 编码的名称。
- 当 DNS 服务器返回错误代码(例如
NXDOMAIN或SERVFAIL)时,该监控项返回的是响应时间而不是0。
示例:
net.dns.perf[198.51.100.1,example.com,MX,2,1]
net.dns.perf[,198.51.100.1,PTR]
net.dns.perf[,1.100.51.198.in-addr.arpa,PTR]
net.dns.perf[,2a00:1450:400f:800::200e,PTR]
net.dns.perf[,e.0.0.2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.0.f.0.0.4.0.5.4.1.0.0.a.2.ip6.arpa,PTR]
net.dns.record[<ip>,name,<type>,<timeout>,<count>,<protocol>]
执行 DNS 查询。
Zabbix agent 2 还提供了 net.dns.get,它提供了更多功能,例如支持更多记录类型以及对 DNS 监控进行更精细的控制。
返回值:包含所需类型信息的字符串。
请参见支持的平台。
参数:
- ip(在 Windows 上会被忽略,除非使用 Zabbix agent 2)- DNS 服务器的 IP 地址(留空则使用默认 DNS 服务器);
- name - 要查询的 DNS 名称;
- type - 要查询的记录类型(默认为 SOA);
- timeout(在 Windows 上会被忽略,除非使用 Zabbix agent 2)- 请求超时时间,单位为秒(默认为 1 秒);
- count(在 Windows 上会被忽略,除非使用 Zabbix agent 2)- 请求重试次数(默认为 2);
- protocol - 执行 DNS 查询时使用的协议:udp(默认)或 tcp。
说明:
type的可能取值包括:
ANY、A、NS、CNAME、MB、MG、MR、PTR、MD、MF、MX、SOA、NULL、WKS(Windows 上的 Zabbix agent 不支持,所有操作系统上的 Zabbix agent 2 均不支持)、HINFO、MINFO、TXT、SRV。- 对于反向 DNS 查询(当
type设置为 PTR 时),可以使用反转格式或非反转格式提供 DNS 名称(见下方示例)。 请注意,当请求 PTR 记录时,DNS 名称实际上是一个 IP 地址。 - 不支持国际化域名,请改用 IDNA 编码的名称。
示例:
net.dns.record[198.51.100.1,example.com,MX,2,1]
net.dns.record[,198.51.100.1,PTR]
net.dns.record[,1.100.51.198.in-addr.arpa,PTR]
net.dns.record[,2a00:1450:400f:800::200e,PTR]
net.dns.record[,e.0.0.2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.0.f.0.0.4.0.5.4.1.0.0.a.2.ip6.arpa,PTR]
net.if.collisions[if]
窗口外冲突的数量。
返回值:整数。
支持的平台:Linux、FreeBSD、Solaris、AIX、MacOS X、OpenBSD、NetBSD。
在 NetBSD 上需要 root 权限。
参数:
- if - 网络接口名称
net.if.discovery
网络接口列表。用于低级别发现。
返回值:JSON string。
支持的平台:Linux、FreeBSD、Solaris、HP-UX、AIX、OpenBSD、NetBSD、Windows。
net.if.in[if,<mode>]
网络接口上的入站流量统计。
返回值:整数。
支持的平台:Linux、FreeBSD、Solaris5、HP-UX、AIX、MacOS X、OpenBSD、NetBSD、Windows。
在 NetBSD 上需要 root 权限。
参数:
- if - 网络接口名称(Unix);网络接口完整描述或 IPv4 地址;或者,如果用大括号括起,则为网络接口 GUID(Windows);
- mode - 可选值:
bytes - 字节数(默认)
packets - 数据包数量
errors - 错误数量
dropped - 丢弃的数据包数量
overruns (fifo) - FIFO 缓冲区错误数量
frame - 数据包帧错误数量
compressed - 设备驱动程序接收的压缩数据包数量
multicast - 设备驱动程序接收的组播帧数量
注释:
- 您可以将此键与 每秒速率变化 预处理步骤一起使用,以获取每秒字节数统计。
- dropped 模式仅在 Linux、FreeBSD、HP-UX、MacOS X、OpenBSD、NetBSD 上受支持。
- overruns、frame、compressed、multicast 模式仅在 Linux 上受支持。
- 在 HP-UX 上,此监控项不提供回环接口(例如 lo0)的详细信息。
示例:
net.if.in[eth0]
net.if.in[eth0,errors]
net.if.out[if,<mode>]
网络接口上的出站流量统计。
返回值:整数。
支持的平台:Linux、FreeBSD、Solaris5、HP-UX、AIX、MacOS X、OpenBSD、NetBSD、Windows。
在 NetBSD 上需要 root 权限。
参数:
- if - 网络接口名称(Unix);网络接口完整描述或 IPv4 地址;或者,如果用大括号括起,则为网络接口 GUID(Windows);
- mode - 可选值:
bytes - 字节数(默认)
packets - 数据包数
errors - 错误数
dropped - 丢弃的数据包数
overruns (fifo) - FIFO 缓冲区错误数
collisions (colls) - 在接口上检测到的冲突数
carrier - 设备驱动程序检测到的载波丢失次数
compressed - 设备驱动程序发送的压缩数据包数
注释:
- 您可以将此键与 每秒速率变化 预处理步骤一起使用,以获取每秒字节数统计。
- dropped 模式仅在 Linux、HP-UX 上受支持。
- overruns、collision、carrier、compressed 模式仅在 Linux 上受支持。
- 在 HP-UX 上,此监控项不提供回环接口(例如 lo0)的详细信息。
示例:
net.if.out[eth0]
net.if.out[eth0,errors]
net.if.total[if,<mode>]
网络接口上入站和出站流量统计的总和。
返回值:Integer。
支持的平台:Linux、FreeBSD、Solaris5、HP-UX、AIX、MacOS X、OpenBSD、NetBSD、Windows。
在 NetBSD 上需要 root 权限。
参数:
- if - 网络接口名称(Unix);网络接口完整描述或 IPv4 地址;或者,如果用大括号括起,则为网络接口 GUID(Windows);
- mode - 可选值:
bytes - 字节数(默认)
packets - 数据包数
errors - 错误数
dropped - 丢弃的数据包数
overruns (fifo) - FIFO 缓冲区错误数
collisions (colls) - 在接口上检测到的冲突数
compressed - 设备驱动程序发送或接收的压缩数据包数
注释:
- 您可以将此键与 Change per second 预处理步骤一起使用,以获取每秒字节数统计。
- dropped 模式仅在 Linux、HP-UX 上受支持。
仅当您的平台上
net.if.in和net.if.out对丢弃的数据包都有效时,才支持丢弃的数据包。 - overruns、collision、compressed 模式仅在 Linux 上受支持。
- 在 HP-UX 上,此监控项不提供回环接口(例如 lo0)的详细信息。
示例:
net.if.total[eth0]
net.if.total[eth0,errors]
net.tcp.listen[port]
检查此 TCP 端口是否处于 LISTEN 状态。
返回值:0 - 不处于 LISTEN 状态;1 - 处于 LISTEN 状态。
支持的平台:Linux、FreeBSD、Solaris、MacOS X、Windows。
参数:
- port - TCP 端口号
在 Linux 内核 2.6.14 及以上版本中,如果可能,会通过内核的 NETLINK 接口获取处于监听状态的 TCP socket 信息。 否则,将从 /proc/net/tcp 和 /roc/net/tcp6 文件中获取该信息。
示例:
net.tcp.listen[80]
net.tcp.port[<ip>,port]
检查是否可以与指定端口建立 TCP 连接。
返回值:0 - 无法连接;1 - 可以连接。
请参见支持的平台。
参数:
- ip - IP 地址或 DNS 名称(默认为 127.0.0.1);
- port - 端口号。
说明:
- 如需进行简单的 TCP 性能测试,请使用
net.tcp.service.perf[tcp,<ip>,<port>]。 - 这些检查可能会导致系统守护进程日志文件中出现额外消息(通常会记录 SMTP 和 SSH 会话)。
示例:
net.tcp.port[,80] #该监控项可用于测试运行在 80 端口上的 Web 服务器可用性
net.tcp.service[service,<ip>,<port>]
检查某个服务是否正在运行并接受 TCP 连接。
返回值:0 - 服务不可用;1 - 服务正在运行。
请参见支持的平台。
参数:
- service - ssh、ldap、smtp、ftp、http、pop、nntp、imap、tcp、https 或 telnet(参见详细信息);
- ip - IP 地址或 DNS 名称(默认值为 127.0.0.1);
- port - 端口号(默认使用该服务的标准端口号)。
说明:
- 这些检查可能会在系统守护进程日志文件中产生额外消息(通常会记录 SMTP 和 SSH 会话)。
- 当前不支持对加密协议的检查(例如端口 993 上的 IMAP 或端口 995 上的 POP)。
作为一种变通方法,请对此类检查使用
net.tcp.port[]。 - 在 Windows 上,对 LDAP 和 HTTPS 的检查仅受 Zabbix agent 2 支持。
- telnet 检查会查找登录提示符(末尾为 ':')。
示例:
net.tcp.service[ftp,,45] #此监控项可用于测试 TCP 45 端口上 FTP 服务器的可用性
net.tcp.service.perf[service,<ip>,<port>]
检查 TCP 服务的性能。
返回值:Float(0 - 服务不可用;秒 - 等待服务响应所花费的秒数)。
请参见支持的平台。
参数:
- service - ssh、ldap、smtp、ftp、http、pop、nntp、imap、tcp、https 或 telnet(请参见详细信息);
- ip - IP 地址或 DNS 名称(默认为 127.0.0.1);
- port - 端口号(默认使用标准服务端口号)。
注释:
- 当前不支持对加密协议的检查(例如端口 993 上的 IMAP 或端口 995 上的 POP)。
作为一种变通方法,请对此类检查使用
net.tcp.service.perf[tcp,<ip>,<port>]。 - telnet 检查会查找登录提示符(末尾为 ':')。
示例:
net.tcp.service.perf[ssh] #此监控项可用于测试 SSH 服务器初始响应的速度
net.tcp.socket.count[<laddr>,<lport>,<raddr>,<rport>,<state>]
返回与参数匹配的 TCP 套接字数量。
返回值:整数。
支持的平台:Linux、Windows。
参数:
- laddr - 本地 IPv4/6 地址或 CIDR 子网;
- lport - 本地端口号或服务名称;
- raddr - 远程 IPv4/6 地址或 CIDR 子网;
- rport - 远程端口号或服务名称;
- state - 连接状态(established、syn_sent、syn_recv、fin_wait1、fin_wait2、time_wait、close、close_wait、last_ack、listen、closing)。
示例:
net.tcp.socket.count[,80,,,established] #本地 TCP 端口 80 上处于 established 状态的连接数
net.udp.listen[port]
检查此 UDP 端口是否处于 LISTEN 状态。
返回值:0 - 不处于 LISTEN 状态;1 - 处于 LISTEN 状态。
支持的平台:Linux、FreeBSD、Solaris、MacOS X。
参数:
- port - UDP 端口号
示例:
net.udp.listen[68]
net.udp.service[service,<ip>,<port>]
检查服务是否正在运行并响应 UDP 请求。
返回值:0 - 服务已停止;1 - 服务正在运行。
请参见支持的平台。
参数:
- service - ntp(请参见详细信息);
- ip - IP 地址或 DNS 名称(默认为 127.0.0.1);
- port - 端口号(默认使用标准服务端口号)。
示例:
net.udp.service[ntp,,45] #this item can be used to test the availability of NTP service on UDP port 45
net.udp.service.perf[service,<ip>,<port>]
检查 UDP 服务的性能。
返回值:Float(0 - 服务不可用;秒 - 等待服务响应所花费的秒数)。
请参见支持的平台。
参数:
- service - ntp(请参见详细信息);
- ip - IP 地址或 DNS 名称(默认为 127.0.0.1);
- port - 端口号(默认使用标准服务端口号)。
示例:
net.udp.service.perf[ntp] #this item can be used to test response time from NTP service
net.udp.socket.count[<laddr>,<lport>,<raddr>,<rport>,<state>]
返回与参数匹配的 UDP 套接字数量。
返回值:整数。
支持的平台:Linux、Windows。
参数:
- laddr - 本地 IPv4/6 地址或 CIDR 子网;
- lport - 本地端口号或服务名称;
- raddr - 远程 IPv4/6 地址或 CIDR 子网;
- rport - 远程端口号或服务名称;
- state - 连接状态(established、unconn)。
示例:
net.udp.socket.count[,,,,established] #返回处于已连接状态的 UDP 套接字数量
proc.cpu.util[<name>,<user>,<type>,<cmdline>,<mode>,<zone>]
进程 CPU 利用率百分比。
返回值:Float。
支持的平台:Linux、Solaris6。
参数:
- name - 进程名称(默认为 所有进程);
- user - 用户名(默认为 所有用户);
- type - CPU 利用率类型:total(默认)、user 或 system;
- cmdline - 按命令行过滤(这是一个正则表达式);
- mode - 数据采集模式:avg1(默认)、avg5 或 avg15;
- zone - 目标 zone:current(默认)或 all。 此参数仅在 Solaris 上受支持。
说明:
- 返回值基于单个 CPU 核心的利用率百分比。 例如,一个进程完全使用两个核心时,其 CPU 利用率为 200%。
- 进程 CPU 利用率数据由一个采集器收集,该采集器最多支持 1024 个唯一查询(按名称、用户和命令行区分)。 在最近 24 小时内未被访问的查询会从采集器中移除。
- 如果将
zone参数设置为 current(或使用默认值),且 agent 是在不支持 zone 的 Solaris 上编译的,但运行在支持 zone 的较新 Solaris 上,则 agent 将返回 NOTSUPPORTED(agent 无法将结果限制为仅当前 zone)。 不过,在这种情况下,all 是受支持的。
示例:
proc.cpu.util[,root] #在 "root" 用户下运行的所有进程的 CPU 利用率
proc.cpu.util[zabbix_server,zabbix] #在 zabbix 用户下运行的所有 zabbix_server 进程的 CPU 利用率
proc.get[<name>,<user>,<cmdline>,<mode>]
操作系统进程及其参数的列表。
可用于低级别发现。
返回值:JSON string。
支持的平台:Linux、FreeBSD、Windows、OpenBSD、NetBSD。
参数:
- name - 进程名称(默认为 所有进程);
- user - 用户名(默认为 所有用户);
- cmdline - 按命令行过滤(它是一个正则表达式)。 Windows 不支持此参数;在其他平台上,如果 mode 设置为 'summary',也不支持此参数。
- mode - 可选值:
process(默认)、thread(NetBSD 不支持)、summary。 请参见针对每种 mode 和操作系统返回的进程参数列表。
注释:
- 如果无法获取某个值,例如由于错误(进程已终止、权限不足、系统调用失败),将返回
-1。 - 请参见关于使用
name和cmdline参数选择进程的说明(仅适用于 Linux)。
示例:
proc.get[zabbix_server,zabbix,,process] #列出在 zabbix 用户下运行的所有 zabbix_server 进程,每个 PID 返回一个条目
proc.get[java,,,thread] #列出所有 Java 进程,每个线程返回一个条目
proc.get[,zabbix,,summary] #汇总在 zabbix 用户下运行的每种类型进程的数据,每个进程名称返回一个条目
proc.mem[<name>,<user>,<mode>,<cmdline>,<memtype>]
进程使用的内存量,单位为字节。
返回值:当 mode 为 max、min、sum 时,返回 Integer;当 mode 为 avg 时,返回 Float
支持的平台:Linux、FreeBSD、Solaris、AIX、OpenBSD、NetBSD。
参数:
- name - 进程名称(默认为 所有进程);
- user - 用户名(默认为 所有用户);
- mode - 可选值:avg、max、min 或 sum(默认);
- cmdline - 按命令行过滤(这是一个正则表达式);
- memtype - 进程使用的内存类型
说明:
memtype参数仅在 Linux、FreeBSD、Solaris6、AIX 上受支持。- 当多个进程使用共享内存时,进程使用内存的总和可能会得到偏大且不现实的值。
请参阅有关使用name和cmdline参数选择进程的说明(仅适用于 Linux)。
当从命令行调用此监控项且包含命令行参数时(例如,使用 agent 测试模式:zabbix_agentd -t proc.mem[,,,apache2]),将会额外统计一个进程,因为 agent 会将其自身计算在内。
示例:
proc.mem[,root] #“root”用户下运行的所有进程使用的内存
proc.mem[zabbix_server,zabbix] #zabbix 用户下运行的所有 zabbix_server 进程使用的内存
proc.mem[,oracle,max,oracleZABBIX] #Oracle 用户下运行且命令行中包含 oracleZABBIX 的、占用内存最多的进程所使用的内存
proc.num[<name>,<user>,<state>,<cmdline>,<zone>]
进程数量。
返回值:Integer。
支持的平台:Linux、FreeBSD、Solaris6、HP-UX、AIX、OpenBSD、NetBSD、Windows。
参数:
- name - 进程名称(默认为所有进程);
- user - 用户名(默认为所有用户);
- state - 可选值:
all(默认),
disk - 不可中断睡眠,
run - 运行中,
sleep - 可中断睡眠,
trace - 已停止,
zomb - 僵尸进程; - cmdline - 按命令行过滤(它是一个正则表达式);
- zone - 目标 zone:current(默认)或 all。 此参数仅在 Solaris 上受支持。
说明:
- disk 和 trace 状态参数仅在 Linux、FreeBSD、OpenBSD、NetBSD 上受支持。
- 在 Windows 上,仅支持
name和user参数。 - 当从命令行调用此监控项且包含命令行参数时(例如使用 agent 测试模式:
zabbix_agentd -t proc.num[,,,apache2]),将会多统计一个进程,因为 agent 会将自身计算在内。 - 如果 agent 是在不支持 zone 的 Solaris 上编译的,但运行在支持 zone 的较新 Solaris 上,此时将
zone参数设置为current(或使用默认值),则 agent 将返回 NOTSUPPORTED(agent 无法将结果限制为仅当前 zone)。 不过,在这种情况下,all 是受支持的。 - 有关使用
name和cmdline参数选择进程的说明,请参见注释(仅适用于 Linux)。
示例:
proc.num[,mysql] #在 mysql 用户下运行的进程数量
proc.num[apache2,www-data] #在 www-data 用户下运行的 apache2 进程数量
proc.num[,oracle,sleep,oracleZABBIX] #在 Oracle 用户下运行、处于 sleep 状态且命令行中包含 oracleZABBIX 的进程数量
sensor[device,sensor,<mode>]
硬件传感器读数。
返回值:Float。
支持的平台:Linux、OpenBSD。
参数:
- device - 设备名称;
- sensor - 传感器名称;
- mode - 可选值:avg、max 或 min。
说明:
- 在 Linux 2.4 上读取 /proc/sys/dev/sensors。
- 在 Linux 2.6+ 上读取 /sys/class/hwmon。请参见 Linux 上 sensor 监控项的更详细说明。
- 在 OpenBSD 上读取 hw.sensors MIB。
- 在 Linux 2.4 上,如果指定了 mode,则 device 和 sensor 将被视为正则表达式。
- 在 Linux 2.6+ 和 OpenBSD 上,或者省略 mode 时,device 和 sensor 将被视为原义字符串。
示例:
sensor[w83781d-i2c-0-2d,temp1]
sensor[cpu0,temp0] #the temperature of one CPU
sensor["cpu[0-2]$",temp,avg] #the average temperature of the first three CPUs
system.boottime
系统启动时间。
返回值:整数(Unix时间戳)。
支持的平台:Linux、FreeBSD、Solaris、MacOS X、OpenBSD、NetBSD。
system.cpu.discovery
检测到的 CPU/CPU 核心列表。
用于低级别发现。
返回值:JSON string。
请参见支持的平台。
system.cpu.intr
设备中断数。
返回值:整数。
支持的平台:Linux、FreeBSD、Solaris、AIX、OpenBSD、NetBSD。
system.cpu.load[<cpu>,<mode>]
参数:
- cpu - 可能的值:all(默认)或 percpu(总负载除以在线 CPU 数量);
- mode - 可能的值:avg1(1 分钟平均值,默认)、avg5 或 avg15。
示例:
system.cpu.load[,avg5]
system.cpu.num[<type>]
CPU 的数量。
返回值:整数。
支持的平台:Linux、FreeBSD、Solaris、HP-UX、AIX、MacOS X、OpenBSD、NetBSD、Windows。
参数:
- type - 可能的值:online(默认)或 max
max 类型参数仅在 Linux、FreeBSD、Solaris、MacOS X 上受支持。
示例:
system.cpu.num
system.cpu.switches
上下文切换次数。
返回值:整数。
支持的平台:Linux、FreeBSD、Solaris、AIX、OpenBSD、NetBSD。
system.cpu.util[<cpu>,<type>,<mode>,<logical or physical>]
CPU 利用率百分比。
返回值:Float。
支持的平台:Linux、FreeBSD、Solaris、HP-UX、AIX、OpenBSD、NetBSD、Windows。
参数:
- cpu - <CPU 编号> 或 all(默认);
- type - 可选值:user(默认)、idle、nice、system、iowait、interrupt、softirq、steal、spin(在 OpenBSD 上)、guest(在 Linux 内核 2.6.24 及以上版本上),或 guest_nice(在 Linux 内核 2.6.33 及以上版本上);
- mode - 可选值:avg1(1 分钟平均值,默认)、avg5 或 avg15;
- logical or physical - 可选值:logical(默认)或 physical。 此参数仅在 AIX 上受支持。
说明:
- nice 类型参数仅在 Linux、FreeBSD、HP-UX、OpenBSD、NetBSD 上受支持。
- iowait 类型参数仅在 Linux 2.6 及更高版本、Solaris、AIX 上受支持。
- interrupt 类型参数仅在 Linux 2.6 及更高版本、FreeBSD、OpenBSD 上受支持。
- softirq、steal、guest、guest_nice 类型参数仅在 Linux 2.6 及更高版本上受支持。
- avg5 和 avg15 模式参数在 Linux、FreeBSD、Solaris、HP-UX、AIX、OpenBSD、NetBSD 上受支持。
示例:
system.cpu.util[0,user,avg5]
system.hostname[<type>,<transform>]
系统主机名。
返回值:字符串。
请参见支持的平台。
参数:
- type - 可选值:netbios(Windows 上的默认值)、host(Linux 上的默认值)、shorthost(返回主机名中第一个点之前的部分;对于不包含点的名称,返回完整字符串)、fqdn(返回完全限定域名);
- transform - 可选值:none(默认值)或 lower(转换为小写)。
该值通过从 uname() 系统 API 输出中获取 nodename 来获得。
返回值示例:
system.hostname → linux-w7x1
system.hostname → example.com
system.hostname[shorthost] → example
system.hostname → WIN-SERV2008-I6
system.hostname[host] → Win-Serv2008-I6LonG
system.hostname[host,lower] → win-serv2008-i6long
system.hostname[fqdn,lower] → blog.zabbix.com
system.hw.chassis[<info>]
机箱信息。
返回值:String。
支持的平台:Linux。
参数:
- info - 可能的值:full(默认)、model、serial、type 或 vendor
注释:
- 此监控项键依赖于 SMBIOS 表的可用性。
- 它会尝试从 sysfs 读取 DMI 表;如果访问 sysfs 失败,则会尝试直接从内存中读取。
- 由于该值是通过读取 sysfs 或内存获取的,因此需要 root 权限。
示例:
system.hw.chassis[full] → Hewlett-Packard HP Pro 3010 Small Form Factor PC CZXXXXXXXX Desktop
system.hw.cpu[<cpu>,<info>]
CPU 信息。
返回值:String 或 Integer。
支持的平台:Linux。
参数:
- cpu - <CPU 编号> 或 all(默认);
- info - 可选值:full(默认)、curfreq、maxfreq、model 或 vendor。
注释:
- 从
/proc/cpuinfo和/sys/devices/system/cpu/[cpunum]/cpufreq/cpuinfo_max_freq收集信息。 - 如果指定了 CPU 编号以及 curfreq 或 maxfreq,则返回数值(Hz)。
示例:
system.hw.cpu[0,vendor] → AuthenticAMD
system.hw.devices[<type>]
PCI 或 USB 设备列表。
返回值:Text。
支持的平台:Linux。
参数:
- type - pci(默认)或 usb
返回 lspci 或 lsusb 工具的输出(执行时不带任何参数)。
示例:
system.hw.devices → 00:00.0 Host bridge: Advanced Micro Devices [AMD] RS780 Host Bridge
system.hw.macaddr[<interface>,<format>]
MAC 地址列表。
返回值:String。
支持的平台:Linux。
参数:
- interface - all(默认)或一个正则表达式;
- format - full(默认)或 short
注释:
- 列出名称与给定
interface正则表达式匹配的接口的 MAC 地址(all 表示列出所有接口)。 - 如果
format指定为 short,则不会列出接口名称和相同的 MAC 地址。
示例:
system.hw.macaddr["eth0$",full] → [eth0] 00:11:22:33:44:55
system.localtime[<type>]
系统时间。
返回值:Integer - 当 type 为 utc 时;String - 当 type 为 local 时。
请参见支持的平台。
参数:
- type - 可能的值:utc - (默认)自 Epoch(1970 年 1 月 1 日 00:00:00 UTC)以来的时间,以秒为单位计量;或 local - 采用 'yyyy-mm-dd,hh:mm:ss.nnn,+hh:mm' 格式的时间
对于 Zabbix agent,必须用作被动检查;在 Zabbix agent 2 上,也可以将其配置为主动检查。
示例:
system.localtime[local] #使用此键创建一个监控项,然后用它在 *Clock* 仪表板小部件中显示主机时间。
system.run[command,<mode>]
在主机上运行指定的命令。
返回值:命令的文本结果;如果 mode 为 nowait,则返回 1(无论命令结果如何)。
请参见支持的平台。
参数:
- command - 要执行的命令;
- mode - 可选值:wait - 等待执行结束(默认)或 nowait - 不等待。
注释:
- 此监控项默认禁用。 了解如何启用它们。
- 监控项的返回值是命令产生的标准输出和标准错误输出。 不会执行退出代码检查。
- 为了被正确处理,命令的返回值必须为
text数据类型。 也允许空结果。 - 返回值限制为 16MB(包括会被截断的尾随空白字符);数据库限制同样适用。
- 另请参见:命令执行。
示例:
system.run[ls -l /] #返回根目录的详细文件列表
system.stat[resource,<type>]
系统统计信息。
返回值:整数 或 浮点数。
支持的平台:AIX。
参数:
- ent - 此分区有权获得的处理器单元数(浮点数);
- kthr,<type> - 内核线程状态信息:
r - 可运行内核线程的平均数量(浮点数)
b - 位于虚拟内存管理器等待队列中的内核线程平均数量(浮点数) - memory,<type> - 虚拟内存和实际内存使用情况信息:
avm - 活动虚拟页数(整数)
fre - 空闲列表大小(整数) - page,<type> - 缺页和分页活动信息:
fi - 每秒文件页调入次数(浮点数)
fo - 每秒文件页调出次数(浮点数)
pi - 从分页空间调入的页数(浮点数)
po - 调出到分页空间的页数(浮点数)
fr - 已释放页数(页替换)(浮点数)
sr - 由页面替换算法扫描的页数(浮点数) - faults,<type> - 陷阱和中断速率:
in - 设备中断(浮点数)
sy - 系统调用(浮点数)
cs - 内核线程上下文切换(浮点数) - cpu,<type> - 处理器时间使用百分比明细:
us - 用户时间(浮点数)
sy - 系统时间(浮点数)
id - 空闲时间(浮点数)
wa - 系统存在未完成磁盘/NFS I/O 请求时的空闲时间(浮点数)
pc - 已消耗的物理处理器数量(浮点数)
ec - 已消耗的有权容量百分比(浮点数)
lbusy - 表示在用户态和系统态执行期间发生的逻辑处理器利用率百分比(浮点数)
app - 表示共享池中可用的物理处理器数量(浮点数) - disk,<type> - 磁盘统计信息:
bps - 表示每秒传输到驱动器的数据量(读取或写入),单位为字节(整数)
tps - 表示每秒向物理磁盘/磁带发出的传输次数(浮点数)
备注:
- 请注意这些监控项存在以下限制:
system.stat[cpu,app]- 仅在类型为“Shared”的 AIX LPAR 上受支持;
system.stat[cpu,ec]- 在类型为“Shared”和“Dedicated”的 AIX LPAR 上受支持(“Dedicated”始终返回 100(百分比));
system.stat[cpu,lbusy]- 仅在类型为“Shared”的 AIX LPAR 上受支持;
system.stat[cpu,pc]- 在类型为“Shared”和“Dedicated”的 AIX LPAR 上受支持;
system.stat[ent]- 在类型为“Shared”和“Dedicated”的 AIX LPAR 上受支持。
system.sw.arch
软件架构信息。
返回值:String。
请参见支持的平台。
该信息通过 uname() 函数获取。
示例:
system.sw.arch → i686
system.sw.os[<info>]
操作系统信息。
返回值:String。
支持的平台:Linux、Windows。
参数:
- info - 可能的值:full(默认)、short 或 name
该信息从以下位置获取(请注意,并非所有发行版都包含所有文件和选项):
- Linux 上的
/proc/version(full); - Linux 上的
/proc/version_signature(short); - 支持该参数的 Linux 系统上的
/etc/os-release中的 PRETTY_NAME 参数,或/etc/issue.net(name); - Windows 上的
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion注册表键。
示例:
system.sw.os[short] → Ubuntu 2.6.35-28.50-generic 2.6.35.11
system.sw.os[full] → [s|Windows 10 Enterprise 22621.1.asd64fre.ni_release.220506-1250 Build 22621.963]
system.sw.os.get
有关操作系统的详细信息(版本、类型、发行版名称、次版本和主版本等)。
返回值:JSON string。
支持的平台:Linux、Windows。
system.sw.packages[<regexp>,<manager>,<format>]
已安装软件包的列表。
返回值:Text。
支持的平台:Linux。
参数:
- regexp - all(默认)或一个正则表达式;
- manager - all(默认)或一个包管理器;
- format - full(默认)或 short。
说明:
- 列出名称与给定正则表达式匹配的已安装软件包(all 表示列出全部)。
- 支持的包管理器(执行的命令):
- dpkg (dpkg --get-selections)
- pkgtool (ls /var/log/packages)
- rpm (rpm -qa)
- pacman (pacman -Q)
portage
- 如果将
format指定为 full,软件包将按包管理器分组(每个管理器单独占一行,并以方括号中的管理器名称开头)。 - 如果将
format指定为 short,软件包不会分组,而是列在同一行中。
示例:
system.sw.packages[mini,dpkg,short] → python-minimal, python2.6-minimal, ubuntu-minimal
system.sw.packages.get[<regexp>,<manager>]
已安装软件包的详细列表。
返回值:JSON string。
支持的平台:Linux。
参数:
- regexp - all(默认)或一个正则表达式;
- manager - all(默认)或一个包管理器(可能的值:rpm、dpkg、pkgtool、pacman 或 portage)。
备注:
- 返回未格式化的 JSON,其中包含名称与给定正则表达式匹配的已安装软件包。
- 输出是一个对象数组,每个对象包含以下键:name、manager、version、size、architecture、buildtime 和 installtime(参见更多详细信息)。
system.swap.in[<device>,<type>]
换入(从设备到内存)统计信息。
返回值:Integer。
支持的平台:Linux、FreeBSD、OpenBSD。
参数:
- device - 指定用于交换的设备(仅 Linux)或 all(默认);
- type - 可选值:count(换入次数,非 Linux 平台上的默认值)、sectors(换入的扇区数)或 pages(换入的页数,Linux 上的默认值)。
说明:
- 此信息的来源为:
/proc/swaps、/proc/partitions、/proc/stat(Linux 2.4)/proc/swaps、/proc/diskstats、/proc/vmstat(Linux 2.6)
- 请注意,pages 仅在未指定 device 时有效。
- sectors 类型参数仅在 Linux 上受支持。
示例:
system.swap.in[,pages]
system.swap.out[<device>,<type>]
换出(从内存到设备)的统计信息。
返回值:整数。
支持的平台:Linux、FreeBSD、OpenBSD。
参数:
- device - 指定用于交换的设备(仅 Linux)或 all(默认);
- type - 可选值:count(换出次数,非 Linux 平台上的默认值)、sectors(换出的扇区数)或 pages(换出的页数,Linux 上的默认值)。
说明:
- 此信息的来源为:
/proc/swaps、/proc/partitions、/proc/stat(Linux 2.4)/proc/swaps、/proc/diskstats、/proc/vmstat(Linux 2.6) - 请注意,pages 仅在未指定 device 时有效。
- sectors 类型参数仅在 Linux 上受支持。
示例:
system.swap.out[,pages]
system.swap.size[<device>,<type>]
交换空间大小,以字节或占总量的百分比表示。
返回值:Integer - 字节;Float - 百分比。
支持的平台:Linux、FreeBSD、Solaris、AIX、OpenBSD、Windows。
参数:
- device - 指定用于交换的设备(仅 FreeBSD)或 all(默认);
- type - 可选值:free(空闲交换空间,默认)、pfree(空闲交换空间,百分比)、pused(已用交换空间,百分比)、total(交换空间总量)或 used(已用交换空间)。
注释:
- 请注意,如果交换空间大小为 0,Windows 不支持 pfree、pused。
- 如果未指定 device,Zabbix agent 将只考虑交换设备(文件),物理内存将被忽略。
例如,在 Solaris 系统中,
swap -s命令包含一部分物理内存和交换设备(不同于swap -l)。
示例:
system.swap.size[,pfree] → 空闲交换空间百分比
system.uname
系统的标识信息。
返回值:字符串。
请参见支持的平台。
注释:
- 在 UNIX 上,此监控项的值通过 uname() 系统调用获取。
- 在 Windows 上,此监控项返回操作系统架构,而在 UNIX 上则返回 CPU 架构。
示例:
system.uname → FreeBSD localhost 4.2-RELEASE FreeBSD 4.2-RELEASE #0: Mon Nov i386
system.uname → Windows ZABBIX-WIN 6.0.6001 Microsoft® Windows Server® 2008 Standard Service Pack 1 x86
system.uptime
系统运行时间(以秒为单位)。
返回值:Integer。
支持的平台:Linux、FreeBSD、Solaris、AIX、MacOS X、OpenBSD、NetBSD、Windows。
在监控项配置中,使用 s 或 uptime 单位可获得易读的值。
system.users.num
已登录用户数。
返回值:Integer。
参见支持的平台。
agent 使用who命令来获取该值。
vfs.dev.discovery
块设备及其类型的列表。
用于低级发现。
返回值:JSON string。
支持的平台:Linux。
vfs.dev.read[<device>,<type>,<mode>]
磁盘读取统计信息。
返回值:当 type 为 sectors、operations、bytes 时,返回 Integer;当 type 为 sps、ops、bps 时,返回 Float。
支持的平台:Linux、FreeBSD、Solaris、AIX、OpenBSD。
参数:
- device - 磁盘设备(默认为 all 3);
- type - 可选值:sectors、operations、bytes、sps、ops 或 bps(sps、ops、bps 分别表示:每秒扇区数、每秒操作数、每秒字节数);
- mode - 可选值:avg1(1 分钟平均值,默认)、avg5 或 avg15。
仅当
type为 sps、ops、bps 时支持此参数。
注释:
- 如果使用 3 小时或更长的更新间隔2,此监控项将始终返回“0”。
- sectors 和 sps 类型参数仅在 Linux 上受支持。
- ops 类型参数仅在 Linux 和 FreeBSD 上受支持。
- bps 类型参数仅在 FreeBSD 上受支持。
- bytes 类型参数仅在 FreeBSD、Solaris、AIX、OpenBSD 上受支持。
mode参数仅在 Linux、FreeBSD 上受支持。- 您既可以使用相对设备名(例如
sda),也可以使用可选的/dev/前缀(例如/dev/sda)。 - 支持 LVM 逻辑卷。
- 不同操作系统中
type参数的默认值:- AIX - operations
- FreeBSD - bps
- Linux - sps
- OpenBSD - operations
- Solaris - bytes
- 在支持的平台上,sps、ops 和 bps 最多支持 1024 个设备(1023 个单独设备和 1 个 all)。
示例:
vfs.dev.read[,operations]
vfs.dev.write[<device>,<type>,<mode>]
磁盘写入统计信息。
返回值:当 type 为 sectors、operations、bytes 时,返回 Integer;当 type 为 sps、ops、bps 时,返回 Float。
支持的平台:Linux、FreeBSD、Solaris、AIX、OpenBSD。
参数:
- device - 磁盘设备(默认为 all 3);
- type - 可选值:sectors、operations、bytes、sps、ops 或 bps(sps、ops、bps 分别表示:每秒扇区数、每秒操作数、每秒字节数);
- mode - 可选值:avg1(1 分钟平均值,默认)、avg5 或 avg15。
仅当
type为:sps、ops、bps 时支持此参数。
说明:
- 如果使用 3 小时或更长的更新间隔2,此监控项将始终返回“0”。
- sectors 和 sps 类型参数仅在 Linux 上受支持。
- ops 类型参数仅在 Linux 和 FreeBSD 上受支持。
- bps 类型参数仅在 FreeBSD 上受支持。
- bytes 类型参数仅在 FreeBSD、Solaris、AIX、OpenBSD 上受支持。
mode参数仅在 Linux、FreeBSD 上受支持。- 您既可以使用相对设备名称(例如
sda),也可以使用可选的/dev/前缀(例如/dev/sda)。 - 支持 LVM 逻辑卷。
- 不同操作系统中
type参数的默认值:- AIX - operations
- FreeBSD - bps
- Linux - sps
- OpenBSD - operations
- Solaris - bytes
- 在受支持的平台上,sps、ops 和 bps 最多支持 1024 个设备(1023 个单独设备和 1 个 all)。
示例:
vfs.dev.write[,operations]
vfs.dir.count[dir,<regex incl>,<regex excl>,<types incl>,<types excl>,<max depth>,<min size>,<max size>,<min age>,<max age>,<regex excl dir>]
目录条目计数。
返回值:Integer。
参见支持的平台。
参数:
- dir - 目录的绝对路径;
- regex incl - 用于描述要包含的实体(文件、目录、符号链接)名称模式的正则表达式;如果为空,则包含全部(默认值);
- regex excl - 用于描述要排除的实体(文件、目录、符号链接)名称模式的正则表达式;如果为空,则不排除任何内容(默认值);
- types incl - 要计数的目录条目类型,可选值:file - 普通文件,dir - 子目录,sym - 符号链接,sock - 套接字,bdev - 块设备,cdev - 字符设备,fifo - FIFO,dev - 与 "bdev,cdev" 同义,all - 所有类型(默认值),即 "file,dir,sym,sock,bdev,cdev,fifo"。 多个类型必须用逗号分隔并加引号。
- types excl - 不计数的目录条目类型(参见
types incl)。 如果某个条目类型同时存在于types incl和types excl中,则该类型的目录条目将不被计数。 - max depth - 要遍历的子目录最大深度:
-1(默认)- 不限,
0 - 不进入子目录。 - min size - 文件被计数的最小大小(以字节为单位)。 更小的文件将不被计数。 可使用内存后缀。
- max size - 文件被计数的最大大小(以字节为单位)。 更大的文件将不被计数。 可使用内存后缀。
- min age - 目录条目被计数的最小存在时间(以秒为单位)。 更新的条目将不被计数。 可使用时间后缀。
- max age - 目录条目被计数的最大存在时间(以秒为单位)。 达到该时间及更早的条目将不被计数(修改时间)。 可使用时间后缀。
- regex excl dir - 用于描述要排除的目录名称模式的正则表达式。 该目录中的所有内容都将被排除(与 regex_excl 不同)
说明:
- 在 Windows 上,此监控项会跟随 UNC 路径,这可能带来安全风险。
- 不支持环境变量,例如 %APP_HOME%、$HOME 和 %TEMP%。
- 伪目录 "." 和 ".." 永远不会被计数。
- 遍历目录时永远不会跟随符号链接。
- 计算条目数量时,
regex incl和regex excl都会应用于文件和目录,但在选择要遍历的子目录时会被忽略(如果regex incl为 "(?i)\^.+\.zip$" 且未设置max depth,则会遍历所有子目录,但只会计数 zip 类型的文件)。 - 执行时间受 agent 配置中的超时值限制(3 秒)。 由于遍历大型目录可能耗时更长,因此将不会返回任何数据,并且该监控项将变为 unsupported。 不会返回部分计数结果。
- 按大小过滤时,只有普通文件的大小才有实际意义。
在 Linux 和 BSD 下,目录也具有非零大小(通常为几 KB)。
设备的大小为零,例如 /dev/sda1 的大小并不反映相应分区的大小。
因此,在使用
<min_size>和<max_size>时,建议将<types_incl>指定为 "file",以避免意外情况。
示例:
vfs.dir.count[/dev] #监控 /dev 中设备的数量(Linux)
vfs.dir.count["C:\Users\ADMINI~1\AppData\Local\Temp"] #监控临时目录中的文件数量
vfs.dir.get[dir,<regex incl>,<regex excl>,<types incl>,<types excl>,<max depth>,<min size>,<max size>,<min age>,<max age>,<regex excl dir>]
目录条目列表。
返回值:JSON string。
参见支持的平台。
参数:
- dir - 目录的绝对路径;
- regex incl - 用于描述要包含的实体(文件、目录、符号链接)名称模式的正则表达式;如果为空,则包含全部(默认值);
- regex excl - 用于描述要排除的实体(文件、目录、符号链接)名称模式的正则表达式;如果为空,则不排除任何实体(默认值);
- types incl - 要列出的目录条目类型,可选值:file - 普通文件,dir - 子目录,sym - 符号链接,sock - 套接字,bdev - 块设备,cdev - 字符设备,fifo - FIFO,dev - 与“bdev,cdev”同义,all - 所有类型(默认值),即“file,dir,sym,sock,bdev,cdev,fifo”。 多个类型必须用逗号分隔并加引号。
- types excl - 不列出的目录条目类型(参见
types incl)。 如果某个条目类型同时存在于types incl和types excl中,则不会列出该类型的目录条目。 - max depth - 要遍历的子目录最大深度:
-1(默认)- 不限,
0 - 不进入子目录。 - min size - 要列出的文件最小大小(以字节为单位)。 小于该大小的文件不会被列出。 可使用内存后缀。
- max size - 要列出的文件最大大小(以字节为单位)。 大于该大小的文件不会被列出。 可使用内存后缀。
- min age - 要列出的目录条目最小存在时间(以秒为单位)。 较新的条目不会被列出。 可使用时间后缀。
- max age - 要列出的目录条目最大存在时间(以秒为单位)。 达到该时间及更早修改的条目都不会被列出(修改时间)。 可使用时间后缀。
- regex excl dir - 用于描述要排除的目录名称模式的正则表达式。
该目录中的所有内容都将被排除(与
regex excl不同)
说明:
- 在 Windows 上,此监控项会跟随 UNC 路径,这可能带来安全风险。
- 不支持环境变量,例如 %APP_HOME%、$HOME 和 %TEMP%。
- 伪目录“.”和“..”永远不会被列出。
- 遍历目录时永远不会跟随符号链接。
- 生成条目列表时,
regex incl和regex excl都会应用于文件和目录,但在选择要遍历的子目录时会被忽略(如果regex incl为 "(?i)\^.+\.zip$" 且未设置max depth,则会遍历所有子目录,但只会统计 zip 类型的文件)。 - 执行时间受 agent configuration 中 timeout 值的限制。 由于大型目录遍历可能耗时更长,因此不会返回任何数据,并且该监控项将变为 unsupported。 不会返回部分列表。
- 按大小过滤时,只有普通文件的大小才有实际意义。
在 Linux 和 BSD 下,目录也具有非零大小(通常为几 KB)。
设备的大小为零,例如 /dev/sda1 的大小并不反映相应分区的大小。
因此,在使用
min size和max size时,建议将types incl指定为 "file",以避免意外情况。
示例:
vfs.dir.get[/dev] #检索 /dev 中的设备列表(Linux)
vfs.dir.get["C:\Users\ADMINI~1\AppData\Local\Temp"] #检索临时目录中的文件列表
vfs.dir.size[dir,<regex incl>,<regex excl>,<mode>,<max depth>,<regex excl dir>]
目录大小(以字节为单位)。
返回值:Integer。
支持的平台:Linux、Windows。
该监控项也可能适用于其他类 UNIX 平台。
参数:
- dir - 目录的绝对路径;
- regex incl - 用于描述要包含的实体(文件、目录、符号链接)名称模式的正则表达式;如果为空,则包含全部(默认值);
- regex excl - 用于描述要排除的实体(文件、目录、符号链接)名称模式的正则表达式;如果为空,则不排除任何内容(默认值);
- mode - 可选值:apparent(默认)- 获取表观文件大小而不是磁盘占用量(行为类似于
du -sb dir),disk - 获取磁盘占用量(行为类似于du -s -B1 dir)。 与du命令不同,vfs.dir.size 监控项在计算目录大小时会将隐藏文件计算在内(行为类似于在 dir 中执行du -sb .[^.]* *)。 - max depth - 要遍历的子目录最大深度:-1(默认)- 不限,0 - 不进入子目录。
- regex excl dir - 用于描述要排除的目录名称模式的正则表达式。
该目录中的所有内容都将被排除(与
regex excl不同)
说明:
- 在 Windows 上,此监控项会跟随 UNC 路径,这可能带来安全风险。
- 仅计算 zabbix 用户至少具有读取权限的目录。 对于仅具有读取权限的目录,只计算目录本身的大小。 对于具有读取和执行权限的目录,则会连同其内容一起计算。
- 对于大型目录或较慢的驱动器,由于 agent 和 服务器/proxy 配置文件中的 Timeout 设置,此监控项可能会超时。 请根据需要增加超时值。
- 文件大小限制取决于大文件支持。
示例:
vfs.dir.size[/tmp,log] #calculates the size of all files in /tmp containing 'log' in their names
vfs.dir.size[/tmp,log,^.+\.old$] #calculates the size of all files in /tmp containing 'log' in their names, excluding files with names ending with '.old'
vfs.file.cksum[file,<mode>]
文件校验和,使用 UNIX cksum 算法计算。
返回值:当 mode 为 crc32 时,返回 Integer;当 mode 为 md5、sha256 时,返回 String。
请参见支持的平台。
参数:
- file - 文件的完整路径;
- mode - crc32(默认)、md5 或 sha256。
说明:
示例:
vfs.file.cksum[/etc/passwd]
返回值示例(分别对应 crc32/md5/sha256):
675436101
9845acf68b73991eb7fd7ee0ded23c44
ae67546e4aac995e5c921042d0cf0f1f7147703aa42bfbfb65404b30f238f2dc
vfs.file.contents[file,<encoding>]
参数:
- file - 文件的完整路径;
- encoding - 代码页标识符。
备注:
- 在 Windows 上,此监控项遵循 UNC 路径,这可能带来安全风险。
- 返回值限制为 16MB(包括会被截断的尾随空白字符);数据库限制同样适用。
- 如果文件为空或仅包含 LF/CR 字符,则返回空字符串。
- 输出中不包含字节顺序标记(BOM)。
示例:
vfs.file.contents[/etc/passwd]
vfs.file.exists[file,<types incl>,<types excl>]
检查文件是否存在。
返回值:0 - 未找到;1 - 存在指定类型的文件。
请参见支持的平台。
参数:
- file - 文件的完整路径;
- types incl - 要包含的文件类型列表,可选值:file(常规文件,默认值(如果未设置 types_excl))、dir(目录)、sym(符号链接)、sock(套接字)、bdev(块设备)、cdev(字符设备)、fifo(FIFO)、dev(与 "bdev,cdev" 同义)、all(上述所有类型,如果设置了 types_excl 则为默认值)。
- types excl - 要排除的文件类型列表,可选值请参见 types_incl(默认不排除任何类型)
说明:
- 在 Windows 上,此监控项会跟随 UNC 路径,这可能带来安全风险。
- 多个类型必须用逗号分隔,并且整个集合必须用双引号 "" 括起来。
- 如果同一类型同时出现在 <types_incl> 和 <types_excl> 中,则会排除此类型的文件。
- 文件大小限制取决于大文件支持。
示例:
vfs.file.exists[/tmp/application.pid]
vfs.file.exists[/tmp/application.pid,"file,dir,sym"]
vfs.file.exists[/tmp/application_dir,dir]
vfs.file.get[file]
返回有关文件的信息。
返回值:JSON 字符串。
请参见支持的平台。
参数:
- file - 文件的完整路径
注释:
- 在 Windows 上,此监控项会遵循 UNC 路径,这可能带来安全风险。
- UNIX 类系统上支持的文件类型:常规文件、目录、符号链接、套接字、块设备、字符设备、FIFO。
- 文件大小限制取决于大文件支持。
示例:
vfs.file.get[/etc/passwd] #返回一个 JSON,其中包含 /etc/passwd 文件的信息(类型、用户、权限、SID、uid 等)
vfs.file.md5sum[file]
文件的 MD5 校验和。
返回值:字符串(文件的 MD5 哈希值)。
请参见支持的平台。
参数:
- file - 文件的完整路径
注释:
示例:
vfs.file.md5sum[/usr/local/etc/zabbix_agentd.conf]
返回值示例:
b5052decb577e0fffd622d6ddc017e82
vfs.file.owner[file,<ownertype>,<resulttype>]
检索文件的所有者。
返回值:字符串。
请参见支持的平台。
参数:
- file - 文件的完整路径;
- ownertype - user(默认)或 group(仅 Unix);
- resulttype - name(默认)或 id;对于 id - 在 Unix 上返回 uid/gid,在 Windows 上返回 SID。
说明:
示例:
vfs.file.owner[/tmp/zabbix_server.log] #返回 /tmp/zabbix_server.log 的文件所有者
vfs.file.owner[/tmp/zabbix_server.log,,id] #返回 /tmp/zabbix_server.log 的文件所有者 ID
vfs.file.permissions[file]
返回一个包含 UNIX 权限八进制数字的 4 位字符串。
返回值:String。
支持的平台:Linux。
该监控项也可能在其他类 UNIX 平台上工作。
参数:
- file - 文件的完整路径
文件大小限制取决于大文件支持。
示例:
vfs.file.permissions[/etc/passwd] #返回 /etc/passwd 的权限,例如 '0644'
vfs.file.regexp[file,regexp,<encoding>,<start line>,<end line>,<output>]
检索文件中的字符串7。
返回值:包含匹配字符串的行,或由可选的 output 参数指定的内容。
请参见支持的平台。
参数:
- file - 文件的完整路径;
- regexp - 描述所需模式的正则表达式;
- encoding - 代码页标识符;
- start line - 开始搜索的第一行行号(默认是文件的第一行);
- end line - 结束搜索的最后一行行号(默认是文件的最后一行);
- output - 可选的输出格式模板。
其中,\0 转义序列会被替换为匹配到的文本部分(从匹配开始的第一个字符到匹配结束的字符),而 \N(其中 N=1...9)转义序列会被替换为第 N 个匹配分组(如果 N 超出捕获分组数量,则替换为空字符串)。
注释:
- 在 Windows 上,此监控项会遵循 UNC 路径,这可能带来安全风险。
- 文件大小限制取决于大文件支持。
- 仅返回第一个匹配的行。
- 如果没有任何行匹配该表达式,则返回空字符串。
- 输出中不包含字节顺序标记(BOM)。
- 使用
output参数提取内容的操作在 agent 上执行。
示例:
vfs.file.regexp[/etc/passwd,zabbix]
vfs.file.regexp[/path/to/some/file,"([0-9]+)$",,3,5,\1]
vfs.file.regexp[/etc/passwd,"^zabbix:.:([0-9]+)",,,,\1] → 获取用户 *zabbix* 的 ID
vfs.file.regmatch[file,regexp,<encoding>,<start line>,<end line>]
在文件中查找字符串7。
返回值:0 - 未找到匹配;1 - 已找到。
请参见支持的平台。
参数:
- file - 文件的完整路径;
- regexp - 描述所需模式的正则表达式;
- encoding - 代码页标识符;
- start line - 开始搜索的第一行行号(默认情况下为文件的第一行);
- end line - 结束搜索的最后一行行号(默认情况下为文件的最后一行)。
注释:
示例:
vfs.file.regmatch[/var/log/app.log,error]
vfs.file.size[file,<mode>]
文件大小(以字节为单位)。
返回值:Integer。
参见支持的平台。
参数:
- file - 文件的完整路径;
- mode - 可选值:bytes(默认)或 lines(空行也会被计入)。
说明:
示例:
vfs.file.size[/var/log/syslog]
vfs.file.time[file,<mode>]
文件时间信息。
返回值:Integer(Unix 时间戳)。
请参见支持的平台。
参数:
- file - 文件的完整路径;
- mode - 可能的值:
modify(默认)- 最后修改文件内容的时间,
access - 最后读取文件的时间,
change - 最后更改文件属性的时间
注释:
示例:
vfs.file.time[/etc/passwd,modify]
vfs.fs.discovery
已挂载文件系统及其类型和挂载选项的列表。
用于低级别发现。
返回值:JSON string。
支持的平台:Linux、FreeBSD、Solaris、HP-UX、AIX、MacOS X、OpenBSD、NetBSD、Windows。
vfs.fs.get
已挂载文件系统的列表,包括其类型、可用磁盘空间、inode 统计信息和挂载选项。
可用于低级别发现。
返回值:JSON string。
支持的平台:Linux、FreeBSD、Solaris、HP-UX、AIX、MacOS X、OpenBSD、NetBSD、Windows。
注释:
- inode 计数等于零的文件系统也会被报告,这种情况可能出现在使用动态 inode 的文件系统中(例如 btrfs)。
- 另请参见:已挂载文件系统的发现。
vfs.fs.inode[fs,<mode>]
inode 的数量或百分比。
返回值:Integer - 表示数量;Float - 表示百分比。
请参见支持的平台。
参数:
- fs - 文件系统;
- mode - 可选值:total(默认)、free、used、pfree(空闲,百分比)或 pused(已使用,百分比)。
如果 inode 计数等于零,则在具有动态 inode 的文件系统中可能会出现这种情况(例如 btrfs),此时 pfree/pused 值将分别报告为“100”和“0”。
示例:
vfs.fs.inode[/,pfree]
vfs.fs.size[fs,<mode>]
磁盘空间大小,以字节或占总量的百分比表示。
返回值:Integer - 用于字节;Float - 用于百分比。
请参见支持的平台。
参数:
- fs - 文件系统;
- mode - 可选值:total(默认)、free、used、pfree(空闲,百分比)或 pused(已使用,百分比)。
注释:
- 如果文件系统未挂载,则返回挂载点所在本地文件系统的大小。
- 文件系统的保留空间会被计入,并且在使用 free 模式时不包含在内。
示例:
vfs.fs.size[/tmp,free]
vm.memory.size[<mode>]
内存大小,以字节或占总内存的百分比表示。
返回值:Integer - 字节;Float - 百分比。
请参见支持的平台。
参数:
- mode - 可选值:total(默认)、active、anon、buffers、cached、exec、file、free、inactive、pinned、shared、slab、wired、used、pused(已使用,百分比)、available 或 pavailable(可用,百分比)。
说明:
- 此监控项接受三类参数:
- total - 内存总量;
- 平台特定的内存类型:active、anon、buffers、cached、exec、file、free、inactive、pinned、shared、slab、wired;
- 用户级估算的已使用和可用内存量:used、pused、available、pavailable。
- active 模式参数仅在 FreeBSD、HP-UX、MacOS X、OpenBSD、NetBSD 上受支持。
- anon、exec、file 模式参数仅在 NetBSD 上受支持。
- buffers 模式参数仅在 Linux、FreeBSD、OpenBSD、NetBSD 上受支持。
- cached 模式参数仅在 Linux、FreeBSD、AIX、OpenBSD、NetBSD 上受支持。
- inactive、wired 模式参数仅在 FreeBSD、MacOS X、OpenBSD、NetBSD 上受支持。
- pinned 模式参数仅在 AIX 上受支持。
- shared 模式参数仅在 Linux 2.4、FreeBSD、OpenBSD、NetBSD 上受支持。
- 另请参见此监控项的附加详细信息。
示例:
vm.memory.size[pavailable]
web.page.get[host,<path>,<port>]
获取网页内容。
返回值:网页源代码文本(包括标头)。
请参见支持的平台。
参数:
- host - 主机名或 URL(格式为
scheme://host:port/path,其中只有 host 是必填项)。 允许的 URL scheme:http、https4。 如果未指定 scheme,则将其视为 http。 如果指定了 URL,则path和port必须为空。 连接到需要认证的服务器时指定用户名/密码,例如:http://user:[email protected],仅在支持 cURL 时才可用 4。 主机名支持 Punycode。 - path - HTML 文档的路径(默认为 /);
- port - 端口号(HTTP 默认为 80)
注释:
- 如果
host中指定的资源不存在或不可用,则此监控项将变为不支持。 host可以是主机名、域名、IPv4 或 IPv6 地址。 但对于 IPv6 地址,Zabbix agent 必须在编译时启用 IPv6 支持。
示例:
web.page.get[www.example.com,index.php,80]
web.page.get[https://www.example.com]
web.page.get[https://blog.example.com/?s=zabbix]
web.page.get[localhost:80]
web.page.get["[::1]/server-status"]
web.page.perf[host,<path>,<port>]
完整网页的加载时间(以秒为单位)。
返回值:Float。
请参见支持的平台。
参数:
- host - 主机名或 URL(格式为
scheme://host:port/path,其中只有 host 为必填)。 允许的 URL 方案:http、https4。 如果未指定方案,则将其视为 http。 如果指定了 URL,则path和port必须为空。 当连接到需要身份验证的服务器时,指定用户名/密码(例如:http://user:[email protected])仅在支持 cURL 时才可用 4。 主机名支持 Punycode。 - path - HTML 文档的路径(默认为 /);
- port - 端口号(HTTP 默认为 80)
注释:
- 如果
host中指定的资源不存在或不可用,则此监控项将变为不支持。 host可以是主机名、域名、IPv4 或 IPv6 地址。 但对于 IPv6 地址,Zabbix agent 必须在编译时启用 IPv6 支持。
示例:
web.page.perf[www.example.com,index.php,80]
web.page.perf[https://www.example.com]
web.page.regexp[host,<path>,<port>,regexp,<length>,<output>]
在网页中查找字符串。
返回值:匹配到的字符串,或由可选的 output 参数指定的内容。
参见支持的平台。
参数:
- host - 主机名或 URL(格式为
scheme://host:port/path,其中只有 host 是必填项)。 允许的 URL 方案:http、https4。 如果未指定方案,则按 http 处理。 如果指定了 URL,则path和port必须为空。 连接到需要认证的服务器时,指定用户名/密码(例如:http://user:[email protected])仅在支持 cURL 时才可用 4。 主机名支持 Punycode。 - path - HTML 文档的路径(默认为 /);
- port - 端口号(HTTP 默认为 80)
- regexp - 描述所需模式的正则表达式;
- length - 要返回的最大字符数;
- output - 可选的输出格式模板。 \0 转义序列会被替换为匹配到的文本部分(从匹配开始的第一个字符到匹配结束的字符),而 \N(其中 N=1...9)转义序列会被替换为第 N 个匹配组(如果 N 超过已捕获组的数量,则替换为空字符串)。
注释:
- 如果
host中指定的资源不存在或不可用,则此监控项将变为不支持。 host可以是主机名、域名、IPv4 或 IPv6 地址。 但对于 IPv6 地址,Zabbix agent 必须在编译时启用 IPv6 支持。- 使用
output参数提取内容是在 agent 上执行的。
示例:
web.page.regexp[www.example.com,index.php,80,OK,2]
web.page.regexp[https://www.example.com,,,OK,2]
agent.hostmetadata
agent 主机元数据。
返回值:String。
请参阅支持的平台。
返回 HostMetadata 或 HostMetadataItem 参数的值,如果没有定义则返回空字符串。
agent.hostname
agent 主机名。
返回值:String。
请参阅支持的平台。
返回值:
- 作为被动检查 - 在agent 配置文件的 Hostname 参数中列出的第一个主机的名称;
- 作为主动检查 - 当前主机名的名称。
agent.ping
agent 可用性检查。
返回值:无 - 不可用;1 - 可用。
请参阅支持的平台。
使用 nodata() 触发器函数检查主机的不可用性。
agent.variant
Zabbix agent的变体(Zabbix agent或 Zabbix agent 2)。
返回值:1 - Zabbix agent;2 - Zabbix agent 2。
请参阅支持的平台。
agent.version
Zabbix agent 的版本。
返回值:String。
请参见支持的平台。
返回值示例:
6.0.3
zabbix.stats[<ip>,<port>]
返回一组 Zabbix 服务器或 proxy 的内部指标。如果指定了 ip 和 port,则从远程实例获取指标;否则,从本地实例获取。
返回值:JSON 字符串。
请参见支持的平台。
参数:
- ip - 要远程查询的服务器/proxy 的 IP/DNS/网络掩码列表(默认值为 127.0.0.1);
- port - 要远程查询的服务器/proxy 端口(默认值为 10051)
说明:
- 此监控项返回一组选定的内部指标。 有关详细信息,请参见 Zabbix 统计信息的远程监控。
- 请注意,统计信息请求仅接受来自目标实例上 'StatsAllowedIP' server/proxy 参数中列出的地址。
zabbix.stats[<ip>,<port>,queue,<from>,<to>]
返回 Zabbix 服务器或 proxy 上队列中延迟的监控项数量。如果指定了 ip 和 port,则从远程实例获取指标;否则,从本地实例获取。
返回值:JSON string。
请参见支持的平台。
参数:
- ip - 要远程查询的服务器/proxy 的 IP/DNS/网络掩码列表(默认值为 127.0.0.1);
- port - 要远程查询的服务器/proxy 端口(默认值为 10051)
- queue - 常量(按原样使用)
- from - 至少延迟多久(默认值为 6 秒)
- to - 最多延迟多久(默认值为无穷大)
请注意,统计信息请求仅会从目标实例中 'StatsAllowedIP' server/proxy 参数列出的地址接受。
脚注
1 Linux 特有说明。
Zabbix agent 必须对文件系统 /proc 具有只读访问权限。
来自 www.grsecurity.org 的内核补丁会限制非特权用户的访问权限。
2 vfs.dev.read[]、vfs.dev.write[]:如果超过 3 小时未访问监控项值,Zabbix agent 将终止“陈旧”的设备连接。
如果系统中的设备路径是动态变化的,或者某个设备被手动移除,则可能发生这种情况。
另请注意,如果这些监控项使用 3 小时或更长的更新间隔,将始终返回“0”。
3 vfs.dev.read[]、vfs.dev.write[]:如果第一个参数使用默认值 all,则该键将返回汇总统计信息,包括所有块设备,如 sda、sdb 及其分区(sda1、sda2、sdb3...),以及基于这些块设备/分区的多设备(MD raid)和逻辑卷(LVM)。
在这种情况下,返回值应仅视为相对值(随时间动态变化),而不应视为绝对值。
4 仅当 agent 在编译时启用了 cURL 支持时,才支持 SSL (HTTPS)。
否则该监控项将变为不支持。
5 在 Solaris 10 6/06 及更早版本的 Solaris 系统中,回环接口不支持 bytes 和 errors 值,因为内核不会存储和/或报告字节、错误和利用率统计信息。
但是,如果你通过 net-snmp 监控 Solaris 系统,则可能会返回这些值,因为 net-snmp 保留了可追溯到 1997 年的 cmu-snmp 旧代码;当它无法从接口统计信息中读取字节值时,会返回数据包计数器(该计数器在回环接口上确实存在)乘以任意值 308。
这是假定数据包的平均长度为 308 八位字节,但这只是非常粗略的估算,因为 Solaris 系统中回环接口的 MTU 上限为 8892 字节。
不应认为这些值是正确的,甚至不能认为它们接近准确。
它们只是估算值。
Zabbix agent 不会进行任何猜测,但 net-snmp 会为这些字段返回一个值。
6 在 Solaris 上,从 /proc/pid/psinfo 获取的命令行限制为 80 字节,并且包含的是进程启动时的命令行。
7 vfs.file.contents[]、vfs.file.regexp[]、vfs.file.regmatch[] 监控项可用于检索文件内容。
如果你想限制对包含敏感信息的特定文件的访问,请在无权查看这些文件的用户下运行 Zabbix agent。
与命令行工具一起使用
请注意,当使用命令行通过 zabbix_agentd 或 zabbix_get 测试或使用监控项键值时,还应考虑 shell 语法。
例如,如果键值的某个参数必须用双引号括起来,则必须显式转义双引号;否则,shell 会将其作为特殊字符去掉,这些双引号将不会传递给 Zabbix 工具。
示例:
zabbix_agentd -t 'vfs.dir.count[/var/log,,,"file,dir",,0]'
zabbix_agentd -t vfs.dir.count[/var/log,,,\"file,dir\",,0]
编码设置
为确保获取的数据不被损坏,您可以在 encoding 参数中为处理检查(例如 vfs.file.contents)指定正确的编码。
支持的编码列表(代码页标识符)可在 libiconv(GNU Project)文档或 Microsoft Windows SDK 的 "Code Page Identifiers" 文档中找到。
请注意,Microsoft 有时会将某些代码页标记为“仅适用于托管应用程序”——即仅通过 .NET 运行时公开,而无法通过原生 Win32 API 使用。
Zabbix agent 实现了自己的编码转换逻辑,因此即使原生 Windows 函数未提供这些代码页,Zabbix agent 仍然支持它们。
如果在 encoding 参数中未指定编码,则会应用以下解析策略:
- 如果未指定编码(或为空字符串),则假定其为 UTF-8,数据将按“原样”处理;
- BOM 分析——适用于监控项
vfs.file.contents、vfs.file.regexp、vfs.file.regmatch。 将尝试通过文件开头的字节顺序标记(BOM)来确定正确的编码。 如果不存在 BOM,则改为应用标准解析方式(见上文)。
排查 agent 监控项问题
对于被动检查,为防止由于服务器对 agent 的请求先超时而导致监控项无法获取任何值,需要注意以下几点: