Fowler agreed to a one-year deal with a mutual option for 2017, according to the Cubs. The deal reportedly calls for an $8 million base salary this season and $9 million in 2017 with a $5 million buyout.
Fowler, who turns 30 next month, batted .250 with 17 homers last season while helping the Cubs reach the National League Championship Series.
The retention of Fowler comes two days after multiple media outlets reported that he signed a three-year, $35 million deal with the Baltimore Orioles.
The Orioles never officially filed the contract with Major League Baseball and Fowler reportedly began experiencing second thoughts.
The versatile Coghlan, 30, batted .250 with 16 homers for the Cubs last season.
Brooks, 25, was acquired from Kansas City as part of the package in which Ben Zobrist was traded to the Royals midway through last season. He went 3-4 with a 6.71 ERA in 11 appearances (nine starts) with the Athletics.
Chicago also placed left-hander Zac Rosscup on the 60-day disabled list to open a 40-man roster spot for Fowler.