- Repository
- Munin (2.0)
- Last change
- 2021-11-19
- Graph Categories
- Family
- auto
- Capabilities
- Language
- Shell
- License
- GPL-2.0-only
- Authors
http_loadtime
Name
http_loadtime - Plugin to graph the HTTP response times of specific pages
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...
Authors
Unknown authors (2013) Axel Huebl (2021) Andreas Perhab a.perhab@wtioit.at
License
GPLv2
Magic Markers
#%# family=auto
#%# capabilities=autoconf
#!@@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