Do regular water changes and get a good liquid test kit. I do mine once a week. I have a strict regime: Friday, Saturday and Sunday I change water, on Wednesday, test water. (12 running tanks, gotta spread out the work load) Clean the gravel using but do not tear the tank down each time. Some people think you have to tear it down, rinse the gravel and set it back up. That's the worst thing you can do.
Do not use the "clear water" chemicals. They are worthless and do not treat the issue at hand, they are just a quick fix.
Feed less. Over feeding will cause poor water conditions. Cloudy water can be just the beginning.
Also, check your filter. What's the rating on it? Most companies lie about the capacity of the filter. I'm a firm believer in "there is no such thing as over-filtering". If your filter is rated for a 20g tank, I'm betting you actually need more filtration. An example. On our 40g tank, I run a fluval 305, this is rated for 70g. On our 29g I run an aquatech rated for 60g. On our 120 I run 2 fluval 405s rated for 100g each. See what I'm getting at?
How do you maintain said filter? Does it have cartridges, sponges, flosses? Do you rinse them with tap water? A big no no. Use tank water. The tap water will kill off the good bacteria.