Qual é a melhor maneira de monitorar continuamente um servidor web (HTTP) e baixar arquivos recém-adicionados com min. atraso (idealmente <1min. atraso)?
Responder1
Monitoramento
Primeiro de tudo, para monitoramento eu recomendo que você useNagios, a fonte principal é gratuita, mas se você precisar de uma GUI, deverá pagar por ela, mas vale a pena pagar esse valor.
Você também pode usarGelo,PRTG, ou o que mais lhe convier.
Collectd (Collection Daemon) também é uma ferramenta de monitoramento gratuita que você pode baixar usando yum
em derivados RHEL ou apt-get
baseados em Debian. Você pode lereste papelse você quisesse ir com Collectd.
Tarefa executada a cada x <1 minuto
Para a segunda parte da sua pergunta, para fazer um trabalho a cada x vez em que x dura menos de um minuto periodicamente, como você sabe que não pode usar Cronjobs, pois pode usar alguns truques explicados porGilles nesta questãopara fazer o que quiser.
Será melhor ter um script para o que você precisa e executá-lo para sempre, mesmo na inicialização, se necessário. Você pode ter uma sintaxe simples conforme mostrado abaixo:
while true; do yourJob; sleep someTime; done
Ou você pode até usar scripts mais complexos, dependendo do que você precisa.
Você também pode usar watch
o comando. Por exemplo:
watch -n1 command
Ele funcionará command
a cada segundo e para sempre.
Como você deve ter adivinhado, você também pode executar seu script de shell watch
se precisar ter apenas um script simples sendo executado a cada x tempo em menos de um minuto, e não um script complexo.
A escolha é sua.
Responder2
Isso depende de alguns fatores.
Se você tiver controle sobre o servidor web, a coisa mais fácil a fazer seria instalar um serviço (RESTful?) Fornecendo a quantidade de arquivos alterados desde a última verificação ou download. Isso minimiza a transferência e a carga de dados no cliente e no servidor. Ainda mais se o upload/modificação de arquivos no servidor puder ser rastreado diretamente, por exemplo, no script de upload, em vez de depender do sistema de arquivos.
Neste último caso, eu procuraria alguma solução de monitoramento de arquivos, como famd
.
Se você não tiver controle sobre o servidor, precisará fazer modificações antes de poder baixá-los. O mais fácil seria usar algunsespelhamento da webutilitários como o w3mir, pois eles já cuidam da verificação/fornecimento dos cabeçalhos ETag e Last-Modified/If-Modified-Since. Isso significa que você terá que emitir menos chamadas e, portanto, poderá executar o utilitário com mais frequência.
Quanto acomopara executar o utilitário, depende de onde ele é executado. Você pode usar um cron job em uma máquina Unix ou apenas executá-lo em loop.
Se você fizer o primeiro, no entanto, será aconselhável instalar algum tipo de semáforo para impedir que um processo de espelhamento seja iniciado antes que a instância anterior termine. Pode ser tão simples quanto criar um arquivo de bloqueio:
if [ -r /tmp/mirror.lock ]; then
echo "lock file found" | logger -t webmirror
exit 0
fi
touch /tmp/mirror.lock
...whatever...
rm /tmp/mirror.lock
Mas você também precisará de catch
qualquer sinal que possa matar seu script; caso contrário, no caso de um erro temporário, o arquivo de bloqueio poderá ser deixado lá e impedir a execução de todas as outras instâncias, mesmo após o erro ter sido resolvido.
Ou você pode verificar se o arquivo de bloqueio não é mais antigo do que uma quantidade razoável e excluí-lo se for, ou verificar quantas instâncias do script são encontradas por ps
(normalmente uma, a atual; se mais, a atual é melhor abortar) e dispensar completamente o arquivo de bloqueio.
Responder3
Você poderia executar um comando simples curl
em um cron job, mas recomendo que você comece a usar uma solução de monitoramento com recursos de monitoramento da web. Existem muitos deles gratuitamente, basta pesquisar no Google "Soluções de monitoramento da web de código aberto" e você obterá muitos deles!
Responder4
Como FarazX disse existem várias soluções de monitoramento como Nagios,FMS Pandora,... Mas talvez essas ferramentas sejam grandes demais para o seu propósito. TalvezUptimerobôé o suficiente para você.
Dê uma olhada nas propostas e escolha a que melhor se adapta a você, mas lembre-se que uma solução de monitoramento com mais opções oferece mais possibilidades para o seu ambiente.