了解用户监视器
用户监视器扩展了自定义监视器的范围。您可以创建用户监控器,以跟踪Citrix ADC设备不支持的自定义应用程序和协议的运行状况。下图说明了用户监视器的工作原理。
图1。用户监控
用户监视器需要以下组件。
调度员。设备上监听监视请求的进程。调度程序可以位于环回IP地址(127.0.0.1)和端口3013上。调度员也称为内部调度员。调度程序也可以是支持通用网关接口(CGI)的web服务器。这样的调度程序也称为外部调度程序。它们用于不运行在FreeBSD环境中的自定义脚本,例如。net脚本。
注意:
通过在监视器上启用“secure”选项,可以将监视器和调度程序配置为使用HTTPS而不是HTTP,并将其配置为外部调度程序。但是,内部调度程序只理解HTTP,不能使用HTTPS。
在HA设置中,调度程序运行在主要和次要Citrix ADC设备上。调度程序在辅助设备上保持不活动状态。
脚本。该脚本是一个将自定义探测发送到负载均衡服务器并将响应代码返回到调度程序的程序。脚本可以向调度程序返回任何值,但如果探测成功,脚本必须返回0(0)。调度程序将任何其他值视为探测失败。
Citrix ADC设备与常用协议的示例脚本捆绑在一起。这些脚本存在于/nsconfig/monitors目录中。如果您想添加一个脚本,请将它添加到这里。要自定义现有脚本,请使用新名称创建副本并修改它。
重要的是:
从Citrix ADC release 13.0 build 41.20开始,您可以使用
nsntlm-lwp.pl
脚本来创建监视安全NTLM服务器的监视器。从版本10.1构建122.17开始,用户监视器的脚本文件位于一个新的位置。
如果您将MPX或VPX虚拟设备升级到版本10.1 build 122.17或更高版本,更改如下:
- 在/nsconfig/monitors/中创建了一个名为conflicts的新目录,以前构建的所有内置脚本都移动到这个目录中。
- 所有新的内置脚本都在/netscaler/monitors/目录中可用。所有自定义脚本都在/nsconfig/monitors/目录中可用。
- 在/nsconfig/monitors/目录下保存一个新的自定义脚本。
- 升级完成后,如果在“/nsconfig/monitors/”目录下创建了与内置脚本同名的自定义脚本,则优先选择“/netscaler/monitors/”目录下的自定义脚本。自定义脚本不运行。
如果您使用版本10.1 build 122.17或更高版本提供虚拟设备,更改如下:
- 所有内置脚本都在/netscaler/monitors/目录下。
- /nsconfig/monitors/目录为空。
- 如果你创建了一个自定义脚本,你必须将它保存在/nsconfig/monitors/目录下。
为了使脚本正确运行:
- 脚本名称的最大字符数不能超过63个。
- 可以提供给脚本的脚本参数的最大数量不能超过512。
- 在参数脚本参数中可以提供的最大字符数不能超过639。
要调试该脚本,必须从CLI使用nmon -debug.pl脚本运行它。使用脚本名(及其参数)、IP地址和端口作为nmon -debug.pl脚本的参数。用户必须使用nmon -debug.pl脚本的脚本名称、IP地址、端口、超时时间和脚本参数。
在命令行中输入:
nsumon-debug.pl [scriptaruments][is_secure]
重要的:从10.5版本构建57开始。x和11.0脚本文件的用户监视器支持IPv6地址,包括以下修改:
对于以下协议,新
点文件
已经包括IPv6支持。- 半径
- 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的用户监视器,则探测失败。
为了支持IPv6地址,LB监控类型更新如下:
用户
SMTP
NNTP
LDAP
SNMP
POP3
FTP_EXTENDED
店面
怎么会出现
CITRIX_WI_EXTENDED
如果您正在创建使用这些LB监视器类型之一的自定义脚本,请确保在自定义脚本中包含对IPv6的支持。请参考/netscaler/monitors/中的相关样例脚本,了解您必须在自定义脚本中为IPv6支持所做的更改。
为了跟踪服务器的状态,监视器向配置的调度程序发送一个HTTP POST请求。这个POST请求包含服务器的IP地址和端口,以及必须运行的脚本。调度程序将脚本作为子进程运行,使用用户定义的参数(如果有)。然后,脚本向服务器发送探测。脚本将探测的状态(响应代码)发送到调度程序。调度器将响应代码转换为HTTP响应并将其发送到监视器。基于HTTP响应,监视器将服务标记为up或down。
当用户监视器探测失败时,Citrix ADC设备将错误消息记录到/var/nslog/nsumond.log文件。的CLI中显示这些详细的错误消息显示服务/服务组
命令。
下表列出了用户监视器和可能的故障原因。
用户监视器类型 | 探针失败原因 |
---|---|
SMTP | Monitor无法建立到服务器的连接。 |
NNTP | Monitor无法建立到服务器的连接。 |
缺少或无效的脚本参数,其中可能包含无效数量的参数或参数格式。 | |
Monitor无法找到NNTP组。 | |
LDAP | Monitor无法建立到服务器的连接。 |
缺少或无效的脚本参数,其中可能包含无效数量的参数或参数格式。 | |
Monitor绑定LDAP服务器失败。 | |
Monitor未能在LDAP服务器中找到目标实体的条目。 | |
FTP | 与服务器连接超时。 |
缺少或无效的脚本参数,其中可能包含无效数量的参数或参数格式。 | |
登录失败。 | |
监视器无法在服务器上找到文件。 | |
POP3 | Monitor无法建立到数据库的连接。 |
缺少或无效的脚本参数,其中可能包含无效数量的参数或参数格式。 | |
登录失败。 | |
POP3 | Monitor无法建立到数据库的连接。 |
缺少或无效的脚本参数,其中可能包含无效数量的参数或参数格式。 | |
登录失败。 | |
SQL查询准备失败。 | |
SQL查询执行失败。 | |
SNMP | Monitor无法建立到数据库的连接。 |
缺少或无效的脚本参数,其中可能包含无效数量的参数或参数格式。 | |
登录失败。 | |
Monitor创建SNMP会话失败。 | |
监视器无法找到对象标识符。 | |
监视器阈值设置大于或等于监视器的实际阈值。 | |
RDP (Windows终端服务器) | 缺少或无效的脚本参数,其中可能包含无效数量的参数或参数格式。 |
Monitor创建套接字失败。 | |
版本不匹配。 | |
监视器无法确认连接。 |
在命令行下查看日志文件的方法如下:打开BSD shell,在屏幕上显示日志文件,然后关闭BSD shell,返回CLI界面:
> shell root@ns# cat /var/nslog/nsumond.log root@ns# exit >
在Citrix ADC发布13.0之前构建52。X,显示服务/服务组
命令显示一个通用错误消息,称“探测失败”作为用户监视器探测失败的原因。
例子:
show service ftp Monitor Name: mon2 State: UNKNOWN Weight: 1 Passive: 0 Probes: 3 Failed [Total: 0 Current: 0] Last response: Failure - Probe Failed。响应时间:1071.838毫秒
来自Citrix ADC release 13.0 build 52。从X开始,显示服务/服务组
命令显示用户监视探测失败的实际原因。
例子:
show service ftp Monitor Name: mon2 State: DOWN Weight: 1 Passive: 0 Probes: 729 Failed [Total: 726 Current: 726] Last response: Failure - Login Failed。响应时间:8000.0毫秒
用户监视器还有一个超时值和探测失败的重试计数。可以将用户监视器与非用户监视器一起使用。在CPU利用率高的情况下,非用户监视器可以更快地检测到服务器故障。
如果用户监视器探测在高CPU使用率期间超时,则服务的状态保持不变。
例二:
add lb monitor USER -scriptname -resptimeout 5 seconds
请注意
对于可脚本编写的监视器,响应超时必须配置为等于预期超时+ 1秒的值。例如,如果您期望超时为4秒,则将响应超时配置为5秒。
Example2:
add lb monitor USER -scriptname -scriptargs -secureargs
请注意
Citrix建议您使用
secureargs
参数代替scriptargs
参数用于与脚本相关的任何敏感数据。