[clue-tech] Script to check Apache
Chris Hirsch
chris at base2technology.com
Wed Apr 30 13:47:12 MDT 2008
David L. Anselmi wrote:
> Deepan wrote:
>> Hi All,
>> I am looking for a script to check if Apache is up
>> and running,
>
> This is what monitoring programs like big brother, nagios, etc do.
> Just get one of them, it isn't worth it to write your own script.
>
> Now all the programmers out there will write and tell you how it only
> takes 15 minutes to write a program to do this vs. days to learn how
> to configure a monitoring system.
>
> IMHO it's better to learn how to use something that's out there if you
> plan to live longer than the next week. The world doesn't need
> another half-axxxd monitor script. (Ditto for backup scripts.)
>
> But even if you want to write your own, go see how the other guys do
> it. Didn't some smart programmer say that the way to be a good
> programmer was to read other people's code? So here's your chance.
I'll second the recommendation. The package nagios-plugins can be
installed for just about every major distro. If you choose not to use
Nagios proper you can at least use the plugins.
you can then use the check_http command to check any site you want.
Below is all of the available options to you to check http, https,
certificates, etc.
check_http (nagios-plugins 1.4.9) 1.104
Copyright (c) 1999 Ethan Galstad <nagios at nagios.org>
Copyright (c) 1999-2006 Nagios Plugin Development Team
<nagiosplug-devel at lists.sourceforge.net>
This plugin tests the HTTP service on the specified host. It can test
normal (http) and secure (https) servers, follow redirects, search for
strings and regular expressions, check connection times, and report on
certificate expiration times.
Usage: check_http -H <vhost> | -I <IP-address> [-u <uri>] [-p <port>]
[-w <warn time>] [-c <critical time>] [-t <timeout>] [-L]
[-a auth] [-f <ok | warn | critcal | follow>] [-e <expect>]
[-s string] [-l] [-r <regex> | -R <case-insensitive regex>] [-P
string]
[-m <min_pg_size>:<max_pg_size>] [-4|-6] [-N] [-M <age>] [-A string]
[-k string] [-S] [-C <age>] [-T <content-type>]
NOTE: One or both of -H and -I must be specified
Options:
-h, --help
Print detailed help screen
-V, --version
Print version information
-H, --hostname=ADDRESS
Host name argument for servers using host headers (virtual host)
Append a port to include it in the header (eg: example.com:5000)
-I, --IP-address=ADDRESS
IP address or name (use numeric address if possible to bypass DNS
lookup).
-p, --port=INTEGER
Port number (default: 80)
-4, --use-ipv4
Use IPv4 connection
-6, --use-ipv6
Use IPv6 connection
-S, --ssl
Connect via SSL. Port defaults to 443
-C, --certificate=INTEGER
Minimum number of days a certificate has to be valid. Port defaults
to 443
(when this option is used the url is not checked.)
-e, --expect=STRING
String to expect in first (status) line of server response (default:
HTTP/1.)
If specified skips all other status line logic (ex: 3xx, 4xx, 5xx
processing
)
-s, --string=STRING
String to expect in the content
-u, --url=PATH
URL to GET or POST (default: /)
-P, --post=STRING
URL encoded http POST data
-N, --no-body
Don't wait for document body: stop reading after headers.
(Note that this still does an HTTP GET or POST, not a HEAD.)
-M, --max-age=SECONDS
Warn if document is more than SECONDS old. the number can also be of
the form "10m" for minutes, "10h" for hours, or "10d" for days.
-T, --content-type=STRING
specify Content-Type header media type when POSTing
-l, --linespan
Allow regex to span newlines (must precede -r or -R)
-r, --regex, --ereg=STRING
Search page for regex STRING
-R, --eregi=STRING
Search page for case-insensitive regex STRING
--invert-regex
Return CRITICAL if found, OK if not
-a, --authorization=AUTH_PAIR
Username:password on sites with basic authentication
-A, --useragent=STRING
String to be sent in http header as "User Agent"
-k, --header=STRING
Any other tags to be sent in http header. Use multiple times for
additional
headers
-L, --link
Wrap output in HTML link (obsoleted by urlize)
-f, --onredirect=<ok|warning|critical|follow>
How to handle redirected pages
-m, --pagesize=INTEGER<:INTEGER>
Minimum page size required (bytes) : Maximum page size required (bytes)
-w, --warning=DOUBLE
Response time to result in warning status (seconds)
-c, --critical=DOUBLE
Response time to result in critical status (seconds)
-t, --timeout=INTEGER
Seconds before connection times out (default: 10)
-v, --verbose
Show details for command-line debugging (Nagios may truncate output)
Notes: This plugin will attempt to open an HTTP connection with the host.
Successful connects return STATE_OK, refusals and timeouts return
STATE_CRITICA
L
other errors return STATE_UNKNOWN. Successful connects, but incorrect
reponse
messages from the host result in STATE_WARNING return values. If you are
checking a virtual server that uses 'host headers' you must supply the FQDN
(fully qualified domain name) as the [host_name] argument.
This plugin can also check whether an SSL enabled web server is able to
serve content (optionally within a specified time) or whether the X509
certificate is still valid for the specified number of days.
Examples: CHECK CONTENT: check_http -w 5 -c 10 --ssl -H www.verisign.com
When the 'www.verisign.com' server returns its content within 5 seconds,
a STATE_OK will be returned. When the server returns its content but
exceeds
the 5-second threshold, a STATE_WARNING will be returned. When an error
occurs,
a STATE_CRITICAL will be returned.
CHECK CERTIFICATE: check_http -H www.verisign.com -C 14
When the certificate of 'www.verisign.com' is valid for more than 14 days,
a STATE_OK is returned. When the certificate is still valid, but for
less than
14 days, a STATE_WARNING is returned. A STATE_CRITICAL will be returned
when
the certificate is expired.
Send email to nagios-users at lists.sourceforge.net if you have questions
regarding use of this software. To submit patches or suggest improvements,
send email to nagiosplug-devel at lists.sourceforge.net
More information about the clue-tech
mailing list