Como saber quando o Apache se recusa a conexões

1

Meu servidor Freebsd recebeu muitos ataques DoS recentemente, o que fez com que o Apache ou o Mysql parassem de atender conexões normais. Quando o mysql atinge suas conexões máximas, meu aplicativo me envia um email sobre cada erro do mysql, para que eu possa bloquear os IPs errados. Mas quando o Apache se recusa a conexões, eu não saberia a menos que eu estivesse visitando o site. É possível saber quando o Apache atinge suas conexões máximas? Para que eu possa ajustar o Apache ou bloquear IPs maliciosos? Obrigado!

    
por lastsmoke 27.07.2011 / 17:35

3 respostas

3

Bem, a solução geral seria adicionar algum monitoramento externo.

Uma abordagem pode ser executar o seu próprio servidor Nagios . Definitivamente, há algum esforço em configurá-lo, mas, por outro lado, ele também permitirá que você faça todos os tipos de monitoramento.

Uma solução talvez mais fácil seria usar algum serviço de monitoramento de terceiros, como foi? ou pingdom .

Além de garantir a resposta do servidor ao http, é bom verificar também se a página de resposta contém alguma frase esperada. Dessa forma, você obtém alguma verificação de que também a camada de aplicação subjacente está funcionando.

    
por 27.07.2011 / 18:13
0

Acredito que o mod_status poderá fornecer as informações necessárias, embora não seja tão útil se o Apache recusar conexões: link

O Apachetop também deve ser capaz de informar o número atual de conexões. Está disponível na maioria dos repositórios.

A melhor maneira, no entanto, pode ser simplesmente escrever uma chamada wget para o site e automaticamente descartar dados de registro relevantes se falhar duas verificações em um período curto (5-10s).

    
por 27.07.2011 / 17:47
0
~# curl -sIL localhost
HTTP/1.1 200 OK
Date: Mon, 29 Aug 2011 03:28:42 GMT
Server: Apache/2.2.16 (Debian)
Last-Modified: Mon, 18 Jul 2011 22:20:41 GMT
ETag: "f902-b1-4a85f68d52040"
Accept-Ranges: bytes
Content-Length: 177
Vary: Accept-Encoding
Content-Type: text/html

~# echo $?
0
~# cat >mycheck.sh
#!/bin/bash
curl -sIL localhost 2>&1 >/dev/null   
if [ $? -eq 0 ]; then
    echo " Success !"
else
    echo " FAIL "
fi
CTRL^D
~# sh mycheck.sh 
 Success !
~# iptables -I INPUT -p tcp --dport 80 -j DROP
~# sh mycheck.sh 
 FAIL 
    
por 29.08.2011 / 05:29

Tags