Forum Discussion

Martin_Thomas_1's avatar
Martin_Thomas_1
Icon for Nimbostratus rankNimbostratus
Oct 09, 2013

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

  • 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's avatar
      Martin_Thomas_1
      Icon for Nimbostratus rankNimbostratus
      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's avatar
      Cory_50405
      Icon for Noctilucent rankNoctilucent
      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.