真实服务器监控器页面分为三个部分。
· 详细内容
· 上传
· 定制显示器
详细内容
细节部分是用来添加新的监视器和删除任何你不需要的监视器。你也可以通过双击现有的显示器来编辑它。
命名
你为你的显示器选择的名称。
描述
本监测器的文字描述,我们建议最好是尽可能的描述性。
监测方法
从下拉列表中选择监测方法。可用的选择是。
· HTTP 200 OK
· HTTP 200头
· HTTP 200选项
· HTTP头
· HTTP选项
· HTTP响应
· 多端口TCP监控器
· 频带外的TCP
· DICOM
· SNMP v2
· DNS服务器检查
· LDAPS
页面位置
URL 一个HTTP监视器的页面位置。这个值可以是一个相对链接,如/folder1/folder2/page1.html。你也可以使用一个绝对链接,其中网站被绑定到主机名。
必要的内容
这个值包含监控器需要检测和利用的任何内容。这里所代表的值将根据所选择的监测方法而改变。
适用于VS
这个字段会自动填入监控器所应用的虚拟服务的IP/端口。你将不能删除任何已经与虚拟服务一起使用的监控器。
用户
一些自定义监视器可以使用这个值和密码字段一起登录到Real服务器。
密码
一些自定义监视器可以使用这个值和用户字段一起登录到Real服务器。
阈值
阈值字段是一个一般的整数,用于需要阈值(如CPU水平)的自定义监控。
注意:请确保从应用服务器返回的响应不是一个 "分块 "响应。
真实服务器监控实例
上传监控
在很多情况下,用户希望创建他们自己的自定义监视器,这一部分允许他们将其上传到ADC。
自定义监视器是用PERL脚本编写的,文件扩展名为.pl。
· 给你的监视器一个名字,以便你能在监测方法列表中识别它。
· 浏览.pl文件
· 点击上传新显示器
· 你的文件将被上传到正确的位置,并将作为一个新的监测方法可见。
定制显示器
在这个部分,你可以查看上传的自定义监视器,如果不再需要,可以将其删除。
· 点击下拉框
· 选择自定义显示器的名称
· 点击删除
· 你的自定义监控器将不再在监控方法列表中可见。
创建一个自定义监控器的Perl脚本
注意:本节是为具有使用和编写Perl语言经验的人准备的。
本节向你展示了你可以在Perl脚本中使用的命令。
#Monitor-Name: 命令是存储在ADC上的Perl脚本的名称。如果你不包括这一行,那么你的脚本将不会被发现
以下是强制性的。
· #Monitor-Name
· 严格使用。
· 使用警告。
Perl脚本是在CHROOTED环境下运行的。它们经常调用另一个应用程序,如WGET或CURL。有时,这些程序需要针对特定的功能进行更新,如SNI。
动态价值
· my $host = $_[0]; - 这使用了IP Services--Real Server部分的 "地址"。
· my $port = $_[1]; - 这是使用IP服务--真实服务器部分的 "端口"。
· my $content = $_[2]; - 这使用了Library--Real Server Monitoring部分的 "Required Content "值。
· my $notes = $_[3]; - 这使用了IP服务中真实服务器部分的 "注释 "栏。
· my $page = $_[4]; - 这使用了Library--Real Server Monitor部分的 "页面位置 "值。
· my $user = $_[5]; - 这使用了Library--Real Server Monitor部分的 "User "值。
· my $password = $_[6]; - 这使用了Library--Real Server Monitor部分的 "密码 "值。
定制健康检查有两个结果
· 成功
返回值 1
向Syslog打印一条成功信息,
标记真实服务器在线(提供IN COUNT匹配)。
· 不成功
返回值 2
向Syslog打印一条 "不成功 "的消息,
标记真实服务器离线(如果OUT计数匹配)。
自定义健康监测器的例子
#Monitor-Name HTTPS_SNI
严格使用。
使用警告。
# 在可用健康检查的下拉菜单中显示上述监视器名称
# 有6个值传递给这个脚本(见下文)。
# 脚本将返回以下值
# 1是测试成功
# 2 如果测试不成功,子监控器
{
my Shost = $_[O]; ###主机IP或名称
my Sport = $_[1]; ### 主机端口
my Scontent = $_[2]; ### 要寻找的内容(在网页和HTTP头文件中)。
my Snotes = $_[3]; ### 虚拟主机名
my Spage = $_[4]; ### 主机地址之后的URL部分
my Suser = $_[5]:###域名/用户名称(可选)
my Spassword = $_[6]; ###密码(可选)。
我的$resolve。
我的$auth =;
如果 ($port)
{
$resolve = "$notes:$port:$host":
}
否则 {
$resolve = "$notes:$host";
}
如果($user && $password) {
$auth = "-u $user:$password :
}
my @lines = 'curl -s -i -retry 1 -max-time 1 -k -H "Host:$notes --resolve $resolve $auth HTTPs://${notes}${page}2>&1'; if(join(""@lines)=~/$content/)
{
print "HTTPs://$notes}${page} looking for - $content - Health check successful./n";
返回(1)。
}
否则
{
print "HTTPs://${notes}${page} looking for - $content - Health check failed.\n";
返回(2)
}
}
监控(@ARGV)。
注意:自定义监控--使用全局变量是不可能的。只能使用局部变量--在函数内定义的变量