zabbix服务器端通过与zabbix agent通信来获取客户端服务器的数据,agent分为两个版本,其中一个是主动一个是被动,在配置主机我们可以看到一个是agent,另一个是agent(active)。前者为被动检测,后者为主动检测。那么主动和被动区别在哪里呢?
被动:zabbix server向zabbix agent讨要数据。
主动:zabbix agent提交数据给zabbix server。
监控项keys列表
以下表格是zabbix agent所支持的所有.请大家一一过目,认识他们就行,不需要背下来。
1 、Zabbix Agent(active)
概述
这些检查与Zabbix agent进行通信实现数据的采集。
一共有被动和主动两种agent模式. 在配置监控项时,你可以选择所需的类型:
- Zabbix agent 被动模式,Zabbix Server向Agent索要数据(默认, 如果要监控的客户端较多, zabbix server 主机负载会过大)
- Zabbix agent (active) 主动模式,Agent主动上报数据给Zabbix Server
支持的监控项key
下表提供了可用的Zabbix agent监控项的详细信息。
请参考:
必填和可选参数
没有尖括号的参数是强制性的,标有尖括号< >的参数是可选的。
Key |
|||
描述 |
返回值 |
参数 |
注释 |
agent.hostname |
|||
Agent主机名 |
字符串 |
String |
从配置文件返回Agent主机名的实际值。 |
agent.ping |
|||
Agent可用性检查 |
0- 不可用 1 - 可用 |
可使用Show value将: 0映射为down 1映射为up |
使用nodata()触发器函数检查主机不可用性。 |
agent.version |
|||
Zabbix Agent的版本 |
字符串 |
|
例如返回值:1.8.2 |
kernel.maxfiles |
|||
系统支持的打开文件的最大数量 |
整数 |
|
|
kernel.maxproc |
|||
系统支持的最大进程数 |
整数 |
|
|
log[file,<regexp>,<encoding>,<maxlines>,<mode>,<output>,<maxdelay>] |
|||
日志文件监控 |
Log |
file- 日志文件完整路径和名称 skip-
跳过处理的历史数据(仅影响新创建的监控项)。 类型:float。 值: 0-(默认)不忽略日志文件行; > 0.0 -忽略旧行,以便在“maxdelay”秒内获取最近分析的行。使用前请阅读maxdelay注释! |
监控项必须定义为主动检查(即active). 注意:除“Result为TRUE”之外的所有全局正则表达式类型始终返回整个匹配行,并忽略输出参数。 |
log.count[file,<regexp>,<encoding>,<maxproclines>,<mode>,<maxdelay>] |
|||
日志文件监控中匹配行的数量。 |
整数 |
file - 日志文件完整的路径和名称 默认值为
4*'MaxLinesPerSecond'在zabbix_agent配置文件. skip - 跳过处理的旧数据(仅影响新创建的监控项)。 类型: float. 值: 0 - (默认) 从不忽略每行日志; > 0.0 - 忽略旧行,以便在“maxdelay”秒内获取最近分析的行。 在使用前请阅读maxdelay参数 的注解! |
该监控项必须配置为主动检查(Active) |
logrt[file_regexp,<regexp>,<encoding>,<maxlines>,<mode>,<output>,<maxdelay>] |
|||
支持监控轮询的日志文件。 |
Log |
file_regexp - 文件名以及正则表达式定义的文件名的绝对路径。 skip - 跳过处理的旧数据(仅影响新创建的监控项)。 类型:float。 值: 0-(默认)不忽略日志文件行; > 0.0-忽略旧行,以便在“maxdelay”秒内获取最近分析的行。使用前请阅读maxdelay参数注释! |
监控项必须定义为主动检查active. 注意:除“Result为TRUE”之外的所有全局正则表达式类型始终返回整个匹配行,并忽略输出参数。 |
logrt.count[file_regexp,<regexp>,<encoding>,<maxproclines>,<mode>,<maxdelay>] |
|||
支持对轮询日志文件监控中匹配的行数。 |
整型 |
file_regexp -
文件名以及正则表达式定义的文件名的绝对路径 默认值为 4*'MaxLinesPerSecond' 定义在 zabbix_agent配置文件. skip -
跳过处理旧数据(仅影响新创建的监控项)。 类型:float。 值: 0-(默认)不忽略日志文件行; > 0.0-忽略旧行,以便在“maxdelay”秒内获取最近分析的行。 使用前请阅读maxdelay参数注释! |
监控项必须定义为主动检查.(Active) |
net.dns[<ip>,name,<type>,<timeout>,<count>,<protocol>] |
|||
检查DNS服务是否开启(通过查询某个域名来检查),可用来检查内网DNS服务是否在正常,或检测公网上 的某个DNS服务器是否可用 |
0 - DNS宕了(服务器没有响应或DNS解析失败) |
ip -
DNS服务器的IP地址(默认DNS服务器为空,在Windows上被忽略,不支持) |
示例: |
net.dns.record[<ip>,name,<type>,<timeout>,<count>,<protocol>] |
|||
执行一个DNS查询 使用这里的DNS服务器执行一条解析 |
字符串与所需类型的信息 |
ip -
DNS服务器的IP地址(默认DNS服务器为空,在Windows上被忽略) |
示例: |
net.if.collisions[if] |
|||
Number of out-of-window collisions. |
整型 |
if - 网卡名称 |
|
net.if.discovery |
|||
网络接口列表用于低级发现。 |
JSON对象 |
|
Zabbix agent从2.0之后开始支持。 |
net.if.in[if,<mode>] |
|||
网卡流入量统计。 |
整型 |
if -
网卡名 (Unix); 网卡完整描述或IPv4地址(Windows) |
在Windows上,该选项从64位计数器获取值(如果可用)。64位接口统计计数器在Windows
Vista和Windows Server 2008中引入。如果64位计数器不可用,agent使用32位计数器。 |
net.if.out[if,<mode>] |
|||
网卡流出量统计。 |
整型 |
if -
网卡名称 (Unix); 网卡完整描述或IPv4地址(Windows) |
在Windows上,该选项从64位计数器获取值(如果可用)。64位接口统计计数器在Windows
Vista和Windows Server 2008中引入。如果64位计数器不可用,agent使用32位计数器。 |
net.if.total[if,<mode>] |
|||
网卡的进出流量统计信息的总和。 |
整型 |
if -
网卡名称(Unix); 网卡完整描述或IPv4地址(Windows) |
在Windows上,该选项从64位计数器获取值(如果可用)。64位接口统计计数器在Windows Vista和Windows
Server 2008中引入。如果64位计数器不可用,agent使用32位计数器。 你可以使用net.if.discovery或net.if.list监控项在Windows上获取网卡说明。 |
net.tcp.listen[port] |
|||
检查此TCP端口是否处于监听状态, 即检查某个端口是否启动。 |
0 - 未监听 |
port - TCP端口 |
示例: |
net.tcp.port[<ip>,port] |
|||
检查是否可以将TCP连接到指定的端口。
|
0 - 不能连接 |
ip -
IP地址 (默认是 127.0.0.1) |
示例: |
net.tcp.service[service,<ip>,<port>] |
|||
检查服务是否正在运行并接受TCP连接。 |
0 - 服务down了 |
service -
如下任一服务: 注意: 第一个参数,服务名称必须按照上述的方式书写,如http,不能写成httpd 对于其他没有涉及到的服务,可使用tcp port - 端口号 (默认为标准服务端口号)
|
示例: |
net.tcp.service.perf[service,<ip>,<port>] |
|||
检测TCP服务性能 |
0 - 服务停止。 |
service -
如下任一服务: 注意: 第一个参数,服务名称必须按照上述的方式书写,如http,不能写成httpd 对于其他没有涉及到的服务,可使用tcp |
示例: |
net.udp.listen[port] |
|||
检测UDP端口是否处于监听状态。 |
0 - 未监听。 |
port - UDP端口 |
示例: |
net.udp.service[service,<ip>,<port>] |
|||
检查服务是否正在运行并能响应UDP请求 |
0 - 服务停了。 |
service - ntp (参考 详细信息) 目前仅支持ntp服务(时间服务器) |
示例:
|
net.udp.service.perf[service,<ip>,<port>] |
|||
检测UDP服务的性能 |
0 - 服务停了 |
service - ntp (参考详细信息) |
示例: |
proc.cpu.util[<name>,<user>,<type>,<cmdline>,<mode>,<zone>] |
|||
进程CPU利用率百分比。 |
浮点型 |
name - 进程名 (默认为 all processes) 使用netsteat
-tunlp显示结果的最后一列 current (默认), all. 此参数仅在Solaris平台上受支持。 从Zabbix 3.0.3开始,如果agent程序已在Solaris上编译且没有区域支持,而是在支持区域的较新Solaris上运行,并且<zone>参数为缺省值或当前值,则agent程序将返回NOTSUPPORTED(该代理程序不能将结果限制为仅当前区)。但在这种情况下,支持<zone>参数值all。 |
示例: |
proc.mem[<name>,<user>,<mode>,<cmdline>,<memtype>] |
|||
用户进程使用的内存。 |
整型 |
name - 进程名 (默认是all processes) 使用netsteat -tunlp显示结果的最后一列 默认是vsize(虚拟内存大小) 所有系统均支持的有3个: vsize 虚拟内存大小 rss 驻留集大小 pmem 驻留集占总内存的百分比 |
示例: |
proc.num[<name>,<user>,<state>,<cmdline>] |
|||
进程数量 |
整型 |
name - 进程名称 (默认是 all processes) all (默认), run, sleep, zomb |
示例: |
service.info[service,<param>] 测试不成功 |
|||
服务信息 |
|
关于服务的信息: Param取值为state或startup时: 返回整数 State: 0 - running, 1 - paused, 2 - start pending, 3 - pause pending, 4 - continue pending, 5 - stop pending, 6 - stopped, 7 - unknown, 255 - no such service; startup: 0 - automatic, 1 - automatic delayed, 2 - manual, 3 - disabled, 4 - unknown Param取值为displayname, path, user时: 返回值为字符串string类型 Param取值为description时: 返回值为Text类型 |
|
services[<type>,<state>,<exclude>] 测试不成功 |
|||
列表服务 |
|
返回0表示空, 如果是列表则是每行一个内容 |
|
sensor[device,sensor,<mode>] |
|||
硬件传感器读数 |
浮点型 |
device -
设备名称 |
在Linux 2.4上读取
/proc/sys/dev/sensors 在Zabbix 1.8.4之前,使用传感器[temp1]格式。 |
system.boottime |
|||
系统启动时间 |
整数 (Unix时间戳) |
|
|
system.cpu.discovery |
|||
检测到的CPU/CPU内核列表。用于低级发现。 |
JSON对象 |
|
所有平台从2.4.0开始支持 |
system.cpu.intr |
|||
设备中断数 |
整数 |
|
数字越大说明系统系统越忙碌,频繁在各个应用之间切换 |
system.cpu.load[<cpu>,<mode>] |
|||
CPU负载 |
浮点数 |
cpu - 可能的值: avg1 (默认), avg5, avg15 |
示例: |
system.cpu.num[<type>] |
|||
CPU的数量 |
整数 |
type -
可能的值: |
示例: |
system.cpu.switches |
|||
上下文交换的数量。 |
整数 |
|
旧名称: system[switches] |
system.cpu.util[<cpu>,<type>,<mode>] |
|||
CPU利用率。 |
浮点型 |
cpu - <CPU序号> 或者 all (默认值) type - 可能的值: |
示例: |
system.hostname[<type>] |
|||
系统主机名 |
字符串型 |
type (仅Windows使用) – netbios (默认) 或者 host |
该值由Windows上的GetComputerName()(对于netbios)或gethstname()(用于host)函数以及其它系统上的“hostname”命令获取。 |
system.hw.chassis[<info>] |
|||
机架信息(需要机架是网络设备) |
字符串 |
info – full (默认), model, serial, type or vendor之一 |
示例: system.hw.chassis[full] |
system.hw.cpu[<cpu>,<info>] |
|||
CPU信息 |
字符串或者整型 |
cpu - <CPU序号> 或者 all (默认) |
示例: |
system.hw.devices[<type>] |
|||
列出PCI或者USB设备 通过执行lspci指令获得信息 |
文本型 |
type - pci (默认) 或者 usb |
示例: |
system.hw.macaddr[<interface>,<format>] |
|||
列出MAC地址 |
字符串型 |
interface - all (默认) 或者为一个正则表达式 |
列出与给定接口正则表达式名称匹配的网卡的MAC地址(所有网卡的所有列表)。 |
system.localtime[<type>] |
|||
系统时间 |
整数 - type为 utc |
type -
可能的值: local - 'yyyy-mm-dd,hh:mm:ss.nnn,+ hh:mm'格式的时间 |
此监控项参数从Zabbix agent 版本2.0开始支持。 示例: |
system.run[command,<mode>] 提示远程指令不能执行 |
|||
在主机上运行指定的命令 |
命令执行的文本结果 |
command -
要执行的命令 |
最多可以返回512KB的数据,包括截断的尾随空格。 否则会提示:Remote commands are not enabled. |
system.stat[resource,<type>] |
|||
系统信息。 |
整型或浮点型 |
ent - 该分区有权接收的处理器单元数(float) |
|
system.sw.arch |
|||
软件架构信息。 |
字符串型 |
|
示例: |
system.sw.os[<info>] |
|||
操作系统信息 |
字符串 |
info -
可能的值: |
示例: |
system.sw.packages[<package>,<manager>,<format>] |
|||
列出已安装的软件包。 |
文本 |
package - all (默认) 或者为正则表达式 |
列表(按字母顺序)安装的包名称与给定的包regexp匹配的包(全部列出它们全部)。 |
system.swap.in[<device>,<type>] |
|||
交换(从设备到内存)统计。 |
整型 |
device -
用于交换的设备 (默认是all) 有关默认的详细信息请参考 支持的平台 |
示例: |
system.swap.out[<device>,<type>] |
|||
交换(从内存到设备)统计。 |
整型 |
device -
用于交换的设备 (默认是all) |
示例: |
system.swap.size[<device>,<type>] |
|||
交换空间大小(以字节为单位)或百分比(total)。 |
Integer - 字节 |
device -
用于交换的设备 (默认是 all) pfree (空闲交换空间,百分比), pused (使用交换空间,百分比), total(总交换空间), used (使用交换空间) |
如果没有指定设备,Zabbix代理只会考虑交换设备(文件),物理内存将被忽略。 例如,在Solaris系统上,swap -s命令包含一部分物理内存和交换设备(与swap -l不同)。 |
system.uname |
|||
系统相关信息 |
字符串 |
|
返回值的示例(Unix): |
system.uptime |
|||
系统正常运行时间(以秒为单位) |
整数 |
|
在监控项配置中, 使用 s 或者 uptime 单位来获取可读取的值。 |
system.users.num |
|||
已登录用户数 |
整数 |
|
who 命令用于代理端获取该值。 |
vfs.dev.read[<device>,<type>,<mode>] |
|||
磁盘读取统计信息 |
Integer – Type取值为 sectors, operations, bytes |
device -
磁盘设备
(默认为 all) sectors per second(每秒扇区数) operations per second(每秒操作数) bytes per second(每秒字节数)
|
不同操作系统的“类型”参数的默认值: |
vfs.dev.write[<device>,<type>,<mode>] |
|||
磁盘写入统计信息 |
整数 - 类型 为sectors, operations, bytes 浮点型 - 类型 为 sps, ops, bps |
device - 磁盘设备 (默认为all) sectors per second(每扇区数) operations per second(每秒操作数) bytes per second(每秒字节数)
mode - 可能的值: avg1 (默认), avg5, avg15 |
不同操作系统的“类型”参数的默认值: |
vfs.dir.size[dir,<regex_incl>,<regex_excl>,<mode>,<max_depth>] |
|||
目录大小(以字节为单位) |
整数 |
dir -
目录的绝对路径
disk - 获取磁盘使用情况 (作为 du -s -B1 dir). 和du命令不同,vfs.dir.size 监控项在计算目录大小时会将隐藏的文件也包含在内(作为 du -sb .[^.]* * 在 dir内).
1 (默认) - 无限 0 - 不会遍历到子目录。 |
仅计算具有zabbix用户读取权限的目录。 |
vfs.file.cksum[file] |
|||
文件checksum校验,由UNIX cksum算法计算实现 |
整型 |
file - 文件全路径 |
示例: |
vfs.file.contents[file,<encoding>] |
|||
检索文件的内容 |
文本 |
file -
文件全路径 默认是utf-8 |
如果文件为空或仅包含LF/CR字符,则返回空字符串。 |
vfs.file.exists[file] |
|||
检测文件是否存在。 |
0 - 不存在 |
file - 文件的全路径 |
示例: |
vfs.file.md5sum[file] |
|||
文件的MD5 checksum |
字符串(文件的MD5哈希) |
file - 文件的全路径 |
示例: |
vfs.file.regexp[file,regexp,<encoding>,<start line>,<end line>,<output>] |
|||
查找文件中的字符串 |
包含匹配字符串的行,或由可选输出参数指定的行 |
file -
文件完整路径 |
只返回第一个匹配行。\\如果没有行与表达式匹配,则返回空字符串。 |
vfs.file.regmatch[file,regexp,<encoding>,<start line>,<end line>] |
|||
查询文件中的字符串 |
0 - 不匹配 |
file -
文件全路径 |
start line, end line 和output 参数从版本2.2开始支持。 |
vfs.file.size[file] |
|||
文件大小(按字节) |
整数 |
file - 文件全路径 |
文件必须具有Zabbix用户读的权限。 |
vfs.file.time[file,<mode>] |
|||
文件时间信息。 |
整数(Unix时间戳) |
file -
文件全路径 access - 最后一次访问时间, change - 最后一次修改时间 |
示例: |
vfs.fs.discovery |
|||
挂载的文件系统列表。用于低级发现 |
JSON对象 |
|
Zabbix agent从版本2.0开始支持。 |
vfs.fs.inode[fs,<mode>] |
|||
inode的数量或百分比 |
整型 - 针对数量 |
fs -
文件系统 |
示例: |
vfs.fs.size[fs,<mode>] |
|||
磁盘空间,以字节为单位,用百分比表示。 |
整数 - 针对字节 |
fs -
文件系统 |
在安装卷的情况下,返回本地文件系统的磁盘空间。 |
vm.memory.size[<mode>] |
|||
内存大小,以字节为单位,以百分比表示。 |
整数 - 用于字节 |
mode - 可能的值: |
此监控项接受3类参数: |
web.page.get[host,<path>,<port>] |
|||
获取网页内容。 包括响应头和实体 curl -I + 实体部分 |
网页源码 |
host -
主机名 |
失败时返回一个空字符串。 |
web.page.perf[host,<path>,<port>] |
|||
加载完整网页的时间(以秒为单位) |
浮点 |
host -
主机名 |
失败时返回一个空字符串。 |
web.page.regexp[host,<path>,<port>,<regexp>,<length>,<output>] |
|||
在网页上查找字符串。 |
匹配的字符串,或由可选的“输出”参数指定 |
host -
主机名 |
如果找不到匹配或失败,则返回一个空字符串。 |
一个特定于Linux的注意事项:Zabbix Agent必须具有权限读取文件系统/proc(因此要给zabbix用户(运行zabbix agent的用户)足够的权限)。
参阅www.grsecurity.org的内核修补程序限制非特权用户的访问权限。
可用的编码
encoding参数用于指定处理相应监控项检查的编码,以便获取的数据不会被破坏。 有关支持的编码(代码页标识符)的列表,请参阅相应的文档,例如libiconv(GNU Project)或Microsoft Windows SDK文档“代码页标识符”的文档。
如果传递空encoding,则默认使用UTF-8(用于较新的Unix/Linux发行版的默认语言环境,请参阅系统设置)或使用具有系统特定扩展(Windows)的ANSI。
关于监控项的一些疑难问题
1)如果与passive agent(被动式)一起使用,Zabbix Server服务器配置中的超时值可能需要高于Agent配置文件中的超时值。 否则,该监控项可能无法获取任何值,因为zabbix server请求agent时首先超时。