I suffer several micro cuts a day since a couple weeks. I’d like to monitor these cuts to help diagnose the issue with my ISP.

Is there any docker image that allows to do this ? I only found internet speed monitoring.

  • fraichu@lemmy.ml
    link
    fedilink
    English
    arrow-up
    1
    ·
    1 year ago

    Not sure, but I think that designing an internet measurement in a RIPE Atlas network might just fit this task? https://atlas.ripe.net/probes/ You have micro cuts, but are those only to the big name websites or to something local as well? Might help answer that, and give ISP data on where exactly are they hitting the bottleneck and what are they missing monitoring.

  • mj1003@lemm.ee
    link
    fedilink
    English
    arrow-up
    0
    ·
    1 year ago

    I’m curious to see what others use, but I’ve been using Uptime Kuma for this purpose at several different sites I manage. I run Uptime Kuma on a VPS and locally on site. I have the local instance monitoring the router, gateway, DNS, and several other internal and external devices. I also have the local instance do a “push” check-in on my VPS instance. This gives me a pretty holistic view of things.

  • planish@sh.itjust.works
    link
    fedilink
    English
    arrow-up
    0
    ·
    1 year ago

    You might be looking for a “smoke test”?

    How micro are the cuts? You might get pretty far with the “ping” tool without any fancy monitoring setup around it.

  • 133arc585@lemmy.ml
    link
    fedilink
    English
    arrow-up
    0
    arrow-down
    2
    ·
    edit-2
    1 year ago

    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,

    #!/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:

    $ 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.

    • Tiritibambix@lemmy.mlOP
      link
      fedilink
      English
      arrow-up
      1
      ·
      1 year ago

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

      • 133arc585@lemmy.ml
        link
        fedilink
        English
        arrow-up
        0
        arrow-down
        2
        ·
        edit-2
        1 year ago

        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.