A system (100, 200, 300) comprising: an application host configured to execute at least one instance of at least one application; a memory area including a set of at least one sample memory buffers (120, 602); a compressed sample file store (128, 606, 608, 610); a timestamp index (130, 630); a file position index (132, 620); at least one computer process associated with each instance of each application; and a monitoring sampler (114, 314) associated with each application; wherein the monitoring sampler (114, 314) for a respective application, is configured to, for each respective computer process of the application: store a received sample (420, 604, 605) of monitored attributes of the computer process in a sample memory buffer (120, 602) for the computer process that includes other stored samples (420, 604, 605); determine that the sample memory buffer (120, 602) for the computer process is full; compress the sample memory buffer (120, 602) for the computer process; determine a starting position in the compressed sample file store (128, 606, 608, 610) at which to store the compressed sample memory buffer (126, 612, 614, 616, 618); store the compressed sample memory buffer (126, 612, 614, 616, 618) at the determined starting position in the compressed sample file store (128, 606, 608, 610); store the starting position of the stored compressed sample memory buffer (126, 612, 614, 616, 618) at a particular location (622, 624, 626, 628) in the file position index (132, 620); and store a collection timestamp for the sample (420, 604, 605) in the timestamp index (130, 630) at a timestamp index location (632, 634, 636, 638) that matches the particular location (622, 624, 626, 628) in the file position index (132, 620), wherein the timestamp index (130, 630) and the file location index (132, 620) are parallel arrays. an application host configured to execute at least one instance of at least one application; a memory area including a set of at least one sample memory buffers (120, 602); a compressed sample file store (128, 606, 608, 610); a timestamp index (130, 630); a file position index (132, 620); at least one computer process associated with each instance of each application; and a monitoring sampler (114, 314) associated with each application; wherein the monitoring sampler (114, 314) for a respective application, is configured to, for each respective computer process of the application: store a received sample (420, 604, 605) of monitored attributes of the computer process in a sample memory buffer (120, 602) for the computer process that includes other stored samples (420, 604, 605); determine that the sample memory buffer (120, 602) for the computer process is full; compress the sample memory buffer (120, 602) for the computer process; determine a starting position in the compressed sample file store (128, 606, 608, 610) at which to store the compressed sample memory buffer (126, 612, 614, 616, 618); store the compressed sample memory buffer (126, 612, 614, 616, 618) at the determined starting position in the compressed sample file store (128, 606, 608, 610); store the starting position of the stored compressed sample memory buffer (126, 612, 614, 616, 618) at a particular location (622, 624, 626, 628) in the file position index (132, 620); and store a collection timestamp for the sample (420, 604, 605) in the timestamp index (130, 630) at a timestamp index location (632, 634, 636, 638) that matches the particular location (622, 624, 626, 628) in the file position index (132, 620), store a received sample (420, 604, 605) of monitored attributes of the computer process in a sample memory buffer (120, 602) for the computer process that includes other stored samples (420, 604, 605); determine that the sample memory buffer (120, 602) for the computer process is full; compress the sample memory buffer (120, 602) for the computer process; determine a starting position in the compressed sample file store (128, 606, 608, 610) at which to store the compressed sample memory buffer (126, 612, 614, 616, 618); store the compressed sample memory buffer (126, 612, 614, 616, 618) at the determined starting position in the compressed sample file store (128, 606, 608, 610); store the starting position of the stored compressed sample memory buffer (126, 612, 614, 616, 618) at a particular location (622, 624, 626, 628) in the file position index (132, 620); and store a collection timestamp for the sample (420, 604, 605) in the timestamp index (130, 630) at a timestamp index location (632, 634, 636, 638) that matches the particular location (622, 624, 626, 628) in the file position index (132, 620), wherein the timestamp index (130, 630) and the file location index (132, 620) are parallel arrays.