Monitorando múltiplos hosts apache dentro de uma pasta

3

Eu fiz algumas buscas antes de digitar isso, então não jogue muitas latas para mim se eu não fiz a pesquisa corretamente:)

Eu tenho um servidor VPS com uma pequena quantidade de instâncias drupal. Algo como 25/30 que se acumularam ao longo do tempo. Eu queria saber se existe algum tipo de programa que é bastante elegante em estatísticas de monitoramento de todos os hosts apache habilitados ou algo parecido, sem ter que instalar algo enorme como awstats que também requer uma entrada manual para cada host virtual.

Às vezes, minha taxa de IO enlouquece no servidor e não consigo entender quem está fazendo isso, se isso esclarecer a natureza da minha necessidade.

Muito obrigado antecipadamente.

    
por Antonio Torres 04.01.2013 / 19:44

7 respostas

3

25/30 problemas drupal e i / o :-)

O Drupal 7 faz uso realmente intenso de um file_scan_directory ruim função.

Verifique este erro drupal por exemplo ou isso e isso .

O problema para você é 25/30 sites, mas todos eles são gerenciados pelos mesmos processos do apache. Portanto, é muito difícil isolar a instância drupal problemática real das ferramentas de monitoramento do sistema.

Com o modo avançado para o status do apache, você pode verificar qual Virtualhost está sendo executado no momento em qual processo do apache (se a solicitação longa for longa o suficiente para você pegá-lo). Você também pode usar várias chamadas para o comando lsof para identificar qual dos filhos do apache está analisando o disco e quais diretórios estão implícitos (isso lhe daria a instância drupal). Claro que será mais fácil com um virtualhost para cada Drupal (sem implementação drupal multisite).

Agora, você deve acompanhar pelo menos o tempo de resposta de cada website, usando nagios com check_http ou munin ou uma das várias ferramentas de monitoramento e serviços da web disponíveis . Observe que, para a maioria dessas ferramentas de monitoramento HTTP, o parâmetro mais importante é indicar o IP e o DNS do servidor, de modo que os 25 ou 30 sites diferentes sejam realmente verificados, e não apenas o primeiro (virtualhost padrão). Se todos eles responderem no mesmo tempo, é provável que você tenha esquecido de informar à ferramenta de monitoramento o DNS correto para usar nessa solicitação http.

Ter o tempo de resposta para todos os sites que você verá após qualquer atualização se uma das instâncias do drupal tiver perdido 1s no tempo médio de resposta (por exemplo) e este será o alvo certo para uma análise mais profunda.

    
por 10.01.2013 / 17:00
3

Assumo que, do ponto de vista das estatísticas, o Awstats faria o trabalho. Também suponho que seu ponto aqui é se preparar para possíveis novos Hosts Virtuais e, por causa disso, automatizar a geração de estatísticas para novos sites.

Bem, aqui está uma tentativa.

  1. Use o Awstats e instale-o normalmente.
  2. Verifique se seus hosts virtuais estão configurados de maneira padrão para que a leitura de sua configuração possa ser automatizada. Desde que você usa o Apache, você pode grep para a diretiva ServerName dentro do diretório habilitado por sites.
  3. Crie um arquivo de configuração de modelo /etc/awstats/template/awstats.template.conf contendo $ SITE nas diretivas LogFile e SiteDomain para ativar a personalização mais tarde.
  4. Agora, crie um wrapper para procurar sites que não tenham awstats configurados e executem a atualização real. Pode ser algo assim:
    #!/bin/sh
    # WARNING, UNTESTED CODE !

    AWSTATSDIR=/etc/awstats
    HTTPDIR=/etc/apache2/sites-enabled

    # Searching for new sites
    grep -i ServerName $HTTPDIR/*|grep -v "\#"|awk '{print $3}'|while read SITE
    do
        if [ ! -f $AWSTATSDIR/awstats.${SITE}.conf ]; then
            # Here creating the custom config based on the $SITE variable placed into template
            sed -e "s/\\$SITE/$SITE/g" $AWSTATSDIR/template/awstats.template.conf > $AWSTATSDIR/$awstats.$SITE.conf"
        fi
    done

    # Ships with the package, runs updates all /etc/awstats/awstats.*.conf configs.
    /usr/share/awstats/tools/update.sh
  1. E no cron, simplesmente:
    */10 * * * /path/to/above/script.sh
    
por 11.01.2013 / 22:59
2

Tente monitorar o uso do seu servidor usando ferramentas como NewRelic , Amon (um NewRelic-like, mas auto-hospedado) ou Munin.

    
por 09.01.2013 / 14:29
1

Vamos ver isso de um ângulo ligeiramente diferente. Você tem 30 sites no seu VPS. Presumivelmente, você não mantém ativamente todos eles. Eu também imagino que você não quer um compromisso para comprometer o resto de seus sites.

Na minha opinião, a única maneira de executar um grande número de sites PHP na mesma máquina é garantir que todos os seus códigos sejam executados como usuários diferentes. A maneira mais fácil de fazer isso é instalar e configurar o suPHP . Isso também ajuda você com seu problema real, pois uma vez que cada site estiver sendo executado como seu próprio usuário, você poderá determinar com facilidade quais estão usando todos os seus recursos.

Será bastante complicado para você rastrear qual site está causando a carga se tudo estiver sendo executado como o mesmo usuário.

    
por 15.01.2013 / 04:06
0

Você provavelmente usará alguma ferramenta de análise de log como awstats (que você mencionou). Você também pode usar um dos concorrentes do 'google analytics' de código aberto como o Open Web Analytics.

    
por 04.01.2013 / 19:55
0

Existe um bom utilitário para detectar quem está lendo \ gravações no disco: iotop

    
por 09.01.2013 / 09:13
0
  • você pode usar Piwik - você pode instalá-lo e monitorar até mesmo de um servidor remoto

  • ou pode instalar awstats em um servidor web local em sua LAN e, através de tarefas agendadas, baixar e processar os arquivos de log diários do servidor web que você está monitorando

por 10.01.2013 / 18:49