Como você pode ver na consulta que você escreveu, esse tipo de agregação em 2.0 exige que você execute Map/Reduce. Map/Reduce no MongoDB tem algumas penalidades de desempenho que foram cobertas no SO antes - basicamente, a menos que você seja capaz de paralelizar em um cluster, você estará executando javascript de thread único via Spidermonkey - não é uma proposta rápida. O índice, já que você não está sendo seletivo, não ajuda muito - você só precisa escanear todo o índice, bem como potencialmente o documento.
Com o lançamento iminente de 2.2 (atualmente em rc1 enquanto escrevo isto) você tem algumas opções. A estrutura de agregação (que é nativo, não baseado em JS Map/Reduce) introduzido na versão 2.2 tem um operador de grupo e foi criado especificamente para agilizar esse tipo de operação no MongoDB.
Eu recomendaria dar uma chance ao 2.2 e ver se seu desempenho no agrupamento melhora. Eu acho que seria algo assim (nota:não testado):
db.alarm.aggregate(
{ $group : {
_id : "$serverName",
count : { $sum : 1 }
}}
);