63 lines
1.2 KiB
Plaintext
63 lines
1.2 KiB
Plaintext
|
#!/usr/bin/python3
|
||
|
|
||
|
import argparse
|
||
|
import hmac
|
||
|
import json
|
||
|
import os
|
||
|
import pprint
|
||
|
import random
|
||
|
import socket
|
||
|
import subprocess
|
||
|
import time
|
||
|
import re
|
||
|
import urllib.parse
|
||
|
|
||
|
import requests
|
||
|
|
||
|
import ltsdb_report
|
||
|
|
||
|
ap = argparse.ArgumentParser()
|
||
|
ap.add_argument("url")
|
||
|
args = ap.parse_args()
|
||
|
|
||
|
url = urllib.parse.urlparse(args.url)
|
||
|
hostname = url.hostname
|
||
|
port = url.port
|
||
|
if port is None:
|
||
|
if url.scheme == "https":
|
||
|
port = 443
|
||
|
elif url.scheme == "http":
|
||
|
port = 80
|
||
|
else:
|
||
|
raise RuntimeError("cannot determine port number")
|
||
|
|
||
|
t0 = time.time()
|
||
|
response = requests.get(args.url)
|
||
|
t1 = time.time()
|
||
|
dt = t1 - t0
|
||
|
|
||
|
report0 = []
|
||
|
report0.append({ "measure": "rtt", "unit": "s", "value": dt })
|
||
|
report0.append({ "measure": "http_status_code", "unit": "http_status_code", "value": response.status_code })
|
||
|
report0.append({ "measure": "content_length", "unit": "bytes", "value": len(response.content) })
|
||
|
|
||
|
report = [
|
||
|
{
|
||
|
"description": {
|
||
|
"hostname": hostname,
|
||
|
"port": port,
|
||
|
"url": args.url,
|
||
|
"measure": r["measure"],
|
||
|
"unit": r["unit"]
|
||
|
},
|
||
|
"data": [
|
||
|
[t0, r["value"]]
|
||
|
]
|
||
|
}
|
||
|
for r in report0
|
||
|
]
|
||
|
|
||
|
success = ltsdb_report.send_report(report)
|
||
|
exit(1 - success)
|
||
|
|