Url
URL checks if one or more Url can
- be contacted before a timeout,
- provides an http response code of 200 (OK)
- contains a specific pattern / string in the body of the response.
It can verify TLS/SSL certificates. It can follow redirets. It reports URL response time. It can pass a Host header to query specfic virtual-host.
This check can be used from a remote server to monitor various URL and Webservices. It can also be configured locally on a single Webserver to monitor a local single instance. If the provided URL is an application status (e.g. php-fpm /status with pattern "pong"), you can have a basic (or not so basic) application monitor.
Configure
# conf.yml
url:
www.cavaliba.com:
url : https://www.cavaliba.com/
[allow_redirects] : yes ; default = no
[ssl_verify] : yes ; default = no
[host] : optionnal hostname header (Host: xxx) ; default to None
[timeout] : float (sec) ; default = 4 ; e.g. : 5.2
[http_proxy] : http://[login[:pass]@proxyhost:port ; use noenv value to skip os/env
[https_proxy] : https://[login[:pass]]@proxyhost:port ; default to http_proxy
[username] : login to be provided to basic/digest auth by remote webserver
[password] : password to be provided to basic/digest auth by remote webserver
[http_code] : expected code ; default 200
[pattern] : pattern expected in response (default none)
[pattern_reject] : pattern to NOT find in response (default none)
pattern:
default: non
a string / regexp (python re.) which MUST be present in the response body
new 2.3 : pattern is also looked for in response header as a test list of `key: value`
pattern_reject:
new: 2.0
default: none
a string / regexp (python re.) which MUST NOT be present in the response body
useful to check for no error message in a status page
new 2.3 : pattern is also looked for in response header as a test list of `key: value`
allow_redirects:
CMT will follow HTTP redirects
ssl_verify:
CMT will check for a valid TLS certificate (CA, validity, host)
host:
add a Host: header to specify which target/virtualhost to query
timeout:
socket timeout value (no bytes lapse) ; default : 4 secs. Float accepted
http_proxy:
default : use os/env wide settings.
if defined, use specified proxy for http requests.
http://[login[:pass]]@proxyhost:port
use noenv value to skip os/env (direct access)
https_proxy
default : http_proxy
if defined, use specified proxy for https (TLS/SSL) requests.
https://[login[:pass]]@proxyhost:port
username, password
new in 2.0
default : no authentication sent to remote server
http_code
new in 2.0
default : 200
expected http_code in response
useful to check non-200 responses like redirects 30X, forbidden 40X, webservice specials 20X, etc.
Alerts
This check sends an alert and adds alert fields if an URL isn't responding properly.
Alert message:
- no response to query (timeout / no response)
- bad http code response
- expected pattern not found in response body (or response headers since v2.3)
Output to Metrology
This module sends one message for each URL, with the following fields:
cmt_check: url
+
cmt_url: url string
cmt_url_name: url name
cmt_url_status: ok/nok
cmt_url_msec: int [response time in millisecond if available]
CLI usage and output
$ ./cmt.py urls
Check url
cmt_url_name www.cavaliba.com ()
cmt_url https://www.cavaliba.com/ ()
cmt_url_msec 96 ms ()
OK www.cavaliba.com - https://www.cavaliba.com/ [Host: ] - http=200 - 96 ms ; pattern OK
Check url
cmt_url_name www_non_existing ()
cmt_url http://www.nonexisting/ ()
NOK www_non_existing - http://www.nonexisting/ [Host: ] - no response to query
Check url
cmt_url_name demo.cavaliba.com ()
cmt_url http://demo.cavaliba.com/ ()
cmt_url_msec 187 ms ()
OK demo.cavaliba.com - http://demo.cavaliba.com/ [Host: ] - http=200 - 187 ms ; pattern OK