2 Windows Zabbix agent

概述

Windows Zabbix agent监控项分为两个列表:

请注意,所有在Windows上由Zabbix agent支持的监控项键也同样被新一代Zabbix agent 2支持。查看 额外的监控项键,这些监控项键仅适用于agent 2。

另请参阅:Windows监控项的最低权限要求

共享监控项

下表列出了在Windows上支持的Zabbix agent监控项,这些监控项与UNIX Zabbix agent共享:

  • 监控项键是链接到UNIX Zabbix agent监控项的完整详情
  • 包含与Windows相关的监控项注释
监控项键 描述 监控项组
log 日志文件的监控。此监控项不支持Windows事件日志。
persistent_dir参数在Windows上不支持。
日志监控
log.count 在受监控日志文件中匹配行的计数。此监控项不支持Windows事件日志。
persistent_dir参数在Windows上不支持。
logrt 旋转日志文件的监控。此监控项不支持Windows事件日志。
persistent_dir参数在Windows上不支持。
logrt.count 在旋转的受监控日志文件中匹配行的计数。此监控项不支持Windows事件日志。
persistent_dir参数在Windows上不支持。
modbus.get 读取Modbus数据。 Modbus
net.dns 检查DNS服务是否运行。
iptimeoutcount参数在Windows上被忽略,除非使用Zabbix agent 2。
网络
net.dns.perf 检查DNS服务的性能。
iptimeoutcount参数在Windows上被忽略,除非使用Zabbix agent 2。
net.dns.record 执行DNS查询。
iptimeoutcount参数在Windows上被忽略,除非使用Zabbix agent 2。
net.if.discovery 网络接口列表。
某些Windows版本(例如,Server 2008)可能需要安装最新更新以支持接口名称中的非ASCII字符。
net.if.in 网络接口的入站流量统计。
在Windows上,如果可用,监控项从64位计数器获取值。64位接口统计计数器在Windows Vista和Windows Server 2008中引入。如果64位计数器不可用,agent使用32位计数器。
Windows上支持多字节接口名称。
您可以通过net.if.discovery或net.if.list监控项在Windows上获取网络接口描述。
net.if.out 网络接口的出站流量统计。
在Windows上,如果可用,监控项从64位计数器获取值。64位接口统计计数器在Windows Vista和Windows Server 2008中引入。如果64位计数器不可

仅适用于Windows的监控项

该表提供了仅适用于Windows Zabbix agent的监控项键的详细信息。

仅适用于Windows的监控项有时是类似代理监控项的近似对应物,例如,在Windows上支持的proc_info大致对应于在Windows上不支持的proc.mem监控项。

监控项键是到完整监控项键详细信息的链接。

键值 描述 监控项组
eventlog Windows事件日志监视。 日志监视
eventlog.count Windows事件日志中行数的计数。
net.if.list 网络接口列表(包括接口类型、状态、IPv4地址、描述)。 网络
perf_counter 任何Windows性能计数器的值。 性能计数器
perf_counter_en 任何Windows性能计数器的值(英文)。
perf_instance.discovery Windows性能计数器的对象实例列表。
perf_instance_en.discovery 使用英文对象名称发现的Windows性能计数器的对象实例列表。
proc_info 有关特定进程的各种信息。 进程
registry.data 返回Windows注册表键中指定值名称的数据。 注册表
registry.get 位于给定键处的Windows注册表值或键的列表。
service.discovery Windows服务列表。 服务
service.info 有关服务的信息。
services 服务列表。
vm.vmemory.size 虚拟内存大小(以字节或占总内存的百分比)。 虚拟内存
wmi.get 执行WMI查询并返回第一个选定的对象。 WMI
wmi.getall 执行WMI查询并返回整个响应。

监控项键值详情

没有尖括号的参数是必填的。带有尖括号 < > 的参数是可选的。

eventlog[name,<regexp>,<severity>,<source>,<eventid>,<maxlines>,<mode>]


事件日志监控。
返回值:Log

参数:

  • name - 事件日志通道的名称(在事件查看器GUI中的Log Name);
  • regexp - 描述所需模式的正则表达式(区分大小写);
  • severity - 描述严重性的正则表达式(不区分大小写)。此参数接受基于以下值的正则表达式:"Information", "Warning", "Error", "Critical", "Verbose"(在Windows Vista或更新版本上运行)。
  • source - 描述源标识符的正则表达式(不区分大小写);
  • eventid - 描述事件标识符(区分大小写)的正则表达式;
  • maxlines - 每秒最大行数,agent将向Zabbix server或proxy发送。此参数覆盖zabbix_agentd.conf中的'MaxLinesPerSecond'值。
  • mode - 可能的值:all(默认)或skip - 跳过旧数据的处理(仅影响新创建的监控项)。

注释:

  • 监控项必须配置为active check
  • agent无法从"Forwarded events"日志发送事件;
  • 支持Windows Eventing 6.0;
  • 为监控项选择非日志type of information将导致丢失本地时间戳,以及日志严重性和源信息;
  • 参见log monitoring的附加信息。

示例:

eventlog[Application]
       eventlog[Microsoft-Windows-Application-Experience/Program-Compatibility-Assistant]
       eventlog[Security,,"Failure Audit",,^(529|680)$]
       eventlog[System,,"Warning|Error"]
       eventlog[System,,,,^1$]
       eventlog[Windows PowerShell,,,,,,skip]
       eventlog[System,,,,@TWOSHORT] #此处引用了一个名为`TWOSHORT`的自定义正则表达式(定义为*Result is TRUE*类型,表达式本身为`^1$|^70$`)。
eventlog.count[name,<regexp>,<severity>,<source>,<eventid>,<maxproclines>,<mode>]


Windows事件日志中行的数量。
返回值: integer

参数:

  • name - 事件日志通道的名称(Log Name在事件查看器GUI中);
  • regexp - 描述所需模式的正则表达式(区分大小写);
  • severity - 描述严重性的正则表达式(不区分大小写)。此参数接受基于以下值的正则表达式: "Information", "Warning", "Error", "Critical", "Verbose"(在Windows Vista或更新版本上运行)。
  • source - 描述源标识符的正则表达式(不区分大小写);
  • eventid - 描述事件标识符(区分大小写)的正则表达式;
  • maxproclines - agent每秒分析的新行最大数量(不得超过10000)。默认值是10*'MaxLinesPerSecond'在zabbix_agentd.conf中。
  • mode - 可能的值: all(默认)或skip - 跳过旧数据的处理(仅影响新创建的监控项)。

注释:

  • 监控项必须配置为active check;
  • agent无法从"Forwarded events"日志发送事件;
  • 支持Windows Eventing 6.0;
  • 为这个监控项选择非Log type of information将导致本地时间戳的丢失,以及日志严重性和源信息;
  • 请参阅log monitoring上的更多信息。

示例:

eventlog.count[System,,"Warning|Error"]
       eventlog.count[Windows PowerShell,,,,,,skip]
net.if.list

网络接口列表(包括接口类型、状态、IPv4地址、描述)。
返回值:文本

注释:

  • 支持多字节接口名称;
  • 禁用的接口不会列出;
  • 启用/禁用某些组件可能会更改它们在Windows接口名称中的顺序;
  • 某些Windows版本(例如,Server 2008)可能需要安装最新更新才能支持接口名称中的非ASCII字符。
perf_counter[counter,<interval>]

任何Windows性能计数器的值。
返回值:整数浮点数字符串文本(取决于请求)。

参数:

  • counter - 计数器的路径;
  • interval - 用于存储平均值的最后N秒。interval必须在1到900秒之间(包括1和900),默认值为1。

注释:

  • interval用于需要多个样本的计数器(例如CPU利用率),因此每次检查都会返回最后“interval”秒的平均值;
  • 可以使用性能监视器获取可用计数器的列表。
  • 另请参阅:Windows性能计数器
perf_counter_en[counter,<interval>]

任何Windows性能计数器的值(英文)。
返回值:整数浮点数字符串文本(取决于请求)。

参数:

  • counter - 计数器的路径(英文);
  • interval - 用于存储平均值的最后N秒。interval必须在1到900秒之间(包括1和900),默认值为1。

注释:

  • interval用于需要多个样本的计数器(例如CPU利用率),因此每次检查都会返回最后“interval”秒的平均值;
  • 该监控项仅在Windows Server 2008/Vista及更高版本上受支持;
  • 您可以通过查看以下注册表键找到英文字符串的列表:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\009
perf_instance.discovery[object]

Windows性能计数器的对象实例列表。用于低等级自动发现
返回值:JSON对象

参数:

  • object - 对象名称(本地化)。
perf_instance_en.discovery[object]

Windows性能计数器的对象实例列表,使用英文对象名称进行发现。用于低级发现
返回值:JSON对象

参数:

  • object - 对象名称(英文)。
proc_info[process,<attribute>,<type>]


关于特定进程(es)的各种信息。
返回值:Float

参数:

  • process - 进程名称;
  • attribute - 请求的进程属性;
  • type - 表示类型(当存在多个同名进程时有意义)

注释:

  • 支持以下 attributes
    vmsize(默认)- 进程虚拟内存大小,单位为K字节
    wkset - 进程工作集大小(进程使用的物理内存量),单位为K字节
    pf - 页面错误数量
    ktime - 进程内核时间,单位为毫秒
    utime - 进程用户时间,单位为毫秒
    io_read_b - 进程在I/O操作期间读取的字节数
    io_read_op - 进程执行的读操作次数
    io_write_b - 进程在I/O操作期间写入的字节数
    io_write_op - 进程执行的写操作次数
    io_other_b - 进程在读和写操作之外的操作期间传输的字节数
    io_other_op - 进程执行的除读和写操作之外的I/O操作次数
    gdiobj - 进程使用的GDI对象数量
    userobj - 进程使用的USER对象数量;
  • 有效的 types 包括:
    avg(默认)- 所有名为<process>的进程的平均值
    min - 所有名为<process>的进程中的最小值
    max - 所有名为<process>的进程中的最大值
    sum - 所有名为<process>的进程的值之和;
  • 在64位系统上,需要64位Zabbix agent才能使此监控项正确工作。

示例:

proc_info[iexplore.exe,wkset,sum] #检索所有Internet Explorer进程占用的物理内存量
       proc_info[iexplore.exe,pf,avg] #检索Internet Explorer进程的平均页面错误数量
registry.data[key,<value name>]

返回Windows注册表键中指定值名称的数据。
返回值:整数字符串文本(取决于值类型)

参数:

  • key - 包括根键的注册表键;允许使用根缩写(例如HKLM);
  • value name - 键中的注册表值名称(默认为空字符串"")。如果未提供值名称,则返回默认值。

注释:

  • 支持的根缩写:
    HKCR - HKEY_CLASSES_ROOT
    HKCC - HKEY_CURRENT_CONFIG
    HKCU - HKEY_CURRENT_USER
    HKCULS - HKEY_CURRENT_USER_LOCAL_SETTINGS
    HKLM - HKEY_LOCAL_MACHINE
    HKPD - HKEY_PERFORMANCE_DATA
    HKPN - HKEY_PERFORMANCE_NLSTEXT
    HKPT - HKEY_PERFORMANCE_TEXT
    HKU - HKEY_USERS
  • 带有空格的键必须用双引号括起来。

示例:

registry.data["HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting"] #返回此键的默认值的数据
       registry.data["HKLM\SOFTWARE\Microsoft\Windows\Windows Error Reporting","EnableZip"] #返回此键中名为"Enable Zip"的值的数据
registry.get[key,<mode>,<name regexp>]

返回位于给定键处的Windows注册表值或键值列表。
返回值:JSON对象

参数:

  • key - 包括根键的注册表键;允许使用根缩写(例如HKLM)(请参阅registry.data[]的注释以查看缩写的完整列表);
  • mode - 可能的值:
    values(默认)或keys
  • name regexp - 仅发现名称与正则表达式匹配的值(默认-发现所有值)。仅允许在values作为mode时使用。

带有空格的键必须用双引号括起来。

示例:

registry.get[HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall,values,"^DisplayName|DisplayVersion$"] #返回此键中名称为"DisplayName"或"DisplayValue"的值的数据。JSON将包括键、最后一个子键、值名称、值类型和值数据的详细信息。
       registry.get[HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall,values] #返回此键中所有值的数据。JSON将包括键、最后一个子键、值名称、值类型和值数据的详细信息。
       registry.get[HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall,keys] #返回此键的所有子键。JSON将包括键和最后一个子键的详细信息。
service.discovery

Windows服务列表。用于低等级自动发现
返回值:JSON对象

service.info[service,<param>]

服务信息。
返回值:整数 - 对于paramstatestartup字符串 - 对于paramdisplaynamepathuser文本 - 对于paramdescription
具体针对state
0 - 运行中,1 - 暂停,2 - 启动挂起,3 - 暂停挂起,4 - 继续挂起,5 - 停止挂起,6 - 已停止,7 - 未知,255 - 无此服务
具体针对startup
0 - 自动,1 - 延迟自动,2 - 手动,3 - 禁用,4 - 未知,5 - 自动触发启动,6 - 延迟自动触发启动,7 - 手动触发启动

参数:

  • service - 实际服务名称或在MMC服务中看到的显示名称;
  • param - state(默认),displaynamepathuserstartupdescription

注释:

  • 类似service.info[service,state]service.info[service]的项目将返回相同的信息;
  • 仅当paramstate时,此项目才会为不存在的服务返回值(255)。

示例:

service.info[SNMPTRAP] - SNMPTRAP服务的状态;
       service.info[SNMP Trap] - 相同服务的状态,但指定了显示名称;
       service.info[EventLog,startup] - EventLog服务的启动类型
services[<type>,<state>,<exclude>]

服务列表。
返回值:0 - 如果为空;文本 - 以换行符分隔的服务列表。

参数:

  • type - all(默认),automaticmanualdisabled
  • state - all(默认),stoppedstartedstart_pendingstop_pendingrunningcontinue_pendingpause_pendingpaused
  • exclude - 从结果中排除的服务。应该用逗号分隔,不带空格列出要排除的服务名称,并用双引号括起来。

示例:

services[,started] #返回已启动服务的列表;
       services[automatic, stopped] #返回应该运行但已停止的服务列表;
       services[automatic, stopped, "service1,service2,service3"] #返回应该运行但已停止的服务列表,排除名称为"service1"、"service2"和"service3"的服务
vm.vmemory.size[<type>]


以字节或总量的百分比表示的虚拟内存大小。
返回值:整数 - 字节;浮点数 - 百分比。

参数:

  • type - 可能的值:available(可用虚拟内存)、pavailable(可用虚拟内存的百分比)、pused(已用虚拟内存的百分比)、total(总虚拟内存,默认)或 used(已用虚拟内存)

注释:

  • 虚拟内存统计的监控基于:
    • Windows 上的总虚拟内存(总物理内存 + 交换文件大小);
    • Zabbix agent 可以提交的内存的最大量;
    • 系统或 Zabbix agent 当前提交的内存限制,以较小者为准。

示例:

vm.vmemory.size[pavailable] #返回可用虚拟内存的百分比
wmi.get[<namespace>,<query>]


执行一个 WMI 查询并返回第一个选定的对象。
返回值:整数浮点数字符串文本(取决于请求)。

参数:

  • namespace - WMI 命名空间;
  • query - 返回单个对象的 WMI 查询。

WMI 查询使用 WQL 执行。

示例:

wmi.get[root\cimv2,select status from Win32_DiskDrive where Name like '%PHYSICALDRIVE0%'] #返回第一个物理磁盘的状态
wmi.getall[<namespace>,<query>]


执行一个 WMI 查询并返回整个响应。可用于低级发现
返回值:JSON 对象

参数:

  • namespace - WMI 命名空间;
  • query - WMI 查询。

注释:

  • WMI 查询使用 WQL 执行。
  • 可以使用 JSONPath 预处理 指向返回的 JSON 中更具体的值。

示例:

wmi.getall[root\cimv2,select * from Win32_DiskDrive where Name like '%PHYSICALDRIVE%'] #返回物理磁盘的状态信息

监控 Windows 服务

本教程提供了逐步设置监控 Windows 服务的说明。假设 Zabbix server和agent已配置并运行。

第一步

获取服务名称

您可以通过转到 MMC 服务管理单元并调出服务的属性来获得该名称。在“常规”选项卡中,您应该会看到一个名为“服务名称”的字段。后面的值是您在设置监控项时将使用的名称。

例如,如果您想监控“工作站”服务,那么您的服务可能是:lanmanworkstation

第二步

配置监控项以监控服务。

监控项service.info[service,<param>]用于检索有关特定服务的信息。根据您需要的信息,指定接受以下值的param选项:displaynamestatepathuserstartupdescription。如果未指定paramservice.info[service]),则默认值为state

返回值的类型取决于所选的paramstatestartup为整数;displaynamepathuser为字符字符串;description为文本。

示例:

  • 键值: service.info[lanmanworkstation]
  • 信息类型: 数字(无符号)

监控项service.info[lanmanworkstation]将检索有关服务状态的信息作为数字值。 要在前端将数字值映射到文本表示(例如,将"0"表示为"Running",将"1"表示为"Paused"等),您可以在配置了该项的主机上配置value mapping。 为此,请将模板Windows services by Zabbix agentWindows services by Zabbix agent active链接到主机,或在主机上配置一个新的值映射,该值映射基于上述模板上配置的Windows service state值映射。

请注意,上述两个模板都配置了发现规则,将自动发现服务。 如果不希望如此,可以在模板链接到主机后,在主机级别禁用发现规则

Windows 服务的发现

低级别自动发现提供了一种自动为计算机上的不同实体创建监视项、触发器和图形的方法。Zabbix 可以自动开始监视您计算机上的 Windows 服务,无需知道服务的确切名称或手动为每个服务创建监视项。过滤器可用于仅为感兴趣的服务生成真实的监视项、触发器和图形。