1. A method for collecting and aggregating datasets with fault tolerance, the method comprising: collecting a dataset from a data source on a machine where the dataset is generated, wherein the dataset is collected by an agent node executed on the machine; generating a batch comprising messages from the dataset; assigning a tag to the hats h and computing a checksum for the hatch; writing the tag, the batch comprising the messages, and the checksum to an entry in a write-ahead-log (WAL) in a storage; sending the batch comprising the messages to a receiving location; verifying the checksum of the batch comprising the messages at the receiving location; and in response to determining that receiving location has failed, storing, by the agent node, the dataset in a persistent storage of the machine until the receiving location is repaired or until another destination is identified.