Skip Navigation
17 comments
  • Depends on how much you want to set up. For my purposes, I just check for connectivity every minute, and record true or false as a new row in a sqlite database if there is connectivity.

    This is what I use on my raspberry pi,

     py
        
    #!/usr/bin/env python3
    from datetime import datetime
    import sqlite3
    import socket
    from pathlib import Path
    
    try:
        host = socket.gethostbyname("one.one.one.one")
        s = socket.create_connection((host, 80), 2)
        s.close()
        connected = True
    except:
        connected = False
    timestamp = datetime.now().isoformat()
    
    db_file = Path(__file__).resolve().parent / 'Database.sqlite3'
    conn = sqlite3.connect(db_file)
    curs = conn.cursor()
    curs.execute('''CREATE TABLE IF NOT EXISTS checks (id INTEGER PRIMARY KEY AUTOINCREMENT, timestamp TEXT, connected INTEGER)>
    curs.execute('''INSERT INTO checks (timestamp, connected) VALUES (?, ?);''', (timestamp, 1 if connected else 0))
    conn.commit()
    conn.close()
    
      

    and I just have a crontab entry * * * * * ~/connectivity_check/check.py >/dev/null 2>&1 to run it every minute.

    Then I just check for recent disconnects via:

     sh
        
    $ sqlite3 ./connectivity_check/Database.sqlite3 'select count(*) from checks where connected = 0 order by timestamp desc;'
    
      

    Obviously, it's not as full-featured as something with configurable options or a web UI etc, but for my purposes, it does exactly what I need with absolutely zero overhead.

    • That's not exactly the solution I was looking for, but that was very instructive. Thank you.

      • Ah I see you mentioned the cuts are only a few seconds long. This wouldn't catch that very well.

        If you have a server outside of your network you could simply hold open a TCP connection and report when it breaks, but I'll admit at that point it's outside of what I've had to deal with.

  • For a while now I've had Grafana hooked up to InfluxDB and Telegraf. Using Telegraf I setup pings to ips along my route to the larger internet, major dns providers, and several large internet sites. I measure response time and packet loss. It has allowed me to cut through the Comcast BS when diagnosing problems with them. I can tell them for sure that the problem is inside their network and is the X hop from my router.

    I recently started setting up Grafana over on a different server and I'm using Prometheus instead to monitor more than just the other server I was monitoring. I haven't yet set it up with that but it looks like something similar is possible with Prometheus based on the small amount of research I've done on it.

17 comments