Combining supervised and unsupervised monitoring for fault detection in distributed computing systems