"Best Practices" will depend upon the criticality of the application and its sensitivities.
That said, I would also say that the best practice is to actually monitor performance before there are performance problems, so that the changes which effect user percieved performance can be identified and fixed.
For low budget operations, such as SOHO & curiosity, it's hard to beat MRTG monitoring of traffic, CPU, translation table, etc. This won't catch really short bursts, but will show 5 minute averages over a 24 hour period, so you can look back and see what happened after the fact. Primary disadvantage is that it only monitors traffic "out of the box" so you need to learn a little SNMP to get the other information you want. But examples have been posted here and on Usenet.
Unless you are talking about a home network, also consider how you will access the monitoring data from outside the firewall (for when the boss calls you at home to complain ;-] ).
Good luck and have fun!
Vincent C Jones
www.networkingunlimited.com