Characterizing Direct Monitoring Techniques in Software Systems