Dokumenten Download Geschwindigkeit prüfen

Hi Zusammen,

hab mal ne Frage für die Runde
Ich möchte gerne die Geschwindigkeit unseres OpenText Archive prüfen.
Ich habe ein Dokument was ich downloaden möchte und die Geschwindigkeit ermitteln.
im Browser sieht die URL so aus:
https://beispiel-archive.com/sap/bc/bsp/sap/ZDCVAW_VIEW_DOC/ViewDocFile.htm?pa_document_key=MHK000000000000001000012761601000&pa_file_name=AH00590%20Admin-HB%20CMK.doc

Anmeldung über UserName & PW

Wie kann ich das im CMK umsetzen ???

mit curl / wget kann ich die Datei schon mal laden

Gruß Bernd

So aus dem Blauen raus würde ich ein kleines Script nutzen welches einfach die Zeit misst welche der Curl Aufruf braucht und dies entweder als Local Check auf dem CMK Server mit laufen lassen oder wenns komplizierter sein soll als aktiven Check einbinden.

So ist auch meine Idee nur wie …

das ist der Output von CURL

% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 25 0 0 0 0 0 0 --:–:-- --:–:-- --:–:-- 0
0 3802 0 0 0 0 0 0 --:–:-- --:–:-- --:–:-- 0
100 95744 100 95744 0 0 318k 0 --:–:-- --:–:-- --:–:-- 318k

Das hier schaut gut aus

schau mir auch gerade das hier an

1 Like

Wenn das ordentlich tut wäre dies die einfachste Lösung.

Hallo,
wir haben uns da auch was selber gebaut und nutzen einen ähnliche Variante um unsere Docker-Registry auf Verfügbarkeit und Funktion zu testen.
Ich lasse das jetzt aber zeitnah auf Robot-MK umstellen um die Usersicht besser abzubilden und alle Einzelschritte direkt mit zu prüfen.
Also Webseite aufrufen, anmelden, durch das System hangeln und dann die eigentliche Aktion ausführen.
So bekomme ich mit wenn das Systeme anfängt “komisch” zu werden.
Gruß

hier die “dirty” Variante als Classic Check

Code

`#!/usr/bin/bash

#variables
user=
password=
url="/"
times=1
timeout=10
warning=500
critical=2000

#check which threshold was reached
function checkTime() {
if [ $1 -gt $critical ]; then
echo -n “CRITICAL”
elif [ $1 -gt $warning ]; then
echo -n “WARNING”
else
echo -n “OK”
fi
}

#return code value
function getStatus() {
if [ $1 -gt $critical ]; then
retcode=2
elif [ $1 -gt $warning ]; then
retcode=1
else
retcode=0
fi
}

#get options
while getopts “w:c:u:U:P” opt; do
case $opt in
w)
warning=$OPTARG
;;
c)
critical=$OPTARG
;;
u)
url=$OPTARG
;;
U)
user=$OPTARG
;;
P)
password=$OPTARG
;;
*)
usage
exit 3
;;
esac
done

start=$(echo $(($(date +%s%N)/1000000)))
wget -O/dev/null -q --user=$user --password=$password $url
status=$?
end=$(echo $(($(date +%s%N)/1000000)))

#decide output by return code
if [ $status -eq 0 ] ; then
echo " $(checkTime $((end - start))): $((end - start))ms - ${url}|time=$((end - start))ms;${warning};${critical};0;"
getStatus $((end - start))
exit $retcode
else
case $status in
1)
echo " CRITICAL: Generic error code ($status) - ${url}"
;;
2)
echo " CRITICAL: Parse error ($status) - ${url}"
;;
3)
echo " CRITICAL: File I/O error ($status) - ${url}"
;;
4)
echo " CRITICAL: Network failure ($status) - ${url}"
;;
5)
echo " CRITICAL: SSL verification failure ($status) - ${url}"
;;
6)
echo " CRITICAL: Authentication failure ($status) - ${url}"
;;
7)
echo " CRITICAL: Protocol errors ($status) - ${url}"
;;
8)
echo " CRITICAL: Server issued an error response ($status) - ${url}"
;;
*)
echo " UNKNOWN: $status - ${url}"
exit 3
;;
esac
exit 2
fi`

@rprengel & @BH2005 gibt jettzt auch ein cURL plugin für die Bakery :slight_smile:

2 Likes

Cool,
schon gezogen und in der Testumgebung eingebaut.
Wenn Zeit ist werde ich es testen.
Danke

besser noch auf den letzten Stand updaten, da ist noch einiges “work in progress”, siehe Changelog :wink:

1 Like

supi … ganz lieben Dank

Hallo,
sieht soweit gut aus aber 2 Meldungen und ein Vorschlag.
Ein Schalter no-proxy wäre hilfreich um einen per default aktiven proxy zu umgehen.
Gruß
Ralf

[root@pccc03 plugins]# ./curl.sh
<<curl:sep(0)>>
{“testfile_do_not_delete”:{“url”:“http://192.168.a.b/pub/testfile_do_not_delete","data”:curl: unknown --write-out variable: ‘http_version’
curl: unknown --write-out variable: ‘scheme’
{ “ssl_verify_result”:“0”, “http_return_code”:“200”, “time_namelookup”:“0,000”, “time_connect”:“0,001”, “time_appconnect”:“0,000”, “time_pretransfer”:“0,001”, “time_redirect”:“0,000”, “time_starttransfer”:“0,032”, “time_total”:“0,032”, “http_connect”:“000”, “http_version”:"", “num_connects”:“1”, “num_redirects”:“0”, “redirect_url”:"", “remote_ip”:“192.168.246.232”, “scheme”:"", “size_download”:“35”, “size_header”:“262”, “speed_download”:“1103,000”},“error_level”:“0”,“curl_options”:"-q -w @/usr/lib/check_mk_agent/plugins/curl.format -o /dev/null -s "}}
[root@pccc03 plugins]#

welche curl version nutzt du?

sollte machbar sein :wink:

[root@pccc03 plugins]# curl -V
curl 7.29.0 (x86_64-redhat-linux-gnu) libcurl/7.29.0 NSS/3.53.1 zlib/1.2.7 libidn/1.28 libssh2/1.8.0
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp scp sftp smtp smtps telnet tftp
Features: AsynchDNS GSS-Negotiate IDN IPv6 Largefile NTLM NTLM_WB SSL libz unix-sockets
[root@pccc03 plugins]#

Noch ein Vorschlag:
Dem check per default auf 3600 Sekunden setzten.
Könnte sein das man sich sonst mit einer X GB Testdatei ins Bein schießt.
Gruß

ist zu alt, die sachen sind erst ab 7.50 drin, habe aber gerade einen workaround gefunden…

plugin Async/chached ist geplant, Timout option für curl selbst?

Centos 7 wird gerade so richtig morsch.
Die Liste der Pakete die nicht mehr aktuell sind wird länger und länger.
Zum Timeout:
Da wo das üblicherweise mit gegeben wird. hat chechmk dazu einen Standard?
Gruß

kannst du mals testen ob das bei dir tut?

curl thl-cmk.hopto.org -o /dev/null -w %{json}

sollte hoffentlich so aussehen

curl thl-cmk.hopto.org -o /dev/null -w %{json}
{"content_type":"text/html; charset=iso-8859-1","errormsg":null,"exitcode":0,"filename_effective":"NUL","ftp_entry_path":null,"http_code":302,"http_connect":0,"http_version":"1.1","local_ip":"xxx.xxx.xxx.xxx","local_port":62993,"method":"GET","num_connects":1,"num_headers":9,"num_redirects":0,"proxy_ssl_verify_result":0,"redirect_url":"https://thl-cmk.hopto.org/","referer":null,"remote_ip":"yyy.yyy.yyy.yyy","remote_port":80,"response_code":302,"scheme":"HTTP","size_download":210,"size_header":493,"size_request":81,"size_upload":0,"speed_download":12984,"speed_upload":0,"ssl_verify_result":0,"time_appconnect":0.000000,"time_connect":0.015626,"time_namelookup":0.015035,"time_pretransfer":0.015689,"time_redirect":0.000000,"time_starttransfer":0.016070,"time_total":0.016173,"url":"thl-cmk.hopto.org","url_effective":"http://thl-cmk.hopto.org/","urlnum":0,"curl_version":"libcurl/7.81.0 OpenSSL/3.0.1 (Schannel) zlib/1.2.11 brotli/1.0.9 libidn2/2.3.2 libssh2/1.10.0 nghttp2/1.46.0 libgsasl/1.10.0"}

[root@pccc03 tmp]# curl thl-cmk.hopto.org -o /dev/null -w %{json}
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 210 100 210 0 0 1788 0 --:–:-- --:–:-- --:–:-- 1794
curl: unknown --write-out variable: ‘json’
[root@pccc03 tmp]#