I've had the same guard node for almost 4 weeks now. I know it's natural to have the same guard for a prolonged period, but a month? I use tbb every day, tbb version 6.0.7 on ubuntu 16.
Would anyone say that's normal?
Yes, that is normal.
The guard rotation periods were increased, and the number of guards chosen was reduced. The idea being that a passive adversary might want to run some percentage of Tor relays (guards and exits). Every time you pick a new guard, you roll some dice and with some likelihood either pick one of the hypothetical evil guards or a benign guard. The more often that you roll this dice, the more likely that it is you will pick one of the hypothetically evil guards. For someone trying to perform surveillance the likelihood that they would be able to target their intended subject is reduced, since fewer guards are picked less often.
The details for this change were outlined in Proposal 236 ("The move to a single guard node"):
0. Introduction It has been suggested that reducing the number of guard nodes of each user and increasing the guard node rotation period will make Tor more resistant against certain attacks . For example, an attacker who sets up guard nodes and hopes for a client to eventually choose them as their guard will have much less probability of succeeding in the long term. Currently, every client picks 3 guard nodes and keeps them for 2 to 3 months (since 0.2.4.12-alpha) before rotating them. In this document, we propose the move to a single guard per client and an increase of the rotation period to 9 to 10 months.
That said, as you'll note from the proposal the previous guard lifetime was in fact 2-3 months, two or three times longer than you've had your current guard, so it's certainly nothing to worry about.
As to the titular question "how long is too long?" this is actually debated, a relevant reading if you're interested in the question would be the references at the end of prop-236 linked above and the Tor Project ticket for implementing prop-236 (and it's various child tickets): #11480