Como Monitorar a Carga do Servidor Web Apache e Estatísticas de Páginas

Neste artigo, você aprenderá como monitorar a carga e as solicitações do servidor web Apache usando o módulo mod_status em suas distribuições Linux, como CentOS, RHEL e Fedora.

O que é mod_status?

O mod_status é um módulo do Apache que ajuda a monitorar a carga do servidor web e as conexões httpd atuais com uma interface HTML que pode ser acessada via navegador web.

O mod_status do Apache mostra uma página HTML simples contendo informações sobre as estatísticas atuais do servidor web, incluindo:

  • Número total de solicitações recebidas
  • Número total de bytes e contagem do servidor
  • O uso da CPU do servidor web
  • Carga do servidor
  • Tempo de atividade do servidor
  • Traffic total
  • Número total de trabalhadores inativos
  • PIDs com os respectivos clientes e muito mais.

O Projeto Apache habilitou por padrão sua página de estatísticas do servidor para o público em geral. Para ver uma demonstração da página de status do site ocupado, visite:

Ambiente de Teste

Nós utilizamos o seguinte Ambiente de Teste para este artigo para explorar mais sobre o mod_status com alguns exemplos práticos e capturas de tela.

  1. Sistema Operacional – CentOS 8/7
  2. Aplicação – Servidor Web Apache
  3. Endereço IP – 5.175.142.66
  4. DocumentRoot – /var/www/html
  5. Arquivo de Configuração do Apache – /etc/httpd/conf/httpd.conf
  6. Porta HTTP Padrão – 80 TCP
  7. Testar Configurações – httpd -t

Os pré-requisitos para este tutorial são que você deve estar ciente de como instalar e configurar um Servidor Apache Básico. Se você não sabe como configurar o Apache, leia o seguinte artigo que pode ajudá-lo a configurar seu próprio Servidor Web Apache.

  1. Crie seu Próprio Servidor Web e Hospede um Site no Linux

Como Habilitar o mod_status no Apache

A instalação padrão do Apache vem com o mod_status habilitado. Se não estiver, verifique se está habilitado no arquivo de configuração do Apache.

[root@tecmint ~]# vi /etc/httpd/conf/httpd.conf

Procure pela palavra “mod_status” ou continue rolando para baixo até encontrar uma linha contendo.

#LoadModule status_module modules/mod_status.so

Se você ver um caractere ‘#‘ no início de “LoadModule”, isso significa que o mod_status está desativado. Remova o ‘#‘ para habilitar o mod_status.

LoadModule status_module modules/mod_status.so

Configurar o mod_status

Agora busque novamente pela palavra “Localização” ou role para baixo até encontrar uma seção para mod_status que deve se parecer com o seguinte.

# Allow server status reports generated by mod_status,
# with the URL of http://servername/server-status
# Change the ".example.com" to match your domain to enable.
#
#<Location /server-status>
#    SetHandler server-status
#    Order deny,allow
#    Deny from all
#    Allow from .example.com
#</Location>

Na seção acima, descomente as linhas para a diretiva Localização, SetHandler e as restrições de diretório de acordo com suas necessidades. Por exemplo, estou mantendo simples com a Ordem Permitir, negar e é permitido para todos.

<Location /server-status>
   SetHandler server-status
   Order allow,deny
   Deny from all
   Allow from all 
</Location>

Nota: A configuração acima é a configuração padrão para o site da web Apache padrão (site único). Se você criou um ou mais Virtual Hosts do Apache, a configuração acima não funcionará.

Basicamente, você precisa definir a mesma configuração para cada host virtual para quaisquer domínios que você tenha configurado no Apache. Por exemplo, a configuração do host virtual para mod_status ficará assim.

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot /var/www/html/example.com
    ServerName example.com
    ErrorLog logs/example.com-error_log
    CustomLog logs/example.com-access_log common
<Location /server-status>
   SetHandler server-status
   Order allow,deny
   Deny from all
   Allow from example.com 
</Location>
</VirtualHost>

Ativar ExtendedStatus

As configurações “ExtendedStatus” adicionam mais informações à página de estatísticas como uso da CPU, requisições por segundo, tráfego total, etc. Para ativá-lo, edite o mesmo arquivo httpd.conf e procure a palavra “Extended” e descomente a linha e defina o status “On” para a diretiva ExtendedStatus.

# ExtendedStatus controls whether Apache will generate "full" status
# information (ExtendedStatus On) or just basic information (ExtendedStatus
# Off) when the "server-status" handler is called. The default is Off.
#
ExtendedStatus On

Reinicie o Apache

Agora certifique-se de ter habilitado e configurado corretamente a página de status do servidor Apache. Você também pode verificar os erros na configuração do httpd.conf usando o seguinte comando.

[root@tecmint ~]# httpd -t

Syntax OK

Uma vez que a sintaxe esteja OK, você poderá reiniciar o serviço httpd.

[root@tecmint ~]# service httpd restart
OR
[root@tecmint ~]# systemctl restart httpd
Stopping httpd:                                          [  OK  ]
Starting httpd:                                          [  OK  ]

Acesse a Página de Status do Mod_status

O status da página do Apache estará acessível via seu nome de domínio com “/server-status” nas seguintes URLs.

http://serveripaddress/server-status

OR

http://serev-hostname/server-status

Você verá algo semelhante à seguinte página com o ExtendedStatus habilitado.

Apache mod_status View

Na captura de tela acima, você pode ver uma interface HTML, que mostra todas as informações sobre tempo de atividade do servidor, ID do processo com seu respectivo cliente, a página que estão tentando acessar.

Ele também mostra o significado e o uso de todas as abreviações usadas para exibir o status, o que nos ajuda a entender melhor a situação.

Você também pode atualizar a página a cada alguns segundos (digamos 5 segundos) para ver as estatísticas atualizadas. Para definir a atualização automática, adicione “?refresh=N” no final da URL. Onde N pode ser substituído pelo número de segundos que você deseja que sua página seja atualizada.

http://serveripaddress/server-status/?refresh=5
Apache mod_status Refresh

Visualização da Página de Status da Linha de Comando

Você também pode visualizar a página de status do Apache a partir da interface de linha de comando usando navegadores de linha de comando especiais chamados links ou lynx. Você pode instalá-los usando o utilitário padrão de gerenciamento de pacotes chamado yum como mostrado abaixo.

# yum install links

OR

# yum install lynx

Uma vez que você tenha instalado, você poderá obter as mesmas estatísticas em seu terminal usando o seguinte comando.

[root@tecmint ~]# links http://serveripaddress/server-status
OR
[root@tecmint ~]# lynx http://serveripaddress/server-status
OR
[root@tecmint ~]#  /etc/init.d/httpd fullstatus
                     Apache Server Status for localhost
   Server Version: Apache/2.2.15 (Unix) DAV/2 PHP/5.3.3
   Server Built: Aug 13 2013 17:29:28

   --------------------------------------------------------------------------
   Current Time: Tuesday, 14-Jan-2014 04:34:13 EST
   Restart Time: Tuesday, 14-Jan-2014 00:33:05 EST
   Parent Server Generation: 0
   Server uptime: 4 hours 1 minute 7 seconds
   Total accesses: 2748 - Total Traffic: 9.6 MB
   CPU Usage: u.9 s1.06 cu0 cs0 - .0135% CPU load
   .19 requests/sec - 695 B/second - 3658 B/request
   1 requests currently being processed, 4 idle workers
 .__.__W...

   Scoreboard Key:
   "_" Waiting for Connection, "S" Starting up, "R" Reading Request,
   "W" Sending Reply, "K" Keepalive (read), "D" DNS Lookup,
   "C" Closing connection, "L" Logging, "G" Gracefully finishing,
   "I" Idle cleanup of a worker, "." Open slot with no current process

Srv PID     Acc    M CPU   SS  Req Conn Child Slot     Client        VHost             Request
0-0 -    0/0/428   . 0.30 5572 0   0.0  0.00  1.34 127.0.0.1      5.175.142.66 OPTIONS * HTTP/1.0
                                                                               GET
1-0 5606 0/639/639 _ 0.46 4    0   0.0  2.18  2.18 115.113.134.14 5.175.142.66 /server-status?refresh=5
                                                                               HTTP/1.1
                                                                               GET
2-0 5607 0/603/603 _ 0.43 0    0   0.0  2.09  2.09 115.113.134.14 5.175.142.66 /server-status?refresh=5
                                                                               HTTP/1.1
3-0 -    0/0/337   . 0.23 5573 0   0.0  0.00  1.09 127.0.0.1      5.175.142.66 OPTIONS * HTTP/1.0
                                                                               GET
4-0 5701 0/317/317 _ 0.23 9    0   0.0  1.21  1.21 115.113.134.14 5.175.142.66 /server-status?refresh=5
                                                                               HTTP/1.1
                                                                               GET
5-0 5708 0/212/213 _ 0.15 6    0   0.0  0.85  0.85 115.113.134.14 5.175.142.66 /server-status?refresh=5
                                                                               HTTP/1.1
6-0 5709 0/210/210 W 0.16 0    0   0.0  0.84  0.84 127.0.0.1      5.175.142.66 GET /server-status
                                                                               HTTP/1.1
7-0 -    0/0/1     . 0.00 5574 0   0.0  0.00  0.00 127.0.0.1      5.175.142.66 OPTIONS * HTTP/1.0

   --------------------------------------------------------------------------

    Srv  Child Server number - generation
    PID  OS process ID
    Acc  Number of accesses this connection / this child / this slot
     M   Mode of operation
    CPU  CPU usage, number of seconds
    SS   Seconds since the beginning of the most recent request
    Req  Milliseconds required to process most recent request
   Conn  Kilobytes transferred this connection
   Child Megabytes transferred this child
   Slot  Total megabytes transferred this slot
   --------------------------------------------------------------------------

    Apache/2.2.15 (CentOS) Server at localhost Port 80

Conclusão

O módulo mod_status do Apache é uma ferramenta de monitoramento muito útil para acompanhar o desempenho da atividade de um servidor web e pode destacar problemas por si só. Para mais informações, leia a página de status que pode ajudá-lo a se tornar um administrador de servidor web mais bem-sucedido.

  1. Página Inicial do Apache mod_status

Isso é tudo para o mod_status por agora, voltaremos com mais dicas e truques sobre o Apache em futuros tutoriais. Até lá, mantenha-se geek e sintonizado no Tecmint.com e não se esqueça de adicionar seus comentários valiosos.

Source:
https://www.tecmint.com/monitor-apache-web-server-load-and-page-statistics/