import sys
from datetime import datetime, timedelta
import json
import requests

if len(sys.argv) < 2:
    print("Usage: python script_name.py <PROMETHEUS_URL>")
    sys.exit(1)

PROMETHEUS_URL = sys.argv[1]

QUERY = "sum(tcp_retransmissions_total) by (src_ip, dst_ip)"
LOOKBACK_DURATION = 120 
FILENAME = 'tcp_retransmissions.jsonl'

end_time = datetime.now()
start_time = end_time - timedelta(minutes=LOOKBACK_DURATION)

params = {
    "query": QUERY,
    "start": start_time.strftime("%Y-%m-%dT%H:%M:%SZ"),
    "end": end_time.strftime("%Y-%m-%dT%H:%M:%SZ"),
    "step": "30s"
}

try:
    response = requests.get(PROMETHEUS_URL, params=params)
    response.raise_for_status()
    
    data = response.json()
    results = data.get("data", {}).get("result", [])

    if not results:
        print("No data returned for the query.")
        sys.exit()

    with open(FILENAME, 'w') as f:
        for entry in results:
            f.write(json.dumps(entry) + '\n')
            
    print(f"Metrics saved to JSONL file: {FILENAME}.")

except requests.exceptions.HTTPError as http_err:
    print(f"HTTP error occurred: {http_err}\nResponse text: {response.text}")
except json.decoder.JSONDecodeError:
    print(f"Error: Response was not valid JSON.\nRaw Response: {response.text}")
except Exception as err:
    print(f"An unexpected error occurred: {err}")
