1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
|
#!@@GOODSH@@
: << =cut
=head1 NAME
http_loadtime - Plugin to graph the HTTP response times of specific pages
=head1 CONFIGURATION
The following environment variables are used by this plugin
target - comma separated URL(s) to fetch (default: "http://localhost/")
requisites - if true also loads images and stylesheets referenced in the page as well, see wget --page-requisites
(default: "false")
cookies - if true saves and loads cookies to and from munin plugin state directory, this can be used for services that
show session statistics to only use one session per http_loadtime uri configuration (default: "false")
example:
[http_loadtime]
env.target http://localhost.de,http://localhost.de/some-site.html
env.requisites true
env.cookies true
env.warning 5
env.critical 30
Do not enable the download of page requisites (env.requisites) for https
sites since wget needs incredible long to perform this on big sites...
=head1 AUTHORS
Unknown authors
(2013) Axel Huebl
(2021) Andreas Perhab <a.perhab@wtioit.at>
=head1 LICENSE
GPLv2
=head1 MAGIC MARKERS
#%# family=auto
#%# capabilities=autoconf
=cut
. "$MUNIN_LIBDIR/plugins/plugin.sh"
target=${target:-"http://localhost/"}
requisites=${requisites:-"false"}
cookies=${cookies:-"false"}
urls=$(echo "$target" | tr ',' '\n')
request_url() {
wget --user-agent "Munin - http_loadtime" --no-cache --quiet --output-document=/dev/null "$@" 2>/dev/null
}
escapeUri() {
echo "$1" | sed 's/[:/.-]/_/g'
}
request_url_with_args_from_env() {
local uri
uri=$1
if [ "$requisites" = "true" ]; then
set -- --page-requisites "$@"
fi
if [ "$cookies" = "true" ]; then
local cookies_file
cookies_file="$MUNIN_PLUGSTATE/http_loadtime/$(escapeUri "$uri").cookies.txt"
mkdir -p "$(dirname "$cookies_file")"
set -- --load-cookies "$cookies_file" --save-cookies "$cookies_file" --keep-session-cookies "$@"
fi
request_url "$@"
}
if [ "$1" = "autoconf" ]; then
result="yes"
command -v tr >/dev/null 2>&1 || result=1
command -v wget >/dev/null 2>&1 || result=1
if [ "$result" != "yes" ]; then
echo "no (programs wget and tr required)"
exit 0
fi
# check if urls respond
#
for uri in $urls
do
if ! request_url --spider "$uri"; then
echo "no (Cannot run wget against \"$uri\")"
exit 0
fi
done
echo yes
exit 0
fi
if [ "$1" = "config" ]; then
echo "graph_title HTTP loadtime of a page"
echo "graph_args --base 1000 -l 0"
echo "graph_vlabel Load time in seconds"
echo "graph_category network"
echo "graph_info This graph shows the load time in seconds"
for uri in $urls
do
uri_short=$(echo "$uri" | cut -c 1-30)
if [ "$uri_short" != "$uri" ]; then uri_short="${uri_short}..."; fi
echo "$(escapeUri "$uri").label $uri_short"
echo "$(escapeUri "$uri").info page load time"
print_thresholds "$(escapeUri "$uri")"
done
exit 0
fi
for uri in $urls
do
start=$(date +%s.%N)
request_url_with_args_from_env "$uri"
loadtime=$(echo "$start" "$(date +%s.%N)" | awk '{ print($2 - $1); }')
echo "$(escapeUri "$uri").value $loadtime"
done
|