Forum Discussion
Microsoft SQL Reporting Services Monitoring
Hi,
I'm trying to create a monitor more complex than a basic "GET /" without checking the response and, essentially, just monitors if the port is open.
However, I'm failing miserably as SSRS 2008 no longer use IIS and I don't see how to implement this. Here's the two test I'm doing with curl and with a telnet. Unfortunately, it's not consistent. With a basic telnet, I'm getting a "Bad Request" response. I'm confused how to implement the monitor itself.
Note that the SSRS server I'm trying to monitor is not running a full-fledged SQL, just the Reporting Services.
[root@lb-que1-rc-03:Active] curl -v http://vmque1repsql01t/ReportServer -u gcg\\x-deltek:[masked] --anyauth* About to connect() to vmque1repsql01t port 80 (0)* Trying 10.252.8.77... connected* Connected to vmque1repsql01t (10.252.8.77) port 80 (0)> GET /ReportServer HTTP/1.1> User-Agent: curl/7.19.7 (i686-redhat-linux-gnu) libcurl/7.19.7 OpenSSL/0.9.8y zlib/1.2.3 libidn/0.6.5> Host: vmque1repsql01t> Accept: */*> < HTTP/1.1 401 Unauthorized< Content-Length: 0< WWW-Authenticate: Negotiate< WWW-Authenticate: NTLM< Date: Wed, 09 Oct 2013 18:19:08 GMT< * Connection 0 to host vmque1repsql01t left intact* Issue another request to this URL: 'http://vmque1repsql01t/ReportServer'* Re-using existing connection! (0) with host vmque1repsql01t* Connected to vmque1repsql01t (10.252.8.77) port 80 (0)* Server auth using NTLM with user 'gcg\x-deltek'> GET /ReportServer HTTP/1.1> Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=> User-Agent: curl/7.19.7 (i686-redhat-linux-gnu) libcurl/7.19.7 OpenSSL/0.9.8y zlib/1.2.3 libidn/0.6.5> Host: vmque1repsql01t> Accept: */*> < HTTP/1.1 401 Unauthorized< Content-Length: 0< WWW-Authenticate: NTLM TlRMTVNTUAACAAAAAwADADgAAAAGgokCbUO7oUECWnAAAAAAAAAAAJ4AngA7AAAABgGxHQAAAA9HQ0cCAAYARwBDAEcAAQAeAFYATQBRAFUARQAxAFIARQBQAFMAUQBMADAAMQBUAAQAEgBnAGMAZwAuAGwAbwBjAGEAbAADADIAVgBNAFEAVQBFADEAUgBFAFAAUwBRAEwAMAAxAFQALgBnAGMAZwAuAGwAbwBjAGEAbAAFABIAZwBjAGcALgBsAG8AYwBhAGwABwAIAJGduAscxc4BAAAAAA==< Date: Wed, 09 Oct 2013 18:19:08 GMT< * Connection 0 to host vmque1repsql01t left intact* Issue another request to this URL: 'http://vmque1repsql01t/ReportServer'* Re-using existing connection! (0) with host vmque1repsql01t* Connected to vmque1repsql01t (10.252.8.77) port 80 (0)* Server auth using NTLM with user 'gcg\x-deltek'> GET /ReportServer HTTP/1.1> Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAMAAwBwAAAACAAIAHMAAAANAA0AewAAAAAAAAAAAAAABoKJAjNgxXw0uMejAAAAAAAAAAAAAAAAAAAAADhBSEbbPQkdI8IkZUnhlhDovqfYcBOPd2djZ3gtZGVsdGVrbGItcXVlMS1yYy0wMw==> User-Agent: curl/7.19.7 (i686-redhat-linux-gnu) libcurl/7.19.7 OpenSSL/0.9.8y zlib/1.2.3 libidn/0.6.5> Host: vmque1repsql01t> Accept: */*> < HTTP/1.1 200 OK< Cache-Control: private< Content-Length: 457< Content-Type: text/html; charset=utf-8< Server: Microsoft-HTTPAPI/2.0< X-AspNet-Version: 2.0.50727< Date: Wed, 09 Oct 2013 18:19:08 GMT< vmque1repsql01t/ReportServer - /
vmque1repsql01t/ReportServer - /
* * *
Tuesday, February 09, 2010 6:23 PM <dir> [Vision](?%2fVision&rs:Command=ListChildren)
* * *
Microsoft SQL Server Reporting Services Version 10.50.2769.0
* Connection 0 to host vmque1repsql01t left intact
* Closing connection 0
[root@lb-que1-rc-03:Active] cotelnet vmque1repsql01t 80
Trying 10.252.8.77...
Connected to vmque1repsql01t.
Escape character is '^]'.
GET /ReportServer HTTP/1.1Host: vmque1repsql01t\r\nConnection: close\r\n\r\n
HTTP/1.1 400 Bad Request
Content-Type: text/html; charset=us-ascii
Server: Microsoft-HTTPAPI/2.0
Date: Wed, 09 Oct 2013 18:19:23 GMT
Connection: close
Content-Length: 311
Bad Request
Bad Request
* * *
HTTP Error 400. The request is badly formed.
Connection closed by foreign host.
3 Replies
- Cory_50405
Noctilucent
If all you want to do is check to see if the server responds on a certain port, just use the 'tcp' keepalive. It'll just do a three-way handshake on the TCP port you specify and mark the node as up if the handshake completes.
- Martin_Thomas_1
Nimbostratus
Sorry, I re-wrote my statement. I'm actually looking at doing more than this basic port-open monitoring. We've had recent issue with a pool of SSRS servers that have a tendency to still respond on port 80 but otherwise not functional. - Cory_50405
Noctilucent
Since it's an HTTP server, performing an HTTP get and parsing the result to determine health would be the easiest way. Why do you not want to pursue doing it this way? Another way would be to use an external monitor that logs into your servers using SSH and runs a local script. The local script would check for a running service, and return an exit code depending on the status of that service. We are performing this kind of health check in our environment. It would require creating a script on your servers though, and creating an external monitor on the LTM. I could provide you an example external monitor for this SSH task if you want to go that route.
Recent Discussions
Related Content
* Getting Started on DevCentral
* Community Guidelines
* Community Terms of Use / EULA
* Community Ranking Explained
* Community Resources
* Contact the DevCentral Team
* Update MFA on account.f5.com