ADC

了解用户监视器

用户监视器扩展了自定义监视器的范围。您可以创建用户监视器来跟踪 NetScaler 设备不支持的自定义应用程序和协议的运行状况。下图说明了用户监视器的工作原理。

图 1. 用户监视器

User-monitor

用户监视器需要以下组件。

调度员。设备上监听监视请求的进程。调度程序可以在环回 IP 地址 (127.0.0.1) 和端口 3013 上。调度员也称为内部调度员。调度程序也可以是支持通用网关接口 (CGI) 的 Web 服务器。此类调度员也称为外部调度员。它们用于不在 FreeBSD 环境中运行的自定义脚本,例如 .NET 脚本。

注意:

您可以通过在监视器上启用“安全”选项,将监视器和调度程序配置为使用 HTTPS 而不是 HTTP,然后将其配置为外部调度程序。但是,内部调度员只能理解 HTTP,不能使用 HTTPS。

在 HA 设置中,调度程序在主 NetScaler 设备和辅助 NetScaler 设备上运行。调度程序在辅助设备上保持非活动状态。

脚本。该脚本是一个将自定义探测器发送到负载平衡服务器并将响应代码返回给调度程序的程序。脚本可以向调度程序返回任何值,但是如果探测成功,脚本必须返回零 (0) 的值。调度程序会将任何其他值视为探测失败。

NetScaler 设备附带了常用协议的示例脚本。这些脚本存在于 /nsconfig/monitor 目录中。如果要添加脚本,请将其添加到那里。要自定义现有脚本,请使用新名称创建副本并对其进行修改。

重要:

  • 从 NetScaler 13.0 版本构建 41.20 开始,您可以使用 nsntlm-lwp.pl 脚本创建监视器来监视安全的 NTLM 服务器。

  • 从版本 10.1 版本 122.17 开始,用户监视器的脚本文件位于新位置。

    如果将 MPX 或 VPX 虚拟设备升级到 10.1 版本 122.17 或更高版本,则更改如下:

    • 在 /nsconfig/monitors/ 中创建一个名为“冲突”的新目录,之前版本的所有内置脚本都将移动到此目录中。
    • 所有新的内置脚本都可以在 /netscaler/monitors/ 目录中找到。所有自定义脚本都可以在 /nsconfig/monitors/ 目录中找到。
    • 在 /nsconfig/监视器/目录中保存新的自定义脚本。
    • 升级完成后,如果创建了自定义脚本并将其保存在 /nsconfig/monitors/ 目录中,并且与内置脚本同名,则 /netscaler/monitors/ 目录中的脚本优先。自定义脚本不会运行。

    如果使用 10.1 版本 122.17 或更高版本配置虚拟设备,则更改如下:

    • 所有内置脚本都可以在 /netscaler/监视器/目录中找到。
    • /nsconfig/监视器/目录为空。
    • 如果创建自定义脚本,则必须将其保存在 /nsconfig/monitors/ 目录中。

为了使脚本正常运行:

  • 脚本名称中的最大字符数不得超过 63 个。
  • 可以提供给脚本的脚本参数的最大数量不得超过 512 个。
  • 参数脚本参数中可以提供的最大字符数不得超过 639 个。

要调试脚本,必须使用 CLI 中的 nsumon-debug.pl 脚本来运行它。您可以使用脚本名称(及其参数)、IP 地址和端口作为 nsumon-debug.pl 脚本的参数。用户必须使用 nsumon-debug.pl 脚本的脚本名称、IP 地址、端口、超时和脚本参数。

在 CLI 中,键入:

nsumon-debug.pl <scriptname> <IP> <port> <timeout> <partitionID> [scriptarguments][is_secure]
<!--NeedCopy-->

重要提示:从版本 10.5 开始,版本 57.x 和用户监视器的 11.0 脚本文件支持 IPv6 地址,并包含以下更改:

  • 对于以下协议,对于 IPv6 支持, pm files 已包括新的协议。

    • RADIUS
    • NNTP
    • POP3
    • SMTP
  • /netscaler/monitors/ 中的以下示例脚本已针对 IPv6 支持进行了更新:

    • nsbmradius.pl

    • nsldap.pl

    • nsnntp.pl

    • nspop3 nssf.pl

    • nssnmp.pl

    • nswi.pl

    • nstftp.pl

    • nssmtp.pl

    • nsrdp.pl

    • nsntlm-lwp.pl

    • nsftp.pl

    • nsappc.pl

    升级到 10.5 版本版本 57.x 或 11.0 版后,如果要将现有的自定义脚本与 IPv6 服务结合使用,请确保使用 /netscaler/monitors/ 中更新的示例脚本中提供的更改来更新现有的自定义脚本。

注意:

示例脚本 nsmysql.pl 不支持 IPv6 地址。如果 IPv6 服务绑定到使用 nsmysql.pl 的用户监视器,则探测将失败。

  • 以下 LB 监视器类型已更新为支持 IPv6 地址:

    • USER

    • SMTP

    • NNTP

    • LDAP

    • SNMP

    • POP3

    • FTP_EXTENDED

    • StoreFront

    • APPC

    • CITRIX_WI_EXTENDED

    如果要创建使用这些 LB 监视器类型之一的自定义脚本,请确保在自定义脚本中包含 IPv6 支持。有关为支持 IPv6 而必须在自定义脚本中进行的更改,请参阅 /netscaler/monitors/ 中关联的示例脚本。

要跟踪服务器的状态,监视器会向配置的调度程序发送 HTTP POST 请求。此 POST 请求包含服务器的 IP 地址和端口以及必须运行的脚本。调度程序使用用户定义的参数(如果有)作为子进程运行脚本。然后,脚本将探测发送到服务器。脚本会将探测器的状态(响应代码)发送给调度程序。调度程序将响应代码转换为 HTTP 响应并将其发送到监视器。监视器根据 HTTP 响应将服务标记为启用或关闭。

当用户监视器探测失败时,NetScaler 设备会将错误消息记录到 /var/nslog/nsumond.log 文件中。这些详细的错误消息显示在 GUI 中,以及 show service/service group 命令的 CLI 中。

下表列出了用户监视器和可能的失败原因。

用户监视器类型 探测失败的原因
SMTP 监视器无法建立与服务器的连接。
NNTP 监视器无法建立与服务器的连接。
  缺少或无效的脚本参数,其中可能包含无效数量的参数或参数格式。
  监视器找不到 NNTP 组。
LDAP 监视器无法建立与服务器的连接。
  缺少或无效的脚本参数,其中可能包含无效数量的参数或参数格式。
  监视器无法绑定到 LDAP 服务器。
  监视器无法在 LDAP 服务器中找到目标实体的条目。
FTP 与服务器的连接超时。
  缺少或无效的脚本参数,其中可能包含无效数量的参数或参数格式。
  登录失败。
  监视器在服务器上找不到文件。
POP3 监视器无法建立到数据库的连接。
  缺少或无效的脚本参数,其中可能包含无效数量的参数或参数格式。
  登录失败。
  SQL 查询的准备失败。
  SQL 查询的执行失败。
SNMP 监视器无法建立到数据库的连接。
  缺少或无效的脚本参数,其中可能包含无效数量的参数或参数格式。
  登录失败。
  监视器无法创建 SNMP 会话。
  监视器找不到对象标识符。
  监视器阈值设置大于或等于监视器的实际阈值。
RDP(Windows 终端服务器) 缺少或无效的脚本参数,其中可能包含无效数量的参数或参数格式。
  监视器无法创建套接字。
  版本不匹配。
  监视器无法确认连接。

您可以使用以下命令从 CLI 查看日志文件:

> shell
root@ns# cat /var/nslog/nsumond.log
root@ns# exit
>
<!--NeedCopy-->

该命令打开 BSD 外壳,在屏幕上显示日志文件,关闭 BSD 外壳,然后返回到 CLI。

在 NetScaler 13.0 版 build 52.X 之前,该 show service/service group 命令显示一条通用错误消息,指出“探测失败”是导致用户监视器探测失败的原因。

示例:

show service ftp

Monitor Name: mon2
State: UNKNOWN  Weight: 1   Passive: 0
Probes: 3    Failed [Total: 0 Current: 0]
Last response: Failure - Probe failed.
Response Time: 1071.838 millisec
<!--NeedCopy-->

从 NetScaler 版本 13.0 build 52.X 开始,该 show service/service group 命令会显示用户监视器探测器失败的实际原因。

示例:

show service ftp

Monitor Name: mon2
State: DOWN   Weight: 1   Passive: 0
Probes: 729   Failed [Total: 726 Current: 726]
Last response: Failure - Login failed.
Response Time: 8000.0 millisec
<!--NeedCopy-->

用户监视器还具有超时值和探测失败的重试次数。可以将用户监视器与非用户监视器配合使用。在 CPU 利用率高的情况下,非用户监视器可以更快地检测服务器故障。

如果用户监视器探测在高 CPU 使用率期间超时,则服务的状态将保持不变。

示例 1:

add lb monitor <name> USER –scriptname <script-name> -resptimeout 5 seconds
<!--NeedCopy-->

注意:

对于可编写脚本的监视器,响应超时必须配置为等于预期超时 + 1 秒的值。例如,如果您预计超时为 4 秒,请将响应超时配置为 5 秒。

示例 2:

add lb monitor <name> USER –scriptname <script-name> -scriptargs <Arguments> -secureargs <Arguments>
<!--NeedCopy-->

注意:

对于与脚本相关的任何敏感数据,我们建议您使用 secureargsscriptargs 参数而不是参数。

了解用户监视器