Escolar Documentos
Profissional Documentos
Cultura Documentos
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.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.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.2 Instalação
1.2.1 Apt-based
cd monit-5.14/
cp bin/monit /usr/bin/monit
mkdir /etc/monit
touch /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/
monit -t
1.3 Configurações
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
Exemplo:
set alert admin@clickwings.com only on { resource }
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
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/*
CHECK PROCESS ;
CHECK FILE;
CHECK FILESYSTEM;
CHECK DIRECTORY ;
CHECK SYSTEM;
CHECK PROGRAM;
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
Sintaxe:
Exemplo:
Sintaxe:
CHECK FILE <nome único> PATH <path>
Exemplo:
Sintaxe:
CHECK FILESYSTEM <nome único> PATH <path>
Exemplo:
check filesystem rootfs with path /
Sintaxe:
CHECK DIRECTORY <nome único> PATH <path>
Exemplo:
Sintaxe:
CHECK SYSTEM <nome único>
Exemplo:
check system localhost
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
1.5 Inicializando
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
depends on cron_rc
group system
Remoção de logs:
check filesystem rootfs with path /
Gerenciamento de memória:
check system localhost
Permissões em pastas:
check directory permissionImages with path /var/www/openx/
www/admin/assets/images/
assets/images/ -R"
Remoçao de logs:
check filesystem rootfs with path /
Monitoramento de serviços:
check process nginx with pidfile /var/run/nginx.pid
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
Remoçao de logs:
check filesystem rootfs with path /
Monitoramento de serviços:
check process haproxy with pidfile /var/run/haproxy.pid
Monitoramento de serviços:
check process apache with pidfile /var/run/apache2/apache2.pid
Permissões em pastas:
check directory mkdirCaheSymfony with path /var/www/portallibre-
v2/app/cache/
Remoçao de logs:
check filesystem rootfs with path /
1.6.6 Godzilla:
Permissões em pastas:
check directory mkdirCacheSymfony with path /var/www/smt/app/cache/
depends on mkdirCacheSymfony
Crontab:
check process cron with pidfile /var/run/crond.pid
group system
depends on cron_rc
group system
Remoçao de logs:
check filesystem rootfs with path /
Monitoramento de memória:
check system localhost
1.6.7 Operations:
Permissões em pastas:
check directory mkdirCaheSymfony with path /var/www/manager-dev/app/cache
Crontab
check process cron with pidfile /var/run/crond.pid
group system
depends on cron_rc
group system
Remoçao de logs:
check filesystem rootfs with path /
Monitoramento de serviços:
check process apache with pidfile /var/run/apache2.pid
1.6.8 Freezone:
Crontab:
check process cron with pidfile /var/run/crond.pid
group system
depends on cron_rc
group system
Remoçao de logs:
check filesystem rootfs with path /
1.6.9 Kraken:
Remoçao de logs:
check filesystem rootfs with path /
Monitoramento de serviços:
check process mysql with pidfile /var/run/mysqld/mysqld.pid
Remoçao de logs:
check filesystem rootfs with path /
Monitoramento de serviços:
check process haproxy with pidfile /var/run/haproxy.pid
1.6.11 Gohan:
Permissões em pastas:
check directory mkdirCacheSymfony with path /var/www/smt/app/cache/
depends on mkdirCacheSymfony
Remoçao de logs:
check filesystem rootfs with path /
Monitoramento de serviços:
check process nginx with pidfile /var/run/nginx.pid
Permissões em pastas:
check directory mkdirCacheSymfony with path /var/www/smt/app/cache/
depends on mkdirCacheSymfony
Remoçao de logs:
check filesystem rootfs with path /
Monitoramento de serviços:
check process nginx with pidfile /var/run/nginx.pid
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
touch backup.sh
chmod +x backup.sh
#!/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")
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:
rm -rf "$DATA-nomearquivo.sql"
h)Criar uma condição especial para manter os backups dos últimos três
dias dentro do servidor:
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')
2.5 Scripts :
2.5.1 Adnitro
Backup mysql;
#!/bin/bash
NOW=$(date +"%Y-%m-%d")
rm -rf "$NOW-dump.sql"
rm -rf "/bkp/adnitro/$THREEDAYSAGO-dumpContenedor.tar.gz"
Backp banners
#!/bin/bash
NOW=$(date +"%Y-%m-%d");
rm -rf "/bkp/adnitro/mobile";
rm -rf "/bkp/adnitro/AdnitroContenedor-$THREEDAYSAGO-BKP.tar.gz"
2.5.2 Godzilla
Backup cw_log
#!/bin/bash
if [ -z "$1" ]
then
else
NOW="$1"
fi
rm -rf "bkp/GLOBAL/logs_$NOW-GLOBAL"
if [ -z "$1" ]
then
rm -rf "bkp/GLOBAL/logs_$THREEDAYSAGO-GLOBAL.tar.gz"
else
rm -rf "bkp/GLOBAL/logs_$NOW-GLOBAL.tar.gz"
fi
if [ -z "$1" ]
then
else
fi
Backup cw_do_log :
#!/bin/bash
if [ -z "$1" ]
then
else
NOW="$1"
fi
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"
then
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
else
fi
Backup cw_ec_log:
#!/bin/bash
if [ -z "$1" ]
then
else
NOW="$1"
fi
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"
then
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
else
fi
Backup cw_ec_log:
#!/bin/bash
if [ -z "$1" ]
then
else
NOW="$1"
rm -rf "bkp/MX/clickLog_$NOW-MX"
rm -rf "bkp/MX/logs_$NOW-MX"
rm -rf "bkp/MX/userLog_$NOW-MX"
then
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
else
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"
#!/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"