So I started troubleshooting the issue.
Step 1: I went to http://speedtest.googlefiber.net/ and ran the test on a wired computer. The results were exactly 95Mbps down and up. There's something special about that 95Mbps speed, it's almost exactly the maximum speed that's possible over 100Mb/s Ethernet (extra ~5Mbps is overhead.)
Step 2: So we have a link somewhere between my wired test computer and Google Fiber that's auto-negotiated to 100Mb/s instead of 1000Mb/s. The question is where is the bad link? Let start with the Fiber Jack and work our way back to my test computer. I go to My Fiber and select the Fiber Jack to see what speeds have been auto-negotiated.
That's strange, the Ethernet connection between the Fiber Jack and my router is only 100Mb/s. That's probably the issue!
At this point, most people can resolve this problem by simply replacing the cable between the Fiber Jack and the Network Box with a new Cat5e or better network cable.
Unfortunately for me, my Fiber Jack and router are quite a distance away from each other and I only have one cable that runs between them. I'll have to figure out where the fault is in the cable and fix it.
Step 3: I disconnected and reconnected the cable hoping it would come back up at 1000Mb/s...and it does! For a little while at least. After a few days I notice websites are slow to load and programs are complaining about my Internet connection dropping. Since I have a 3rd party router (Ubiquiti EdgeRouter) I SSHed to it to see if I can get any more information about what's happening.
I see where the link to my Fiber Jack negotiated to 100Mb/s:
Dec 24 12:42:02 ERL-CT kernel: eth1: Link down
Dec 24 12:42:09 ERL-CT kernel: eth1: 100 Mbps Full duplex, port 1
I also see the link is now repeatedly bouncing up and down rapidly every few hours:
Dec 27 14:17:49 ERL-CT kernel: eth1: Link down
Dec 27 14:17:51 ERL-CT kernel: eth1: 1000 Mbps Full duplex, port 1
Dec 27 14:17:53 ERL-CT kernel: eth1: Link down
Dec 27 14:17:55 ERL-CT kernel: eth1: 1000 Mbps Full duplex, port 1
Dec 27 14:18:01 ERL-CT kernel: eth1: Link down
Dec 27 14:18:02 ERL-CT kernel: eth1: 1000 Mbps Full duplex, port 1
Dec 27 16:15:26 ERL-CT kernel: eth1: Link down
Dec 27 16:15:28 ERL-CT kernel: eth1: 1000 Mbps Full duplex, port 1
Dec 27 16:21:18 ERL-CT kernel: eth1: Link down
Dec 27 16:21:20 ERL-CT kernel: eth1: 1000 Mbps Full duplex, port 1
Dec 27 16:24:32 ERL-CT kernel: eth1: Link down
Dec 27 16:24:38 ERL-CT kernel: eth1: 1000 Mbps Full duplex, port 1
Dec 27 18:58:12 ERL-CT kernel: eth1: Link down
Dec 27 18:58:14 ERL-CT kernel: eth1: 1000 Mbps Full duplex, port 1
Dec 27 18:58:18 ERL-CT kernel: eth1: Link down
Dec 27 18:58:19 ERL-CT kernel: eth1: 1000 Mbps Full duplex, port 1
Dec 27 18:58:21 ERL-CT kernel: eth1: Link down
Dec 27 18:58:23 ERL-CT kernel: eth1: 1000 Mbps Full duplex, port 1
Dec 27 18:58:27 ERL-CT kernel: eth1: Link down
Dec 27 18:58:32 ERL-CT kernel: eth1: 1000 Mbps Full duplex, port 1
Step 4: There are several possible culprits and I need to start eliminating some of them to find the root cause. The first thing I think of is that maybe my PoE injector that I'm running the Fiber Jack on has started to fail. To eliminate this possibility I connect the Fiber Jack to power through the wall adapter that came with it. After a day the connection to the Fiber Jack starts bouncing again. So that's one possibility eliminated. (I also learned the Fiber Jack can switch between PoE power and the wall adapter without interruption and vice versa.)
Step 5: The cable between my Fiber Jack and router is made of several segments. Maybe one of the connections has been damaged/corroded/etc. I start at the Fiber Jack, disconnect the Ethernet cable make sure the connectors are clean, reconnect the cable, gently pull on the cable after it's connected to make sure it's making good contact. I then go outside where the cable connects through a keystone jack to the long run across my house and do the same steps. Everything looks good until I get to the other side of that long run where I have an Ethernet surge protector (since the cable passes outside.)
When I disconnect the cables from the surge protector I see some dust on the connectors. I reconnect the cables and gently pull on them, one side at a time and each time I do the link bounces between the Fiber Jack and my router. I blow out the connectors with compressed air, reconnect the cables and gently pull on the cables one at a time again. The link no longer bounces and the connections are solid. Problem solved!
Since I've had this experience, I went back and read some of the Google Fiber Help Forum posts about slow speeds and random drops and I'm convinced at least a few of them are bad connections/cables. Maybe this post can help someone else solve this problem in hours instead of days like it took me. :)