The 28-year-old had been training with Scottish Third Division side Rangers with a view to signing a permanent contract.
However, a move to Ibrox failed to materialise and St Johnstone manager Steve Lomas reacted quickest to land the former Celtic and Hearts centre-forward.
"I spoke to the manager and liked what he had to say about the club. He played a massive part in bringing me here," said Beattie. "I already know some of the boys and I'm aware that there is a good squad already at McDiarmid. The manager was keen on me last season, but I went to Hearts which was the right thing for me at the time.
"I've been okay with the situation, but maybe it's not been so easy for my family, not knowing what was going to happen. I had other options, but I've been quite calm about the decision making process and I'm delighted to be here.
"The club made the top six last season and there is no reason why we can't repeat that. We'll see how training goes this week, but if everything is okay I'll be happy to play against Aberdeen."
Beattie has also played for West Bromwich Albion and Swansea City.