As interactions and dependencies within distributed reactive systems increase, the problem of detecting failures which depend on the exact situation and environmental conditions they occur in grows. As a result, not only the detection of failures is increasingly difficult, but also the differentiation between symptoms of a fault, and the actual fault itself. This work proposes an efficient approach for the dynamic analysis of such systems. It introduces a framework, referred to as runtime reflection framework, for the detection of failures as well as identification of their causes. Failure detection is based upon monitoring systems w.r.t. their properties, defined in a custom high-level specification language. Properties are translatable into temporal logics for which efficient monitors can be generated. Based on the monitors' verdicts, a dedicated failure diagnosis is performed to identify explanations for an observed deviation. Either this confirms that a monitor detected the root cause for a failure, or indicates that the fault is located elsewhere. This book develops both the theoretical foundations for runtime reflection as well as efficient means for its implementation.