概述
Netwatch监控网络中的主机状态。监控通过以下探针类型完成。
ICMP - ping到一个指定的IP地址或主机,有一个选项可以调整阈值
Simple - 使用ping,不使用高级指标
TCP conn,测试TCP连接
HTTP GET,针对正在监控的服务器发出请求
对于Netwatch表中的每个条目,可以指定一个IP地址、ping间隔和控制台脚本。Netwatch的主要优点是它能够在主机状态变化时发出任意的控制台命令。
自7.4以来,Netwatch的功能得到了扩展,以前的版本只支持简单的ICMP探测。在升级到新版本时,旧的Netwatch条目将保持不变,报告探测类型为 "Simple",保留相同的功能。
属性
Sub-menu: /tool/netwatch
| 属性 | 说明 |
|---|---|
| host (Default:"") | 要探测的服务器的IP地址。格式: - ipv4 - ipv4@vrf - ipv6 - ipv6@vrf ipv6@vrf - ipv6-linklocal%interface |
| type (icmp | tcp-conn|http-get|simple; Default:: simple) | 探针类型: - icmp - (ping-style)带有统计信息的ICMP请求,回应。 - tcp-conn - 测试由IP和端口指定的服务器的TCP连接(3-way handshake)。 - http-get - HTTP获取请求并测试正确的回复 - simple - 简化的ICMP探针,选项比 "ICMP "类型少,用于向后兼容旧的Netwatch版本 |
| interval (Default:10s) | 探针测试时间间隔 |
| timeout (Default: 3s) | 等待响应的最大时间限制。 |
| start-delay (Default: 3s) | 启动探针前的等待时间(在添加、启用或系统启动时)。 |
| up-script (Default:"") | 探针状态改变 "fail"-->"OK"时要执行的脚本。 |
| down-script (Default:"") | 在探测状态变化为 "OK"-->"fail"时执行的脚本。 |
| test-script (Default:"") | 在每次探针测试结束时执行的脚本 |
Netwatch 以*sys用户身份执行脚本,因此 Netwatch 脚本中任何定义的全局变量都不会被调度员或其他用户读取。
Netwatch限制 读、写、测试、重启 脚本策略。如果脚本的所有者没有足够的权限来执行脚本中的某个命令,那该脚本不会执行。如果脚本的策略大于 read,write,test,reboot - 脚本也不会执行,请确保脚本不超过上述策略。
可以在 /system/scripts 菜单下禁用RouterOS脚本的权限检查。当Netwatch没有足够的权限来执行脚本时很有用,尽管这降低了整体的安全性。建议给脚本分配适当的权限。
特定类型的选项
所有特定于一种探针类型的配置选项(如icmp的包间隔)对于其他探针类型(tcp-conn, http-get)都被忽略。
ICMP探测选项
| 属性 | 说明 |
|---|---|
| packet-interval (Default: 50ms) | ICMP请求包发送的间隔时间 |
| packet-count (Default: 10) | 在一次测试中要发送的ICMP数据包的总计数 |
| packet-size (Default: 54 (IPv4) 或 54 (IPv6)) | IP ICMP数据包的总大小 |
| thr-rtt-max (Default : 1s) | rtt-max的失败阈值(高于thr-max的值为探测失败) |
| thr-rtt-avg (Default: 100ms) | rtt-avg的失败阈值 |
| thr-rtt-stdev (Default: 250ms) | rtt-stdev的失败阈值 |
| thr-rtt-jitter (Default: 1s) | rtt-jitter的失败阈值 |
| thr-loss-percent (Default: 85.0%) | loss-percent的失败阈值 |
| thr-loss-count (Default: 4294967295) 4294967295(max)) | 损失数的失败阈值 |
TCP-CONNECT/HTTP-GET 探针选项
| 属性 | 说明 |
|---|---|
| port (Default: 80) | TCP端口(用于tcp-conn和http-get探测) |
TCP-CONNECT 合格标准
| 属性 | 说明 |
|---|---|
| thr-tcp-conn-time (Default: 1s) | tcp-connect-time的失败阈值 |
HTTP-GET探针的通过/失败标准
| 属性 | 说明 |
|---|---|
| thr-http-time (Default: 10s) | http-resp-time的失败阈值 |
| http-code-min (Default: 100) | HTTP响应代码的确定/失败标准。 |
| http-code-max (Default: 299) | 在[http-code-min , http-code-max]范围内的响应是探测通过;超出范围是探测失败。参见 mozilla-http-status 或 rfc7231 |
探针统计/变量
可以查看统计数据,并在脚本中使用这些变量,记住,包含"-"的变量必须这样写,例如,"one-tests "将是$"one-tests"
通用的
| 属性 | 说明 |
|---|---|
| name | 用户为Netwatch添加的名称 |
| comment | 用户添加的注释 |
| host | 被探测的主机 |
| type | 探测类型 |
| interval | 间隔时间 |
| timeout | 超时 |
| since | 最后一次发生状态变化的时间 |
| status | 探针的当前状态 |
| don-tests | 到目前为止已经完成的探针测试的总计数 |
| failed-tests | 探针测试失败的次数 |
ICMP
| 属性 | 说明 |
|---|---|
| sent-count | 发出的ICMP数据包 |
| response-count | 收到匹配的/有效的ICMP数据包响应 |
| loss-count | 丢失数据包的数量 |
| loss-percent | 丢失数据包数量的百分比 |
| rtt-avg | rtt(数据包往返时间)的平均值 |
| rtt-min | 最小rtt |
| rtt-max | 最大rtt |
| rtt-jitter | 抖动(=最大-最小)的RTT |
| rtt-stdev | Rtt的标准偏差 |
TCP
| 属性 | 说明 |
|---|---|
| tcp-connect-time | 建立TCP连接所需的时间 |
HTTP
| 属性 | 说明 |
|---|---|
| http-status-code | HTTP响应状态代码(200 OK, 404 Not Found, etc.)。见 mozilla-http-status 或 RFC7231 |
日志
探针OK/Fail状态改变时:
探针识别信息和OK->Fail或Fail->OK打印到info级别。
详细的探针统计信息和配置打印到debug级别。
状态
命令 /tool/netwatch/print 将显示Netwatch的当前状态和 只读 属性。
since - 表示主机的某个状态上次改变的时间。
status - 显示主机当前状态。
host - 被监控的地址
快速实例
这里将使用一个简单的到IP为8.8.8.8主机的ICMP检查。
[admin@MikroTik] > /tool/netwatch add host=8.8.8.8 interval=30s up-script=":log info \"Ping to 8.8.8.8 successful\""
之后在日志部分可以看到Netwatch执行的脚本。
[admin@MikroTik] > log print where message~"8.8.8.8"
08:03:26 script,info Ping to 8.8.8.8 successful