Esta não é uma solução tão geral quanto você pediu, mas pensando em uma sessão da conferência PHP de Londres, a BBC disse que eles tinham uma maneira inteligente de transportar arquivos de log do apache de muitos servidores para um servidor central em tempo real. tempo, eu acho que eles apelidaram teleportado.
Não me lembro os detalhes exatos, mas o jist era que eles tinham um pequeno script de reinicialização automática em execução em cada um dos servidores apache que basicamente abriam um pipe chamado fifo / var / log / apache2 / access_log e usado netcat para copiá-lo para uma porta tcp exclusiva nos servidores de log. Os servidores de log, em seguida, enviaram de volta para o / var / log / myApacheServer / access_log.
Com cuidado, essa abordagem também funcionaria para arquivos syslog gerais, embora uma sincronização inicial durante a inicialização do sistema possa ser necessária.
Se você estiver bem com tempo semi-real, então eu escolheria uma solução muito mais simples de girar os arquivos de log a cada n minutos e rsyncing-los para o servidor central em [postrotate].
Muitos pacotes webstats, como awstats e friends, assumem que os arquivos de log são classificados, então algo como logresolvemerge.pl do awstats pode ser um pré-processador útil no logServer: / var / log / * / access_log antes de executar qualquer stats exigir dos resultados.
O Cacti desenharia os gráficos que você procura usando o rrdtool, mas você precisaria alimentá-lo a partir de dados coletados dos arquivos de dados internos da webstats, o que é um pouco desestruturado para o meu gosto.
Essa abordagem é programável, mas começa a ficar entediante com um grande número de hosts virtuais, já que você acaba com um número vhosts * serverCount de fluxos TCP.
É tudo baseado em sistemas de arquivos, então um pouco de baixa tecnologia no mundo de hoje, desculpe.