Você está na página 1de 44

Otimização, manutenção e

backup
Índice
1 MONIT..............................................................................................................................................3
1.1 DESCRIÇÃO E FUNCIONALIDADES.........................................................................................................3

1.2 INSTALAÇÃO....................................................................................................................................3
1.2.1 APT-BASED...............................................................................................................................3
1.2.1 INSTALAÇÃO ALTERNATIVA COM BINÁRIOS........................................................................................4

1.3 CONFIGURAÇÕES..............................................................................................................................5
1.3.1 MONIT CONTROL FILE (MONITRC)..................................................................................................5

1.4 EXEMPLOS DE IMPLEMENTAÇÃO...........................................................................................................7

1.4.1 CHECK PROCESS........................................................................................................................9

1.4.1 CHECK FILE...............................................................................................................................9

1.4.1 CHECK FILESYSTEM...................................................................................................................10

1.4.1 CHECK DIRECTORY...................................................................................................................11

1.4.1 CHECK SYSTEM........................................................................................................................11

1.4.1 CHECK PROGRAM.....................................................................................................................12

1.5 INICIALIZANDO...............................................................................................................................13
1.6 IMPLEMENTAÇÃO NOS SERVIDORES.....................................................................................................14

1.6.1 ADNITRO...............................................................................................................................14
1.6.2 COUNTLY...............................................................................................................................16
1.6.3 NATURA.................................................................................................................................17
1.6.4 LOAD BALANCER.....................................................................................................................18

1.6.5 PORTAL LIBRE.........................................................................................................................19

1.6.6 GODZILLA..............................................................................................................................20
1.6.7 OPERATIONS...........................................................................................................................22
1.6.8 FREEZONE..............................................................................................................................24
1.6.9 KRAKEN.................................................................................................................................26
1.6.10 LOAD BALANCER SQUID.........................................................................................................26
1.6.11 GOHAN................................................................................................................................27
1.6.12 GOHAN................................................................................................................................28
2 BACKUPS........................................................................................................................................29
2.1 INTRODUÇÃO.................................................................................................................................29
2.2 INSTALAÇÃO..................................................................................................................................29
2.3 CONFIGURAÇÃO.............................................................................................................................29
2.4 EXEMPLO DE COMO IMPLEMENTAR UM SCRIPT DE BACKUP.......................................................................30

2.5 SCRIPTS.......................................................................................................................................32
2.5.1 ADNITRO...............................................................................................................................32
2.5.2 GODZILLA..............................................................................................................................34
1 Monit

1.1 Descrição e funcionalidades


Monit é um programa de código aberto usado para gerenciar e monitorar
processos e recursos em sistemas Unix. O programa pode efetuar
manutenção e reparos automáticos, executando ações em situação de erro
do sistema.

Abaixo estão listadas algumas de suas funcionalidade:

 Iniciar um serviço que esteja parado, ou reiniciá-lo caso esteja


gerando um processamento muito alto, ou consumindo muita
memória. Paralelamente a essas ações, uma notificação pode ser
enviada para um e-mail configurado.
 Monitorar arquivos, diretórios e sistemas de arquivos em caso de
mudanças de timestamps, chucksum, tamanho ou permissões.
 Testar scripts através de seu valor de saída e executar uma ação caso
esse valor indique um erro.
 Gerenciamento dos recursos do sistema, como utilização global de
CPU, memória, leitura e espaço em disco.

1.2 Instalação

1.2.1 Apt-based

Em servidores Unix que utilizam gerenciadores de pacotes


baseados em apt-get, a instalação pode ser feita através do
comando:
sudo apt-get install monit
1.2.2 Instalação alternativa com binários

Em servidores padrão da Amazon baseados em RHEV, a instalação


pode ser feita da seguinte maneira:
cd ~
(Copiar a url de download da última versão estável)
wget http://mmonit.com/monit/dist/binary/5.14/monit-5.14-linux-
x64.tar.gz

tar zxvf monit-5.14-linux-x64.tar.gz

cd monit-5.14/

cp bin/monit /usr/bin/monit

mkdir /etc/monit

touch /etc/monit/monitrc

chmod 0700 /etc/monit/monitrc

ln -s /etc/monit/monitrc /etc/monitrc

wget
https://gist.githubusercontent.com/rahul286/9975061/raw/1aa107e
62ecaaa2dacfdb61a12f13efb6f15005b/monit -P /etc/init.d/

chmod u+x /etc/init.d/monit

echo "START=yes" > /etc/default/monit

monit -t
1.3 Configurações

1.3.1 Monit control file (monitrc)

O comportamento do monit é configurado e controlado por


parâmetros definidos no arquivo monitrc. A localização padrão
deste arquivo é em /etc/monit/monitrc, ou ainda em ~/.monitrc.
Os parâmetros que merecem destaque são:

set daemon
O monit faz seus testes em ciclos regulares de tempo, definido
em segundos. O parâmetro “set daemon“ serve para definir
esse valor. O padrão é 120 segundos.
Exemplo:
set daemon 120

set logfile
Localização dos aquivos de log do monit.
Exemplo:
set logfile /var/log/apache2/monit.log

set mailserver
Define o servidor de e-mail que enviará as notificações.
Sintaxe:
SET MAILSERVER <hostname|endereço de ip [número da
porta] [Nome de usuário]

Exemplo:
set mailserver smtp.zonacla.ro port 587
username "datospersonales@zonacla.ro" password
"userpass"
set alert

Endereços de e-mail que receberão as notificações


Sintaxe:
ser alert mail-address [[NOT] {evento, ...}]

Exemplo:
set alert admin@clickwings.com only on { resource }

O parâmetro “only on” serve para definir eventos específicos


em que serão enviadas as notificações. Nesse exemplo as
notificações serão enviadas caso algum limite de recurso for
ultrapassado.
Outros tipos de eventos:
Action, checksum, bytein, byteout, connection, content,
data, exec, fsflags, gid, link, nonexist, packetin, packetout,
permission, pid, ppid, resource, saturation, size, speed,
status, timeout, timestamp, uid, uptime.

set httpd

O monit possui um web server nativo que pode ser usado para
monitorar o serviço de forma mais amigável. Para que essa
interface gráfica fique disponível, as seguintes linhas devem ser
descomentadas:
set httpd port 2812 and
use address localhost # Somente aceita conexões a partir do localhost

allow localhost # Permite o localhost conectar ao server e

allow admin:monit # Requer o usuário admin e a senha monit

allow @monit # Permite que usuários do grupo “monit” conectem

allow @users readonly #Usuários do grupo “users” conectam readonly

A interface gráfica é acessada pela porta 2812;


http:nomedohost.com:2812

include
O monitrc pode incluir arquivos adicionais de configuração. Isso
ajuda a organizar e modularizar o código, podendo-se definir
um aquivo de configuração por serviço ou teste.
Exemplo:
include /etc/monit/conf.d/*

Neste exemplo de configuração, todos os aquivos com a


extensão .conf que estão dentro da pasta conf.d serão
carregados e executados pelo monit.

1.4 Exemplos de implementação


O primeiro passo para definir uma nova de configuração de
monitoramento é criar um novo arquivo com a extensão .conf na pasta
/etc/monit/conf.d . O nome deve ser único. Para iniciar a codificação, deve-
se definir que tipo de teste o monit deverá fazer e qual a ação ele irá
tomar. Os tipos de testes mais interessantes são:

CHECK PROCESS ;
CHECK FILE;
CHECK FILESYSTEM;
CHECK DIRECTORY ;
CHECK SYSTEM;
CHECK PROGRAM;

Os ações possíveis em situações de erro são:

Alert
Envia uma mensagem de alerta a cada mudança de status do
serviço.

Restart
Reinicia o serviço e envia uma mensagem de alerta. A
reinicialização é realizada chamando o método “stop” registrado na
configuração, seguido do método “start”.

Start
Inicia o serviço, chamando o método “start” registrado na
configuração.

Stop
Detém o serviço, chamando o método “stop” registrado nas
configuração.

Exec
Pode ser usado para executar um script e enviar um alerta. Nessa
ação é necessário declarar um shell script para a ação que se
deseja desempenhar.

Unmonitor
Desabilita o monitoramento do serviço e envia um alerta.

Sintaxe:
IF <TESTE> THEN <AÇÃO>
1.4.1 CHECK PROCESS

A opção CHECK PROCESS é útil para monitorar serviços que contém


scripts dentro da pasta /etc/init.d e que respondem aos comandos
start, stop e status.
Deve ser definido um nome único para o teste, e fornecer a localização
do aquivo contendo o identificador do processo (.pid). Por padrão, os
arquivos com extensão .pid ficam dentro da pasta /var/run.
Para que o monit possa iniciar ou reiniciar os serviços, deve ser
fornecido o caminho completo do script do serviço na pasta /etc/conf.d,
junto ao comando “start” e “stop”.

Sintaxe:

CHECK PROCESS <nome único> <PIDFILE <path> >

Exemplo:

check process apache with pidfile /var/run/apache2/apache2.pid


start program = "/etc/init.d/apache2 start"
stop program = "/etc/init.d/apache2 stop"

1.4.2 CHECK FILE

Com o CHECK FILE é possível monitorar aquivos, verificando itens como


mudanças no checksum (arquivo alterado), permissões, tamanho
limite, mudança de proprietário do arquivo ou mudança de grupos que
tem acesso ao arquivo. É necessário passar um nome único e o
caminho completo do aquivos que se deseja monitorar.

Sintaxe:
CHECK FILE <nome único> PATH <path>

Exemplo:

check file cron_rc with path /etc/init.d/cron


if failed checksum then unmonitor
if failed permission 755 then unmonitor
if failed uid root then unmonitor
if failed gid root then unmonitor

1.4.3 CHECK FILESYSTEM

A opção CHECK FILESYSTEM pode ser usada para detectar mudanças


no sistema de arquivos, como quando o disco se torna read-only por
causa de erros, ou quando uma flag de montagem de partições se
altera. Testes mais comuns também são possíveis, como análise do
espaço total usado pelo filesystem analisado.
É necessário fornecer um nome único e o caminho completo para o
sistema de arquivos.

Sintaxe:
CHECK FILESYSTEM <nome único> PATH <path>

Exemplo:
check filesystem rootfs with path /

if space usage > 50% then exec /scripts/logCleaning.sh


1.4.4 CHECK DIRECTORY

Com essa opção é possível fazer testes em diretórios, analisando sua


existência, permissões, timestamps, proprietários e grupos.
É necessário fornecer um nome único e o caminho completo para o
sistema de arquivos.

Sintaxe:
CHECK DIRECTORY <nome único> PATH <path>

Exemplo:

check directory mkdirNewFolder with path /app/cache/

if does not exist then exec "/bin/bash -c 'mkdir /app/cache/'"

if failed permission 777

then exec "/bin/chmod 777 /app/cache/ -R"

Neste exemplo, o primeiro teste está requisitando que o interpretador de


comandos BASH execute o comando mkdir. O segundo teste usa o
programa chmod diretamente para dar permissões para o diretório, caso
ele não as tenha.

1.4.5 CHECK SYSTEM

Os testes de CHECK SYSTEM podem monitorar os recursos globais do


sistema, como percentual de utilização do processador, percentual de
memória SWAP e RAM, numero de processos rodando no sistema. Etc.
É necessário fornecer um nome único e o caminho completo para o
sistema de arquivos.

Sintaxe:
CHECK SYSTEM <nome único>

Exemplo:
check system localhost

if memory usage > 50 GB then exec /scripts/restartServices.sh

Neste exemplo, se o total de memória utilizada pelo sistema for maior


do que 50 gigabytes, o monit irá executar um script que reinicia todos
os serviços, liberando memória RAM.

1.4.6 CHECK PROGRAM

CHECK PROGRAM possibilita testar o status de saída de um programa


ou script.
O programa sera executado prodicamente. Se o status de saída não
condizer com o resultado esperado, ou seja, o valor 0, o monit enviará
um alerta. Por convenção, o valor 0 significa que o programa finalizou
normalmente.

Sintaxe:
CHECK PROGRAM <nome único> PATH <arquivo executável>

Exemplo:
check program checkErrors with path /scripts/userDB.sh
if status != 0 then exec /scripts/remove.sh

O exemplo monitora um script chamado userDB.sh. Esse script faz


uma varredura no banco de dados, procurando por registros com
alguma anomalia. Quando um registro é encontrado, o status de saída
do programa sera diferente de zero, o que causará a execução do
segundo script, remove.sh, que eliminará esse registro do banco de
dados.

1.5 Inicializando

Depois dos arquivos de configuração terem sido escritos, é necessário


carregar essas novas configurações. Isso é feito através dos comandos:
service monit reload
service monit restart

Outro comando importante para monitorar o status do serviço é o validate:

monit validate -vv

Esse comando faz com que o monit confira todos os serviços, e inicie caso
não esteja em execução. Se algum dos teste falhar, será mostrado na
mesma hora. O parâmetro “-vv” significa que devem ser mostrados todos
os detalhes dos serviços (very verbose).
Outros comandos úteis:
service monit status
monit –-help
service monit stop
service monit start
1.6 Implementação nos servidores

1.6.1 Adnitro

Crontab
check process cron with pidfile /var/run/crond.pid

group system

start program = "/etc/init.d/cron start"

stop program = "/etc/init.d/cron stop"

depends on cron_rc

check file cron_rc with path /etc/init.d/cron

group system

if failed checksum then unmonitor

if failed permission 755 then unmonitor

if failed uid root then unmonitor

if failed gid root then unmonitor

Remoção de logs:
check filesystem rootfs with path /

if space usage > 50% then exec /var/www/logCleaning.sh

Gerenciamento de memória:
check system localhost

if memory usage > 50 GB then exec /var/www/restartServices.sh


Monitoramento de serviços:
check process nginx with pidfile /var/run/nginx.pid

start program = "/etc/init.d/nginx start"

stop program = "/etc/init.d/nginx stop"

check process apache with pidfile /var/run/apache2.pid

start program = "/etc/init.d/apache2 start"

stop program = "/etc/init.d/apache2 stop"

check process mysql with pidfile /var/run/mysqld/mysqld.pid

start program = "/etc/init.d/mysql start"

stop program = "/etc/init.d/mysql stop"

Permissões em pastas:
check directory permissionImages with path /var/www/openx/
www/admin/assets/images/

if failed permission 777

then exec "/bin/chmod 777 /var/www/openx/www/admin/

assets/images/ -R"

check directory permissionTmp with path /tmp/

if failed permission 777

then exec "/bin/chmod 777 /tmp/ -R"

Reinicialização dos serviços:


check process apacheUptime with pidfile /var/run/apache2.pid

every "0-59 10 * * *"

if uptime > 6 hours then exec /var/www/restartServices.sh


1.6.2 Countly

Remoçao de logs:
check filesystem rootfs with path /

if space usage > 50% then exec /var/www/logCleaning.sh

Monitoramento de serviços:
check process nginx with pidfile /var/run/nginx.pid

start program = "/etc/init.d/nginx start"

stop program = "/etc/init.d/nginx stop"

check process mongo with pidfile /var/lib/mongodb/mongod.lock

start program = "/etc/init.d/mongod start"

stop program = "/etc/init.d/mongod stop"

check process node with pidfile /var/log/supervisord.pid

start program = "/bin/bash -c 'service countly-supervisor start'"

stop program = "/bin/bash -c 'service countly-supervisor stop'"

Reinicialização dos serviços:


check process nginxUptime with pidfile /var/run/nginx.pid

start program = "/etc/init.d/nginx start"

stop program = "/etc/init.d/nginx stop"

every "0-59 10 * * *"

if uptime > 6 hours then restart

check process mongoUptime with pidfile /var/lib/mongodb/mongod.lock

start program = "/etc/init.d/mongod start"

stop program = "/etc/init.d/mongod stop"

every "0-59 10 * * *"

if uptime > 6 hours then restart


check process nodeUptime with pidfile /var/log/supervisord.pid

start program = "/bin/bash -c 'service countly-supervisor start'"

stop program = "/bin/bash -c 'service countly-supervisor stop'"

every "0-59 10 * * *"

if uptime > 6 hours then restart

1.6.3 Natura

Remoçao de logs:
check filesystem rootfs with path /
if space usage > 50% then exec /var/www/logCleaning.sh

Monitoramento de serviços:
check process apache with pidfile /var/run/httpd/httpd.pid

start program = "/etc/init.d/httpd start"

stop program = "/etc/init.d/httpd stop"

Reinicialização dos serviços:


check process apacheUptime with pidfile /var/run/httpd/httpd.pid

start program = "/etc/init.d/httpd start"

stop program = "/etc/init.d/httpd stop"

every "15-59 10 * * *"

if uptime > 6 hours then restart


1.6.4 Load balancer

Remoçao de logs:
check filesystem rootfs with path /

if space usage > 50% then exec /var/logCleaning.sh

Monitoramento de serviços:
check process haproxy with pidfile /var/run/haproxy.pid

start program = "/bin/bash -c 'service haproxy start'"

stop program = "/bin/bash -c 'service haproxy stop'"

Reinicialização dos serviços:


check process haproxyUptime with pidfile /var/run/haproxy.pid

start program = "/bin/bash -c 'service haproxy start'"

stop program = "/bin/bash -c 'service haproxy stop'"

every "15-59 10 * * *"

if uptime > 6 hours then restart


1.6.5 Portal libre:

Monitoramento de serviços:
check process apache with pidfile /var/run/apache2/apache2.pid

start program = "/etc/init.d/apache2 start"

stop program = "/etc/init.d/apache2 stop"

if failed host 127.0.0.1 port 80 then restart

check process nginx with pidfile /var/run/nginx.pid

start program = "/etc/init.d/nginx start"

stop program = "/etc/init.d/nginx stop"

Permissões em pastas:
check directory mkdirCaheSymfony with path /var/www/portallibre-
v2/app/cache/

if does not exist then exec "/bin/bash -c 'mkdir /var/www/portallibre-


v2/app/cache/'"

check directory cacheSymfony with path /var/www/portallibre-v2/app/cache/

if failed permission 777

then exec "/bin/chmod 777 /var/www/portallibre-v2/app/cache/"

Remoçao de logs:
check filesystem rootfs with path /

if space usage > 50% then exec /var/www/logCleaning.sh


Reinicialização dos serviços:
check process nginxUptime with pidfile /var/run/nginx.pid
start program = "/etc/init.d/nginx start"
stop program = "/etc/init.d/nginx stop"
every "10-20 10 * * *"
if uptime > 6 hours then restart

check process apacheUptime with pidfile /var/run/apache2/apache2.pid


start program = "/etc/init.d/apache2 start"
stop program = "/etc/init.d/apache2 stop"
every "0-10 10 * * *"
if uptime > 6 hours then restart

1.6.6 Godzilla:

Limitar tamanho da collection accessLog


check program checkAccessLog with path /var/www/scripts /checkAccessLog.sh

if status != 0 then exec /var/www/scripts/renameAccessLog.sh

Limitar tamanho da collection userTrafficBytes


check program checkTrafficBytes with path /var/www/scripts/checkTrafficBytes.sh

if status != 0 then exec /var/www/scripts/renameTrafficBytes.sh

Permissões em pastas:
check directory mkdirCacheSymfony with path /var/www/smt/app/cache/

if does not exist then exec "/bin/bash -c 'mkdir /var/www/smt/app/cache/'"

check directory cacheSymfony with path /var/www/smt/app/cache/

if failed permission 777


then exec "/bin/chmod 777 /var/www/smt/app/cache/ -R"

depends on mkdirCacheSymfony

Crontab:
check process cron with pidfile /var/run/crond.pid

group system

start program = "/etc/init.d/cron start"

stop program = "/etc/init.d/cron stop"

depends on cron_rc

check file cron_rc with path /etc/init.d/cron

group system

if failed checksum then unmonitor

if failed permission 755 then unmonitor

if failed uid root then unmonitor

if failed gid root then unmonitor

Remoçao de logs:
check filesystem rootfs with path /

if space usage > 50% then exec /var/www/scripts/logCleaning.sh

Monitoramento de memória:
check system localhost

if memory usage > 50 GB then exec /var/www/scripts/restartServices.sh

Monitorar anomalias nos registros de usuários:


check program nocurrent with path /var/www/scripts/noCurrent.sh

if status != 0 then exec /var/www/scripts/noCurrentDelete.sh


Monitoramento de serviços:
check process nginx with pidfile /var/run/nginx.pid

start program = "/etc/init.d/nginx start"

stop program = "/etc/init.d/nginx stop"

check process php5 with pidfile /var/run/php5-fpm.pid

start program = "/etc/init.d/php5-fpm start"

stop program = "/etc/init.d/php5-fpm stop"

check process mysql with pidfile /var/run/mysqld/mysqld.pid

start program = "/etc/init.d/mysql start"

stop program = "/etc/init.d/mysql stop"

check process mongo with pidfile /var/run/mongodb.pid

start program = "/etc/init.d/mongod start"

stop program = "/etc/init.d/mongod stop"

Reinicialização dos serviços:


check process uptime with pidfile /var/run/mongodb.pid

every "0-59 10 * * *"

if uptime > 6 hours then exec /var/www/scripts/restartServices.sh

1.6.7 Operations:

Permissões em pastas:
check directory mkdirCaheSymfony with path /var/www/manager-dev/app/cache

if does not exist then exec "/bin/bash -c 'mkdir /var/www/manager-dev/app/cache'"

check directory cacheSymfony with path /var/www/manager-dev/app/cache

if failed permission 777


then exec "/bin/chmod 777 /var/www/manager-dev/app/cache -R"

Crontab
check process cron with pidfile /var/run/crond.pid

group system

start program = "/etc/init.d/cron start"

stop program = "/etc/init.d/cron stop"

depends on cron_rc

check file cron_rc with path /etc/init.d/cron

group system

if failed checksum then unmonitor

if failed permission 755 then unmonitor

if failed uid root then unmonitor

if failed gid root then unmonitor

Remoçao de logs:
check filesystem rootfs with path /

if space usage > 50% then exec /var/www/logCleaning.sh

Monitoramento de serviços:
check process apache with pidfile /var/run/apache2.pid

start program = "/etc/init.d/apache2 start"

stop program = "/etc/init.d/apache2 stop"

if failed host 174.129.209.254 port 27017 then restart

check process dropbox with pidfile /root/.dropbox/dropbox.pid

start program = "/root/bin/dropbox.py start"

stop program = "/root/bin/dropbox.py stop"


Reinicialização dos serviços:
check process apacheUptime with pidfile /var/run/apache2.pid

start program = "/etc/init.d/apache2 start"

stop program = "/etc/init.d/apache2 stop"

every "15-59 10 * * *"

if uptime > 6 hours then restart

1.6.8 Freezone:

Crontab:
check process cron with pidfile /var/run/crond.pid

group system

start program = "/etc/init.d/cron start"

stop program = "/etc/init.d/cron stop"

depends on cron_rc

check file cron_rc with path /etc/init.d/cron

group system

if failed checksum then unmonitor

if failed permission 755 then unmonitor

if failed uid root then unmonitor

if failed gid root then unmonitor

Remoçao de logs:
check filesystem rootfs with path /

if space usage > 50% then exec /var/www/logCleaning.sh


Monitoramento de serviços:
check process apache with pidfile /var/run/apache2/apache2.pid

start program = "/etc/init.d/apache2 start"

stop program = "/etc/init.d/apache2 stop"

if failed host 127.0.0.1 port 27017 then restart

if failed host 127.0.0.1 port 3306 then restart

check process mysql with pidfile /var/run/mysqld/mysqld.pid

start program = "/bin/bash -c 'service mysql start'"

stop program = "/bin/bash -c 'service mysql stop'"

check process mongo with pidfile /data/mongod.lock

start program = "/bin/bash -c 'service mongod start'"

stop program = "/bin/bash -c 'service mongod stop'"

Reinicialização dos serviços:


check process mysqlUptime with pidfile /var/run/mysqld/mysqld.pid

start program = "/bin/bash -c 'service mysql start'"

stop program = "/bin/bash -c 'service mysql stop'"

every "5-59 10 * * *"

if uptime > 6 hours then restart

check process apacheUptime with pidfile /var/run/apache2.pid

start program = "/etc/init.d/apache2 start"

stop program = "/etc/init.d/apache2 stop"

every "15-59 10 * * *"

if uptime > 6 hours then restart

check process mongoUptime with pidfile /data/mongod.lock

start program = "/bin/bash -c 'service mongod start'"

stop program = "/bin/bash -c 'service mongod stop'"


every "0-59 10 * * *"

if uptime > 6 hours then restart

1.6.9 Kraken:

Remoçao de logs:
check filesystem rootfs with path /

if space usage > 50% then exec /var/www/logCleaning.sh

Monitoramento de serviços:
check process mysql with pidfile /var/run/mysqld/mysqld.pid

start program = "/etc/init.d/mysql start"

stop program = "/etc/init.d/mysql stop"

check process squid with pidfile /var/run/squid.pid

start program = "/etc/init.d/squid start"

stop program = "/etc/init.d/squid stop"

if failed host 10.1.3.198 port 3306 then restart

1.6.10 Load Balancer Squid:

Remoçao de logs:
check filesystem rootfs with path /

if space usage > 50% then exec /var/logCleaning.sh

Monitoramento de serviços:
check process haproxy with pidfile /var/run/haproxy.pid

start program = "/bin/bash -c 'service haproxy start'"

stop program = "/bin/bash -c 'service haproxy stop'"

Reinicialização dos serviços:


check process haproxyUptime with pidfile /var/run/haproxy.pid

start program = "/bin/bash -c 'service haproxy start'"

stop program = "/bin/bash -c 'service haproxy stop'"

every "15-59 12 * * *"


if uptime > 6 hours then restart

1.6.11 Gohan:

Permissões em pastas:
check directory mkdirCacheSymfony with path /var/www/smt/app/cache/

if does not exist then exec "/bin/bash -c 'mkdir /var/www/smt/app/cache/'"

check directory cacheSymfony with path /var/www/smt/app/cache/

if failed permission 777


then exec "/bin/chmod 777 /var/www/smt/app/cache/ -R"

depends on mkdirCacheSymfony

Remoçao de logs:
check filesystem rootfs with path /

if space usage > 50% then exec /var/www/scripts/logCleaning.sh

Monitoramento de serviços:
check process nginx with pidfile /var/run/nginx.pid

start program = "/etc/init.d/nginx start"

stop program = "/etc/init.d/nginx stop"

check process php5 with pidfile /var/run/php5-fpm.pid

start program = "/etc/init.d/php5-fpm start"

stop program = "/etc/init.d/php5-fpm stop"

Reinicialização dos serviços:


check process uptime with pidfile /var/run/nginx.pid

every "0-59 10 * * *"

if uptime > 6 hours then exec /var/www/scripts/restartServices.sh


1.6.12 Goten:

Permissões em pastas:
check directory mkdirCacheSymfony with path /var/www/smt/app/cache/

if does not exist then exec "/bin/bash -c 'mkdir /var/www/smt/app/cache/'"

check directory cacheSymfony with path /var/www/smt/app/cache/

if failed permission 777

then exec "/bin/chmod 777 /var/www/smt/app/cache/ -R"

depends on mkdirCacheSymfony

Remoçao de logs:
check filesystem rootfs with path /

if space usage > 50% then exec /var/www/scripts/logCleaning.sh

Monitoramento de serviços:
check process nginx with pidfile /var/run/nginx.pid

start program = "/etc/init.d/nginx start"

stop program = "/etc/init.d/nginx stop"

check process php5 with pidfile /var/run/php5-fpm.pid

start program = "/etc/init.d/php5-fpm start"

stop program = "/etc/init.d/php5-fpm stop"

Reinicialização dos serviços:


check process uptime with pidfile /var/run/nginx.pid

every "0-59 10 * * *"

if uptime > 6 hours then exec /var/www/scripts/restartServices.sh


2 Backups
2.1 Introdução

Para proteger os dados e arquivos de eventuais falhas do sistema, se faz


necessário o processo de backup diário de banco de dados e imagens.
Para essa tarefa é usado o serviço de armazenamento escalonável da
Amazon (Amazon Storage S3), em conjunto com a ferramenta s3cmd, que
gerencia o envio de arquivos ao Storage S3.
A automatização do processo é feita através um script na linguagem shell.
O script deve conter o comando para exportar banco de dados (DUMP) ,e
comandos para compactação (TAR). Depois de compactado, uma copia do
arquivo gerado pelo dump pode ser enviado ao Storage S3. Para prevenir
a perda de dados no envio, são mantidos arquivos de backups de três dias
anteriores dentro do próprio servidor onde fica o banco de dados. Depois
desses três dias o arquivo será excluido.

2.2 Instalação
sudo apt-get install s3cmd

2.3 Configuração
Depois da instalação, é necessário configurar o s3cmd, passando o access-
key e o secret-key.

S3cmd –-configure
2.4 Exemplo de como implementar um script de backup

Os passos para definir um novo arquivo de backup são os seguintes:

a) Criar um novo arquivo com a extensão .sh

touch backup.sh

b) Dar permissão de execução para este arquivo:

chmod +x backup.sh

c)Na primeira linha do programa, definir o interpretador de comandos


padrão:

#!/bin/bash
d) Instanciar uma data e guardar em uma variável. Ela sará concatenada
ao nome do arquivo, para facilitar a identificação e criar um nome único.

DATA=$(date +"%Y-%m-%d")

e)Exportar o banco de dados, armazenando os dados em arquivos binários.

Mongodb:
mongodump --host localhost:27017 -d nome_do_banco --out
"caminho/para/o/dump/nome_arquivo-$DATA"

Mysql:
mysqldump --host=localhost --user=root --password=root
nomeDoBanco > "$DATA-nome_arquivo.sql"
e)Compactar os arquivos gerados pelo dump:

tar -zcf "/caminho/destino/$DATA-


nome_arquivo_compactado.tar.gz" "$DAT-nomearquivo.sql"

f)Remover arquivo gerado pelo dump, que gerou o arquivo compactado:

rm -rf "$DATA-nomearquivo.sql"

g)Enviar o arquivo compactado para o serviço de armazenamento da


amazon:

s3cmd put $DATA-nome_arquivo.tar.gz s3://nome.do.bucket/


$DATA-nome_arquivo.tar.gz

h)Criar uma condição especial para manter os backups dos últimos três
dias dentro do servidor:

THREEDAYSAGO=$(date --date=@$(( $(date --date=$DATA +


%s) - 259200 )) +'%Y-%m-%d')

rm -rf "/caminho/para/o/arquivo/$THREEDAYSAGO-
nome_arquivo.tar.gz"
i)No backup das collections de log do mongodb (accessLog, clickLog, log e
userLog) é necessário um procedimento para manter apenas os registros
mais recentes, eliminando as collections datadas de um mês atrás.
MONTHAGO=$(date --date=@$(( $(date --date=$DATA +%s) -
2592000 )) +'%Y-%m-%d')

mongo cw_log --eval "db['logs_$MONTHAGO'].drop()"

2.5 Scripts :

2.5.1 Adnitro

Backup mysql;
#!/bin/bash

NOW=$(date +"%Y-%m-%d")

mysqldump --host=localhost --user=root --password=root adserver > "$NOW-


dump.sql"

tar -zcf "/bkp/adnitro/$NOW-dumpContenedor.tar.gz" "$NOW-dump.sql"

rm -rf "$NOW-dump.sql"

/usr/bin/s3cmd put /bkp/adnitro/$NOW-dumpContenedor.tar.gz s3://adnitro/$NOW-


dumpContenedor.tar.gz

THREEDAYSAGO=$(date --date=@$(( $(date --date=$NOW +%s) - 259200 ))


+'%Y-%m-%d')

rm -rf "/bkp/adnitro/$THREEDAYSAGO-dumpContenedor.tar.gz"
Backp banners

#!/bin/bash

NOW=$(date +"%Y-%m-%d");

cp -rf /var/www/openx/mobile /bkp/adnitro/

tar -zcf "/bkp/adnitro/AdnitroContenedor-$NOW-BKP.tar.gz" "/bkp/adnitro/mobile";

rm -rf "/bkp/adnitro/mobile";

/usr/bin/s3cmd put /bkp/adnitro/AdnitroContenedor-$NOW-BKP.tar.gz


s3://adnitro.images/AdnitroContenedor-$NOW-BKP.tar.gz

THREEDAYSAGO=$(date --date=@$(( $(date --date=$NOW +%s) - 259200 ))


+'%Y-%m-%d')

rm -rf "/bkp/adnitro/AdnitroContenedor-$THREEDAYSAGO-BKP.tar.gz"
2.5.2 Godzilla

Backup cw_log
#!/bin/bash

if [ -z "$1" ]

then

NOW="$(date "+%Y-%m-%d" -d "1 days ago")"

else

NOW="$1"

fi

mongodump --host localhost:27017 --out "bkp/GLOBAL/logs_$NOW-GLOBAL"


--collection "logs_$NOW" --db cw_log

tar -zcf "bkp/GLOBAL/logs_$NOW-GLOBAL.tar.gz" "bkp/GLOBAL/logs_$NOW-


GLOBAL"

rm -rf "bkp/GLOBAL/logs_$NOW-GLOBAL"

/usr/bin/s3cmd put "bkp/GLOBAL/logs_$NOW-GLOBAL.tar.gz"


s3://ano.2015.logs/logs_$NOW-GLOBAL.tar.gz

if [ -z "$1" ]

then

THREEDAYSAGO=$(date --date=@$(( $(date --date=$NOW +%s) - 259200 ))


+'%Y-%m-%d')

rm -rf "bkp/GLOBAL/logs_$THREEDAYSAGO-GLOBAL.tar.gz"

else

rm -rf "bkp/GLOBAL/logs_$NOW-GLOBAL.tar.gz"

fi

if [ -z "$1" ]

then

MONTHAGO=$(date --date=@$(( $(date --date=$NOW +%s) - 2592000 )) +'%Y-


%m-%d')

mongo cw_log --eval "db['logs_$MONTHAGO'].drop()"

else

mongo cw_log --eval "db['logs_$NOW'].drop()"

fi
Backup cw_do_log :
#!/bin/bash

if [ -z "$1" ]

then

NOW="$(date "+%Y-%m-%d" -d "1 days ago")"

else

NOW="$1"

fi

mongodump --host localhost:27017 --out "bkp/DO/accessCount_$NOW-DO"


--collection "accessCount_$NOW" --db cw_do_log

mongodump --host localhost:27017 --out "bkp/DO/clickLog_$NOW-DO" --collection


"clickLog_$NOW" --db cw_do_log

mongodump --host localhost:27017 --out "bkp/DO/logs_$NOW-DO" --collection


"logs_$NOW" --db cw_do_log

mongodump --host localhost:27017 --out "bkp/DO/userLog_$NOW-DO" --collection


"userLog_$NOW" --db cw_do_log

tar -zcf "bkp/DO/accessCount_$NOW-DO.tar.gz" "bkp/DO/accessCount_$NOW-DO"

tar -zcf "bkp/DO/clickLog_$NOW-DO.tar.gz" "bkp/DO/clickLog_$NOW-DO"

tar -zcf "bkp/DO/logs_$NOW-DO.tar.gz" "bkp/DO/logs_$NOW-DO"

tar -zcf "bkp/DO/userLog_$NOW-DO.tar.gz" "bkp/DO/userLog_$NOW-DO"

rm -rf "bkp/DO/accessCount_$NOW-DO"

rm -rf "bkp/DO/clickLog_$NOW-DO"

rm -rf "bkp/DO/logs_$NOW-DO"

rm -rf "bkp/DO/userLog_$NOW-DO"

/usr/bin/s3cmd put "bkp/DO/accessCount_$NOW-DO.tar.gz"


s3://ano.2015.shots.do/accessCount_$NOW-DO.tar.gz

/usr/bin/s3cmd put "bkp/DO/clickLog_$NOW-DO.tar.gz"


s3://ano.2015.shots.do/clickLog_$NOW-DO.tar.gz

/usr/bin/s3cmd put "bkp/DO/logs_$NOW-DO.tar.gz"


s3://ano.2015.shots.do/logs_$NOW-DO.tar.gz

/usr/bin/s3cmd put "bkp/DO/userLog_$NOW-DO.tar.gz"


s3://ano.2015.shots.do/userLog_$NOW-DO.tar.gz
if [ -z "$1" ]

then

THREEDAYSAGO=$(date --date=@$(( $(date --date=$NOW +%s) - 259200 ))


+'%Y-%m-%d')

rm -rf "bkp/DO/accessCount_$THREEDAYSAGO-DO.tar.gz"

rm -rf "bkp/DO/clickLog_$THREEDAYSAGO-DO.tar.gz"

rm -rf "bkp/DO/logs_$THREEDAYSAGO-DO.tar.gz"

rm -rf "bkp/DO/userLog_$THREEDAYSAGO-DO.tar.gz"

else

rm -rf "bkp/DO/accessCount_$NOW-DO.tar.gz"

rm -rf "bkp/DO/clickLog_$NOW-DO.tar.gz"

rm -rf "bkp/DO/logs_$NOW-DO.tar.gz"

rm -rf "bkp/DO/userLog_$NOW-DO.tar.gz"

fi

if [ -z "$1" ]

then

MONTHAGO=$(date --date=@$(( $(date --date=$NOW +%s) - 2592000 )) +'%Y-


%m-%d')

mongo cw_do_log --eval "db['accessCount_$MONTHAGO'].drop()"

mongo cw_do_log --eval "db['clickLog_$MONTHAGO'].drop()"

mongo cw_do_log --eval "db['logs_$MONTHAGO'].drop()"

mongo cw_do_log --eval "db['userLog_$MONTHAGO'].drop()"

else

mongo cw_do_log --eval "db['accessCount_$NOW'].drop()"

mongo cw_do_log --eval "db['clickLog_$NOW'].drop()"

mongo cw_do_log --eval "db['logs_$NOW'].drop()"

mongo cw_do_log --eval "db['userLog_$NOW'].drop()"

fi
Backup cw_ec_log:

#!/bin/bash

if [ -z "$1" ]

then

NOW="$(date "+%Y-%m-%d" -d "1 days ago")"

else

NOW="$1"

fi

mongodump --host localhost:27017 --out "bkp/EC/accessCount_$NOW-EC"


--collection "accessCount_$NOW" --db cw_ec_log

mongodump --host localhost:27017 --out "bkp/EC/clickLog_$NOW-EC" --collection


"clickLog_$NOW" --db cw_ec_log

mongodump --host localhost:27017 --out "bkp/EC/logs_$NOW-EC" --collection


"logs_$NOW" --db cw_ec_log

mongodump --host localhost:27017 --out "bkp/EC/userLog_$NOW-EC" --collection


"userLog_$NOW" --db cw_ec_log

tar -zcf "bkp/EC/accessCount_$NOW-EC.tar.gz" "bkp/EC/accessCount_$NOW-EC"

tar -zcf "bkp/EC/clickLog_$NOW-EC.tar.gz" "bkp/EC/clickLog_$NOW-EC"

tar -zcf "bkp/EC/logs_$NOW-EC.tar.gz" "bkp/EC/logs_$NOW-EC"

tar -zcf "bkp/EC/userLog_$NOW-EC.tar.gz" "bkp/EC/userLog_$NOW-EC"

rm -rf "bkp/EC/accessCount_$NOW-EC"

rm -rf "bkp/EC/clickLog_$NOW-EC"

rm -rf "bkp/EC/logs_$NOW-EC"

rm -rf "bkp/EC/userLog_$NOW-EC"

/usr/bin/s3cmd put "bkp/EC/accessCount_$NOW-EC.tar.gz"


s3://ano.2015.shots.ec/accessCount_$NOW-EC.tar.gz

/usr/bin/s3cmd put "bkp/EC/clickLog_$NOW-EC.tar.gz"


s3://ano.2015.shots.ec/clickLog_$NOW-EC.tar.gz

/usr/bin/s3cmd put "bkp/EC/logs_$NOW-EC.tar.gz"


s3://ano.2015.shots.ec/logs_$NOW-EC.tar.gz

/usr/bin/s3cmd put "bkp/EC/userLog_$NOW-EC.tar.gz"


s3://ano.2015.shots.ec/userLog_$NOW-EC.tar.gz
if [ -z "$1" ]

then

THREEDAYSAGO=$(date --date=@$(( $(date --date=$NOW +%s) - 259200 ))


+'%Y-%m-%d')

rm -rf "bkp/EC/accessCount_$THREEDAYSAGO-EC.tar.gz"

rm -rf "bkp/EC/clickLog_$THREEDAYSAGO-EC.tar.gz"

rm -rf "bkp/EC/logs_$THREEDAYSAGO-EC.tar.gz"

rm -rf "bkp/EC/userLog_$THREEDAYSAGO-EC.tar.gz"

else

rm -rf "bkp/EC/accessCount_$NOW-EC.tar.gz"

rm -rf "bkp/EC/clickLog_$NOW-EC.tar.gz"

rm -rf "bkp/EC/logs_$NOW-EC.tar.gz"

rm -rf "bkp/EC/userLog_$NOW-EC.tar.gz"

fi

if [ -z "$1" ]

then

MONTHAGO=$(date --date=@$(( $(date --date=$NOW +%s) - 2592000 )) +'%Y-


%m-%d')

mongo cw_ec_log --eval "db['accessCount_$MONTHAGO'].drop()"

mongo cw_ec_log --eval "db['clickLog_$MONTHAGO'].drop()"

mongo cw_ec_log --eval "db['logs_$MONTHAGO'].drop()"

mongo cw_ec_log --eval "db['userLog_$MONTHAGO'].drop()"

else

mongo cw_ec_log --eval "db['accessCount_$NOW'].drop()"

mongo cw_ec_log --eval "db['clickLog_$NOW'].drop()"

mongo cw_ec_log --eval "db['logs_$NOW'].drop()"

mongo cw_ec_log --eval "db['userLog_$NOW'].drop()"

fi
Backup cw_ec_log:
#!/bin/bash

if [ -z "$1" ]

then

NOW="$(date "+%Y-%m-%d" -d "1 days ago")"

else

NOW="$1"

mongodump --host localhost:27017 --out "bkp/MX/accessCount_$NOW-MX"


-collection "accessCount_$NOW" --db cw_mx_log

mongodump --host localhost:27017 --out "bkp/MX/clickLog_$NOW-MX" --collection


"clickLog_$NOW" --db cw_mx_log

mongodump --host localhost:27017 --out "bkp/MX/logs_$NOW-MX" --collection


"logs_$NOW" --db cw_mx_log

mongodump --host localhost:27017 --out "bkp/MX/userLog_$NOW-MX" --collection


"userLog_$NOW" --db cw_mx_log

tar -zcf "bkp/MX/accessCount_$NOW-MX.tar.gz" "bkp/MX/accessCount_$NOW-MX"

tar -zcf "bkp/MX/clickLog_$NOW-MX.tar.gz" "bkp/MX/clickLog_$NOW-MX"

tar -zcf "bkp/MX/logs_$NOW-MX.tar.gz" "bkp/MX/logs_$NOW-MX"

tar -zcf "bkp/MX/userLog_$NOW-MX.tar.gz" "bkp/MX/userLog_$NOW-MX"


rm -rf "bkp/MX/accessCount_$NOW-MX"

rm -rf "bkp/MX/clickLog_$NOW-MX"

rm -rf "bkp/MX/logs_$NOW-MX"

rm -rf "bkp/MX/userLog_$NOW-MX"

/usr/bin/s3cmd put "bkp/MX/accessCount_$NOW-MX.tar.gz"


s3://ano.2015.shots.mx/accessCount_$NOW-MX.tar.gz

/usr/bin/s3cmd put "bkp/MX/clickLog_$NOW-MX.tar.gz"


s3://ano.2015.shots.mx/clickLog_$NOW-MX.tar.gz

/usr/bin/s3cmd put "bkp/MX/logs_$NOW-MX.tar.gz"


s3://ano.2015.shots.mx/logs_$NOW-MX.tar.gz

/usr/bin/s3cmd put "bkp/MX/userLog_$NOW-MX.tar.gz"


s3://ano.2015.shots.mx/userLog_$NOW-MX.tar.gz
if [ -z "$1" ]

then

THREEDAYSAGO=$(date --date=@$(( $(date --date=$NOW +%s) - 259200 ))


+'%Y-%m-%d')

rm -rf "bkp/MX/accessCount_$THREEDAYSAGO-MX.tar.gz"

rm -rf "bkp/MX/clickLog_$THREEDAYSAGO-MX.tar.gz"

rm -rf "bkp/MX/logs_$THREEDAYSAGO-MX.tar.gz"

rm -rf "bkp/MX/userLog_$THREEDAYSAGO-MX.tar.gz"

eles

rm -rf "bkp/MX/accessCount_$NOW-MX.tar.gz"

rm -rf "bkp/MX/clickLog_$NOW-MX.tar.gz"

rm -rf "bkp/MX/logs_$NOW-MX.tar.gz"

rm -rf "bkp/MX/userLog_$NOW-MX.tar.gz"

if [ -z "$1" ]

then

MONTHAGO=$(date --date=@$(( $(date --date=$NOW +%s) - 2592000 )) +'%Y-


%m-%d')

mongo cw_mx_log --eval "db['accessCount_$MONTHAGO'].drop()"

mongo cw_mx_log --eval "db['clickLog_$MONTHAGO'].drop()"

mongo cw_mx_log --eval "db['logs_$MONTHAGO'].drop()"

mongo cw_mx_log --eval "db['userLog_$MONTHAGO'].drop()"

else

mongo cw_mx_log --eval "db['accessCount_$NOW'].drop()"

mongo cw_mx_log --eval "db['clickLog_$NOW'].drop()"

mongo cw_mx_log --eval "db['logs_$NOW'].drop()"

mongo cw_mx_log --eval "db['userLog_$NOW'].drop()"

fi
Backup cw_pe_log:

#!/bin/bash
if [ -z "$1" ]
then
NOW="$(date "+%Y-%m-%d" -d "1 days ago")"
else
NOW="$1"
fi
mongodump --host localhost:27017 --out "bkp/PE/accessCount_$NOW-PE"
--collection "accessCount_$NOW" --db cw_pe_log
mongodump --host localhost:27017 --out "bkp/PE/clickLog_$NOW-PE"
--collection "clickLog_$NOW" --db cw_pe_log
mongodump --host localhost:27017 --out "bkp/PE/logs_$NOW-PE"
--collection "logs_$NOW" --db cw_pe_log
mongodump --host localhost:27017 --out "bkp/PE/userLog_$NOW-PE"
--collection "userLog_$NOW" --db cw_pe_log
tar -zcf "bkp/PE/accessCount_$NOW-PE.tar.gz" "bkp/PE/accessCount_$NOW-
PE"
tar -zcf "bkp/PE/clickLog_$NOW-PE.tar.gz" "bkp/PE/clickLog_$NOW-PE"
tar -zcf "bkp/PE/logs_$NOW-PE.tar.gz" "bkp/PE/logs_$NOW-PE"
tar -zcf "bkp/PE/userLog_$NOW-PE.tar.gz" "bkp/PE/userLog_$NOW-PE"
rm -rf "bkp/PE/accessCount_$NOW-PE"
rm -rf "bkp/PE/clickLog_$NOW-PE"
rm -rf "bkp/PE/logs_$NOW-PE"
rm -rf "bkp/PE/userLog_$NOW-PE"
echo 'Remoção OK'
/usr/bin/s3cmd put "bkp/PE/accessCount_$NOW-PE.tar.gz"
s3://ano.2015.shots.pe/accessCount_$NOW-PE.tar.gz
/usr/bin/s3cmd put "bkp/PE/clickLog_$NOW-PE.tar.gz"
s3://ano.2015.shots.pe/clickLog_$NOW-PE.tar.gz
/usr/bin/s3cmd put "bkp/PE/logs_$NOW-PE.tar.gz"
s3://ano.2015.shots.pe/logs_$NOW-PE.tar.gz
/usr/bin/s3cmd put "bkp/PE/userLog_$NOW-PE.tar.gz"
s3://ano.2015.shots.pe/userLog_$NOW-PE.tar.gz
if [ -z "$1" ]
then
THREEDAYSAGO=$(date --date=@$(( $(date --date=$NOW +%s) -
259200 )) +'%Y-%m-%d')
rm -rf "bkp/PE/accessCount_$THREEDAYSAGO-PE.tar.gz"
rm -rf "bkp/PE/clickLog_$THREEDAYSAGO-PE.tar.gz"
rm -rf "bkp/PE/logs_$THREEDAYSAGO-PE.tar.gz"
rm -rf "bkp/PE/userLog_$THREEDAYSAGO-PE.tar.gz"
else
rm -rf "bkp/PE/accessCount_$NOW-PE.tar.gz"
rm -rf "bkp/PE/clickLog_$NOW-PE.tar.gz"
rm -rf "bkp/PE/logs_$NOW-PE.tar.gz"
rm -rf "bkp/PE/userLog_$NOW-PE.tar.gz"
fi
if [ -z "$1" ]
then
MONTHAGO=$(date --date=@$(( $(date --date=$NOW +%s) - 2592000 ))
+'%Y-%m-%d')
mongo cw_pe_log --eval "db['accessCount_$MONTHAGO'].drop()"
mongo cw_pe_log --eval "db['clickLog_$MONTHAGO'].drop()"
mongo cw_pe_log --eval "db['logs_$MONTHAGO'].drop()"
mongo cw_pe_log --eval "db['userLog_$MONTHAGO'].drop()"
else
mongo cw_pe_log --eval "db['accessCount_$NOW'].drop()"
mongo cw_pe_log --eval "db['clickLog_$NOW'].drop()"
mongo cw_pe_log --eval "db['logs_$NOW'].drop()"
mongo cw_pe_log --eval "db['userLog_$NOW'].drop()"
fi
Backup cw_do:

#!/bin/bash
NOW=$(date +"%Y-%m-%d")
mongodump --host localhost:27017 -d cw_do --out "bkp/DO/cw_do-$NOW"
tar -zcf "bkp/DO/cw_do-$NOW.tar.gz" "bkp/DO/cw_do-$NOW"
rm -rf "bkp/DO/cw_do-$NOW"
/usr/bin/s3cmd put "bkp/DO/cw_do-$NOW.tar.gz" s3://backup.do/cw_do-
$NOW.tar.gz
THREEDAYSAGO=$(date --date=@$(( $(date --date=$NOW +%s) -
259200 )) +'%Y-%m-%d')
rm -rf "bkp/DO/cw_do-$THREEDAYSAGO.tar.gz"

Backup do banco de dados cw_ec:

#!/bin/bash
NOW=$(date +"%Y-%m-%d")
mongodump --host localhost:27017 -d cw_ec --out "bkp/EC/cw_ec-$NOW"
tar -zcf "bkp/EC/cw_ec-$NOW.tar.gz" "bkp/EC/cw_ec-$NOW"
rm -rf "bkp/EC/cw_ec-$NOW"
/usr/bin/s3cmd put "bkp/EC/cw_ec-$NOW.tar.gz" s3://backup.ec/cw_ec-
$NOW.tar.gz
THREEDAYSAGO=$(date --date=@$(( $(date --date=$NOW +%s) -
259200 )) +'%Y-%m-%d')
rm -rf "/bkp/bkp/EC/cw_ec-$THREEDAYSAGO.tar.gz"
Backup do banco de dados cw_mx:

#!/bin/bash
NOW=$(date +"%Y-%m-%d")
mongodump --host localhost:27017 -d cw_mx --out "bkp/MX/cw_mx-$NOW"
tar -zcf "bkp/MX/cw_mx-$NOW.tar.gz" "bkp/MX/cw_mx-$NOW"
rm -rf "bkp/MX/cw_mx-$NOW"
/usr/bin/s3cmd put "bkp/MX/cw_mx-$NOW.tar.gz" s3://backup.mx/cw_mx-
$NOW.tar.gz
THREEDAYSAGO=$(date --date=@$(( $(date --date=$NOW +%s) -
259200 )) +'%Y-%m-%d')
rm -rf "/bkp/bkp/MX/cw_mx-$THREEDAYSAGO.tar.gz"

Backup cw_pe:
#!/bin/bash
NOW=$(date +"%Y-%m-%d")
mongodump --host localhost:27017 -d cw_pe --out "bkp/PE/cw_pe-$NOW"
tar -zcf "bkp/PE/cw_pe-$NOW.tar.gz" "bkp/PE/cw_pe-$NOW"
rm -rf "bkp/PE/cw_pe-$NOW"
/usr/bin/s3cmd put "bkp/PE/cw_pe-$NOW.tar.gz" s3://backup.pe/cw_pe-
$NOW.tar.gz
THREEDAYSAGO=$(date --date=@$(( $(date --date=$NOW +%s) -
259200 )) +'%Y-%m-%d')
rm -rf "bkp/PE/cw_pe-$THREEDAYSAGO.tar.gz"

Você também pode gostar