Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

This document shows how to use a library of bash scripts to monitor a metadata query (MDQ) server.

...

  1. Skim some related documentation on GitHub: Monitoring an HTTP Resource

  2. Install the bash library (see the bash library project page for details)

  3. Configure the bash environment (see the bash library project page for details)

Testing a Single Entity

...

The previous command outputs the following JSON file on stdout:

Default output
Expand
titleDefault output
Code Block
languagejs
[
 {
   "requestInstant": "2018-04-12T21:20:52Z"
   ,
   "friendlyDate": "April 12, 2018"
   ,
   "curlExitCode": "0"
   ,
   "responseCode": "200"
   ,
   "sizeDownload": 9160
   ,
   "speedDownload": 42670.000
   ,
   "timeTotal": 0.214669
 }
]

Limit the size of the JSON array to one object but output all available timing data:

...

The previous command outputs the following JSON file on stdout:

All output
Expand
titleAll output
Code Block
languagejs
[
 {
   "requestInstant": "2018-04-12T21:24:06Z"
   ,
   "friendlyDate": "April 12, 2018"
   ,
   "curlExitCode": "0"
   ,
   "responseCode": "200"
   ,
   "sizeDownload": 9160
   ,
   "speedDownload": 93969.000
   ,
   "timeNamelookup": 0.005276
   ,
   "timeConnect": 0.050664
   ,
   "timeAppconnect": 0.000000
   ,
   "timePretransfer": 0.050761
   ,
   "timeStarttransfer": 0.096721
   ,
   "timeTotal": 0.097478
 }
]

For more information, consult the script’s inline help message:

...

Set up a cron job for the previous test.

Cron job
Expand
titleCron job
Code Block
languagebash
#!/bin/bash
#######################################################################
#
# This script is intended to be used as a cron job.
#
# Configure the following environment variables:
# (also export TMPDIR if it doesn’t already exist)
#
# export BIN_DIR="/path/to/bin/"
# export LIB_DIR="/path/to/lib/"
# export CACHE_DIR="/path/to/http_cache/"
# export LOG_FILE="/path/to/bash_log.txt"
#
# Configure the following local variables:
#
# entityID=
# mdq_base_url=
# out_dir=
#
#######################################################################

# the name of this script
script_name=${0##*/}

# determine the HTTP location
location=$( $BIN_DIR/mdq_url.bash $mdq_base_url $entityID )
status_code=$?
if [ $status_code -ne 0 ]; then
	echo "ERROR: $script_name: unable to compute location" >&2
	exit 2
fi

# adjust the command line with options -n and -a as desired
$BIN_DIR/http_response_stats.bash -d $out_dir $location
status_code=$?
if [ $status_code -ne 0 ]; then
	echo "ERROR: $script_name: unable to monitor location: $location" >&2
	exit 3
fi

exit 0