Execute uma ação com base na taxa de carregamento

3

Estou executando alguns aplicativos da web em um servidor Debian e tenho que lutar com ataques de ddos às vezes. Está consumindo todos os meus recursos e não posso mais usar o servidor. Uma ideia era descartar todas as conexões se o carregamento do avg estiver muito alto, portanto, ainda haverá recursos para mim e aceitarão novas conexões se o carregamento do avg for baixo o suficiente. Como isso tem que funcionar sob carga pesada, receio que um cronjob não seja rápido o suficiente ou que exija muitos recursos.

tl; dr: Existe uma maneira de configurar o comportamento se o load avg estiver acima de um limite específico?

    
por sfx 30.08.2012 / 16:50

1 resposta

4

Embora eu deva tentar resolver o problema real no nível de firewall ou de rede, uma abordagem rápida e suja de ações baseadas em recursos é usar o utilitário Monit .

Especificamente, Monit pode realizar testes de recursos , alertá-lo e tomar medidas com base nessas condições.

IF resource operator value [[<X>] <Y> CYCLES] THEN action [ELSE IF SUCCEEDED [[<X>] <Y> CYCLES] THEN action]

Então ...

check system example.com
    if loadavg (1min) > 10 then alert

Ou para algo específico para o Apache:

check process apache with pidfile /var/run/httpd.pid
start program = “/sbin/service httpd start”
stop program = “/sbin/service httpd stop”
if children > 250 then restart
if loadavg(5min) greater than 10 for 8 cycles then stop
if 3 restarts within 5 cycles then timeout
    
por 30.08.2012 / 16:56