How to monitor internet connection for interruptions - for Mac OS X

Applications->Utilities->Console.app

Take a look in the logs there as a start.

You could also look into ntop or Little Snitch.


If you use the following:

ping -A -i 10 --apple-time 10.20.30.40 > monitor.txt

It will run continuously until stopped and ping every 10 seconds to 10.20.30.40 (change for your address)

The --apple-time means that it will log the time of each ping so you can see failures. Like so:

11:33:10.793801 64 bytes from 10.20.30.40: icmp_seq=0 ttl=58 time=27.744 ms
11:33:11.780250 64 bytes from 10.20.30.40: icmp_seq=1 ttl=58 time=9.757 ms
11:33:12.781136 64 bytes from 10.20.30.40: icmp_seq=2 ttl=58 time=10.150 ms
11:33:13.782932 64 bytes from 10.20.30.40: icmp_seq=3 ttl=58 time=11.779 ms
11:33:14.785446 64 bytes from 10.20.30.40: icmp_seq=4 ttl=58 time=11.254 ms

This app logs your connection status and even claims it is used internally by Apple.

Log your network outages, graph speeds over time, and more. Network Logger Pro can also be used to monitor web sites and produce historical graphs of their speeds, outages, and response times.

https://itunes.apple.com/us/app/network-logger-pro/id764324406?mt=12

It's $10 though :/


For my own usage, I have written a simple Bash script to check for this. It uses ping as way to monitor for timeouts, exactly as most answer suggest you do. The advantage of the script is that the output on your screen only shows the pings that timed out, rather than including successful pings as well. In addition you can pass a parameter for the duration of the monitoring, rather than the number of ping attempts. In short it's just a wrapper for the following: ping google.com -i 1 -c 60 | grep "timeout\|statistics\|transmitted\|avg" Its source and simple installation instructions are available at the below link:

https://github.com/superman-lopez/monitor-timeouts

I tested the script on macOS and Ubuntu Linux.

#!/bin/bash
#Usage: ./monitor-timeouts.sh [duration] [target]
#example: ./monitor-timeouts.sh 60 192.168.1.1
minutes=$1
target=$2
if [ $# -eq 0 ]; then
    minutes=1
    target=google.com
fi
if [ -z "$2" ]; then
    target=google.com
fi
pings=$((60 * $minutes))

system=`uname`
if [[ $system == *"Linux"* ]]; then
    extraflag="-O"
fi

echo "Start monitor for network timeouts at `date` for $minutes minute(s)."
echo "Target host: $target"
ping $target -i 1 -c $pings $extraflag | grep -i "timeout\|unreachable\|no answer\|statistics\|transmitted\|avg"
echo "End monitoring at `date`."


How about ping running in Terminal? Just find a server that's on and responds to pings. While it doesn't show the exact times, it gives you some kind of proof that something's wrong.

Edited to add: I've used it myself a while ago for a similar. While they maintained that my (aging, to be honest) wireless access point might be at fault, since they didn't find anything, "I have ping timeouts at least once every hour" helped in getting the engineer to check on stuff.