Whenever you are looking for the subject in a question, you can generally just rearrange it into a statement to make it easier to see. And try to identify the parts that you know aren't the subject (like prepositional phrases, adjectives, and adverbs) and drop them out to make your search easier. However, you'll find that even whole phrases can be the subject at times, and different verb forms can be a little tricky, but that's for another day. Let's just stick to your example.
Now first, let's start with the verb, mache. Of the remaining words in the sentence, ich is the only one that could say mache here. Was and Abend and even heute would have to be macht, the third person singular form of machen.
Although Abend is a noun, I think you can see that hooked together with heute it's operating as an adverbial phrase of time in this case, so we can drop out heute and Abend from the equation.
Since we know ich uses the form mache, and heute Abend is an adverbial phrase of time, then Was must be the object of the verb, just in reverse order because it's a question. You could say, Ich mache was heute Abend to see it in statement form (though you'd probably want to change was to etwas unless you're using the colloquially shortened form, but that's again for another day).
One last point. If the verb is a form of sein (to be), then nouns and pronouns in the Nominitive case have to be either the subject or a predicate nominative of the subject. So, anytime you see ich instead of mich or mir, you're pretty limited on what part it will play in the sentence.