可以下载附件查看 【问题需求】 客户内网有web服务 192.200.200.162 ,客户不想通过监视80端口判断节点是否在线,需要通过服务页面,服务器故障返回错误页面的时候不调度到这个节点,此种情况比如应用系统挂了但是端口还是通的就不能用简单的connect监视器探测端口,需要监视应用是否正常。
【实现方式】 通过配置节点监视器监视服务页面通过返回的http状态码判断服务是否可用。比如返回 200 OK 302 就认为可用返回404之类的页面不存在的就认为服务异常;两种方式:通过 connect监视器跟使用http监视器
方式1:通过 connect监视器,
Httpwatch抓包或者用wireshark抓取pc正常访问服务器的过程(httpwatch工具可以网上下载就是一个分析web的工具)看,get /dedecms/的时候返回200 OK,内容如下:
GET /dedecms/ HTTP/1.1 Accept: text/html, application/xhtml+xml, */* User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0) Accept-Encoding: gzip, deflate Host: 192.200.200.162
那么如何配置connect监视器呢,把上面的内容复制粘贴到发送内容,后面连接敲入两个回车 1、新建connect 类型监视器 file:///C:/Users/ADMINI~1/AppData/Local/Temp/ksohtml/wps9BE6.tmp.jpg
2、配置附加配置,前面的不加详述:发送内容填写前面httpwatch抓取的内容
填写完之后,要在后面连续敲入两个回车符!!!!!!!!是Connection头域的结束符和整个HTTP请求的结束符
在AD抓节点监视器的包看,服务器返回200 OK, 但是我设置的接受内容是302,所以节点应该是处于离线状态:
3、抓取设备跟服务器之间的包看,发出去的包的get的数据比较多,就是附加内容里面的,
如下图的精简构造
这种其实只是构造了一部分,对于有些服务器而已这么子构造数据时可以返回200 OK的,但是有些服务器就不行,必须构造完整的包,比如下图所示的:只写了一部分,服务器返回的数据包根本没有200 OK。
Get的数据写全就返回正常的数据了如下图::
方法2:直接通过http监视器,原理跟connect监视器类似, 1、新建http类型监视器:
2、配置监视的内容基本配置一眼能看懂,主要讲附加配置:具体格式可以把鼠标放到里面右边有提示 这个配置的是get /dedcms/ 是浏览器的URI 抓包看,数据包发出去比较简单 只是发了 GET /dedecms/ HTTP/1.1但是服务回了 200 OK,所以节点在线
通过以上情况看通过http监视器也可以实现,但是可配置的参数没有connect监视器的丰富,具体用哪种看实际情况。 |