What if a rule doesnt fire or is interrupted because of server down etc? I have several rules that need to be fired after certain events.

When an event occurs and the rule starts execution, and something happens to the server, it may not finish.

Is there a way to make sure a rule will always execute? 

I am asking for a method like a transaction occurs in MySQL. I need to be sure that a rule is executed to ensure data integrity.
To my knowledge there is no such thing as "make sure a rule will always execute?" (as in your question). However, by using the Message module, you can create your own custom "Events logging" (to register things that happened in a site).

A great sample of this you can find in Commerce Kickstart, which uses the Commerce Message module, to create such "Events logging". In this case in the format of an Order History, as shown in this screenprint (from this module's project page).

So in your case, if you'd create an appropriate events logging of all sorts of Rules related Events that you're interested in (= are critical enough?), then at least you'd have appropriate data you can use to investigate if anything went wrong.

To actually do so, for any of your Rules, you could add these Rules Actions to them:


create a "Start Rules Action"-message (as the very first action).
create a "Stop Rules Action"-message (as the very last action).


With that, for any set of Rules Actions that started executing, you can check if you have 2 corresponding messages.

Here is a variation that might work also: instead of creating such "Stop Rules Action" message, you could also use the Flag module to flag the corresponding "Start Rules Action" (the Message module creates messages as entities, so you can flag them for sure). Such flagging would indicate that the set of Rules Actions completed without problems. And to list all the groups of Rules Actions that were interrupted, you'd just have to use the Views module to report about all  "Start Rules Action" messages that were NOT flagged ... Piece of cake, no?

Attention: this covers the part related to Rules Actions, not (yet) something like "what are all Rules Events that were triggered but for which not even 1 Rules Action (= create the start-message) had started (because of some kind of interruption).