servidor awstats na infraestrutura dinâmica

1

Eu tenho um servidor linux dedicado ao awstats. Este servidor hospeda o aplicativo awstats e gera / publica estatísticas para vários sites hospedados por vários servidores web implantados em minha infraestrutura.

Para fazer este trabalho neste momento, cada servidor web exporta via NFS seus diretórios web-access-logs e o servidor awstats os monta somente em leitura. Desta forma, tudo funciona bem e awstats pode ler todos os logs de servidores.

O principal problema desta solução é que sempre que eu desligar / ligar um servidor web eu tenho que reconfigurar as montagens NFS e a configuração Awstats dentro do servidor awstats. Considerando que eu tenho um ambiente dinâmico (nuvem privada) acontece que eu tenho que desligar e ligar servidores muitas vezes durante o dia com base na carga que tenho sobre eles.

Você conhece alguma outra configuração possível e inteligente que possa aplicar aos awstats para atender a essa necessidade sem precisar reconfigurá-la sempre?

Muito obrigado.

    
por Francesco 11.05.2015 / 10:04

2 respostas

1

Quando faço coisas semelhantes no AWS ou em nuvens semelhantes, uso autofs para montar os diretórios de log. Isso significa que os diretórios de log são montados com base na demanda, ou seja, não até serem necessários e desmontados logo em seguida. Isso também significa que o acesso a um diretório mapeado para um servidor inativo envolve uma pequena espera antes que um diretório vazio seja retornado, em vez de um longo travamento do NFS.

Em seguida, mantenho uma única lista central dos servidores atualmente em vigência, para que o trabalho de registro não pesquise servidores que estejam inativos e nem mesmo tenha o autofs wait; mas isso é um mero refinamento.

    
por 11.05.2015 / 10:19
0

Uma alternativa seria configurar os servidores da Web para transmitir seus logs de acesso por meio do syslog para o seu servidor awstats.

Isso significaria uma mudança de configuração zero na configuração do awstats quando você trouxesse servidores da Web para cima e para baixo.

Em um servidor web Apache, você pode ter algo como:

ErrorLog "/var/log/www/error.log"
CustomLog "/var/log/www/access.log" combined

Substitua por um pipe para logger (um utilitário padrão que converte stdin para mensagens syslog) e, opcionalmente, use tee para duplicar as mensagens de log para que o arquivo de log existente também seja mantido:

ErrorLog  "|/bin/sh -c '/usr/bin/tee -a /var/log/www/error.log  | /usr/bin/logger -thttpd -plocal6'"
CustomLog "|/usr/bin/logger -thttpd -plocal7" combined

Em seguida, instrua o daemon syslog em cada servidor da Web para enviar arquivos de log para o seu servidor awstats:

# syslog.conf
local6.* @192.168.0.1    
local7.* @192.168.0.1

Onde as mensagens recebidas podem ser coletadas e armazenadas para processamento posterior por awstats.

Se você tiver vários hosts virtuais diferentes, convém adicionar um % co_de adicional % diretiva que também registra o VirtualHost:

 LogFormat "%v %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined-with-vhost

e use

CustomLog "|/usr/bin/logger -thttpd -plocal7" combined-with-vhost

Você pode fazer alguns registros pré-processados e divididos para cada VirtualHost em seu próprio arquivo de registro ou alterar seu configuração awstats para lidar com esses registros com LogFormat e criar estatísticas corretas.

    
por 11.05.2015 / 12:27