Script de backup Graylog
Publicado por Leandro Rubert Jacomini (última atualização em 10/10/2017)
[ Hits: 5.604 ]
Homepage: Não tenho
Download 6704.backup_graylog.sh
Primeiro artigo escrito.
Espero que, para todos aqueles que estejam enfrentando a mesma dificuldade que eu, possam utilizar este script, adaptando-o para sua realidade. Eis um script para realizar o backup diário da base do Graylog.
Em nosso ambiente temos um volume muito alto de logs, e, mesmo não colocando todos os servidores para envia-los para o graylog, nosso volume é muito alto. Por esta razão, resolvemos separar a extração dos logs por intervalos críticos, de modo que o tempo de extração dos dados seja menor. Porém, para resolver esta questão e deixar um arquivo único, basta alterar a sessão "extrai()", retirando as linhas adicionais, e trocando o horário de extração para o período necessário ( "timestamp" : { "gte": "'`echo $DATADUMP`' 00:00:00.000", "lte": "'`echo $DATADUMP`' 09:59:59.999" ).
O arquivo "/etc/scripts/variaveis_graylog.cfg" contém variáveis usadas no script. Deve-se criá-lo de acordo com o ambiente de cada um, ou criar uma sessão no próprio script com esta finalidade (eu prefiro criar o arquivo ".cfg" pois posso utilizá-lo para outros scripts, editando-o de acordo com minha necessidade). Por esta razão, não coloquei o fonte deste arquivo, pois este é pessoal para cada ambiente.
Caso tenham alguma dúvida, ou sugestão, com relação ao script, favor entrar em contato comigo. Também sintam-se à vontade para editá-lo conforme a necessidade, porém gostaria apenas de que mantivessem a autoria do script, e incluissem abaixo as alterações efetuadas, no mesmo formato que o cabeçalho. Assim fica mais fácil de visualizar as alterações efetuadas.
Att.:
Leandro.
#!/bin/bash
#-------------------------------------------------------------------------------
# Data ..: 14/03/2017
# Autor .: Leandro Rubert Jacomini
# Funcao : Realizar o backup diario dos logs do elasticsearch e mongodb
#-------------------------------------------------------------------------------
# Extraindo base de dados
#-------------------------------------------------------------------------------
. /etc/scripts/variaveis_graylog.cfg # Variaveis usadas no script. Caso prefiram utilizar uma sessao para isso, basta inclui-la no corpo do script.
extrai(){
echo "+---------------------------------------+
| Extraindo Dados `date +%F" "%T` |
+---------------------------------------+" >>$LOG
"$ELASTICDUMP" --input=http://localhost:9200/"`echo $INDICE`" --output=$ --type=data --searchBody='{ "query": { "range": { "timestamp" : { "gte": "'`echo $DATADUMP`' 00:00:00.000", "lte": "'`echo $DATADUMP`' 09:59:59.999" }}}}' |$GZIP >> $BACKUPDIR"/"$DATADUMP"/"$ARQBKP"-00-10.DUMP.gz" &
sleep 1
"$ELASTICDUMP" --input=http://localhost:9200/"`echo $INDICE`" --output=$ --type=data --searchBody='{ "query": { "range": { "timestamp" : { "gte": "'`echo $DATADUMP`' 10:00:00.000", "lte": "'`echo $DATADUMP`' 11:59:59.999" }}}}' |$GZIP >> $BACKUPDIR"/"$DATADUMP"/"$ARQBKP"-10-12.DUMP.gz" &
sleep 1
"$ELASTICDUMP" --input=http://localhost:9200/"`echo $INDICE`" --output=$ --type=data --searchBody='{ "query": { "range": { "timestamp" : { "gte": "'`echo $DATADUMP`' 12:00:00.000", "lte": "'`echo $DATADUMP`' 13:59:59.999" }}}}' |$GZIP >> $BACKUPDIR"/"$DATADUMP"/"$ARQBKP"-12-14.DUMP.gz" &
sleep 1
"$ELASTICDUMP" --input=http://localhost:9200/"`echo $INDICE`" --output=$ --type=data --searchBody='{ "query": { "range": { "timestamp" : { "gte": "'`echo $DATADUMP`' 14:00:00.000", "lte": "'`echo $DATADUMP`' 15:59:59.999" }}}}' |$GZIP >> $BACKUPDIR"/"$DATADUMP"/"$ARQBKP"-14-16.DUMP.gz" &
sleep 1
"$ELASTICDUMP" --input=http://localhost:9200/"`echo $INDICE`" --output=$ --type=data --searchBody='{ "query": { "range": { "timestamp" : { "gte": "'`echo $DATADUMP`' 16:00:00.000", "lte": "'`echo $DATADUMP`' 17:59:59.999" }}}}' |$GZIP >> $BACKUPDIR"/"$DATADUMP"/"$ARQBKP"-16-18.DUMP.gz" &
sleep 1
"$ELASTICDUMP" --input=http://localhost:9200/"`echo $INDICE`" --output=$ --type=data --searchBody='{ "query": { "range": { "timestamp" : { "gte": "'`echo $DATADUMP`' 18:00:00.000", "lte": "'`echo $DATADUMP`' 20:59:59.999" }}}}' |$GZIP >> $BACKUPDIR"/"$DATADUMP"/"$ARQBKP"-18-21.DUMP.gz" &
sleep 1
"$ELASTICDUMP" --input=http://localhost:9200/"`echo $INDICE`" --output=$ --type=data --searchBody='{ "query": { "range": { "timestamp" : { "gte": "'`echo $DATADUMP`' 21:00:00.000", "lte": "'`echo $DATADUMP`' 23:59:59.999" }}}}' |$GZIP >> $BACKUPDIR"/"$DATADUMP"/"$ARQBKP"-21-24.DUMP.gz" &
while true
do
ps -wef |grep elasticdump |grep -v grep > /dev/null
st1=$?
if [ $st1 == 0 ]
then
sleep 60
continue
else
break
fi
done
echo "Finalizando processo de extracao `date +%T`" >>$LOG
}
#-------------------------------------------------------------------------------
# Funcao verifica datas
#-------------------------------------------------------------------------------
ver_datas(){
DATA=$(date +%F)
DIA=$(date +%d)
MES=$(date +%m)
ANO=$(date +%Y)
if [ "$DIA" == "01" ]
then
case $MES in
"05"|"07"|"10"|"12" )
DIA="30"
MES=`expr $MES - 1 |awk '{printf("%02d\n", $1);}'`
ANO="$ANO"
;;
"02"|"04"|"06"|"09"|"11"|"08" )
DIA="31"
MES=`expr $MES - 1 |awk '{printf("%02d\n", $1);}'`
ANO="$ANO"
;;
"01" )
DIA="31"
MES="12"
ANO=`expr $ANO - 1 |awk '{printf("%04d\n", $1);}'`
;;
"03" )
DIA="28"
MES=`expr $mes - 1 |awk '{printf("%02d\n", $1);}'`
ANO="$ANO"
;;
esac
else
ANO="$ANO"
MES=`echo $MES |awk '{printf("%02d\n", $1);}'`
DIA=`expr $DIA - 1 |awk '{printf("%02d\n", $1);}'`
fi
DATADUMP="$ANO-$MES-$DIA"
}
#-------------------------------------------------------------------------------
# Inicio do processo de extracao
#-------------------------------------------------------------------------------
# Declaracao de variaveis
#-------------------------------------------------------------------------------
INDICE=`curl -XGET -u $USER:$PASSWORD 'http://<Informe seu IP>:12900/system/deflector' |cut -d":" -f2|cut -d"\"" -f2`
LOG="/var/log/backup_graylog.log"
DIADEL="7"
#-------------------------------------------------------------------------------
echo "================================================================================
Iniciando processo de backup em `date +%F" "%T`
================================================================================" >> $LOG
curl -XPOST -u $USER:$PASSWORD 'http://<Informe seu IP>:12900/system/deflector/cycle' ### Rotacionando indice
ver_datas
ARQBKP="BACKUP_LOGSERVER_"$DATADUMP
echo "
Extrator ........: $ELASTICDUMP
Compactador .....: $GZIP
Basedir .........: $BASEDIR
Backupdir .......: $BACKUPDIR
Tmpdir ..........: $TMPDIR
Indice ..........: $INDICE
Data Hoje .......: $DATA
Data Dump .......: $DATADUMP
Arquivo Backup ..: $ARQBKP
------------------------------------------" >> $LOG
$MKDIR $BACKUPDIR"/"$DATADUMP
extrai
echo "================================================================================
Para recarregar a base, informar:
elasticdump --input=<path>/<arquivo> --output=http://localhost:9200/<indice> --type=data
================================================================================
Finalizando processo de backup em `date +%F" "%T`
============================================================" >> $LOG
Lisa - sistema de backup com rsync
Fazendo backup durante a semana em pastas distintas, equivalentes ao dia da semana
DriveTool.sh: um script para cópia rápida e segura de arquivos para unidades flash USB
Backup de Roteadores e Switches
Nenhum comentário foi encontrado.
Como atualizar sua versão estável do Debian
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Script de montagem de chroot automatica
Atualizar Linux Mint 22.2 para 22.3 beta
Jogar games da Battle.net no Linux com Faugus Launcher
Como fazer a Instalação de aplicativos para acesso remoto ao Linux
Por que passar nas disciplinas da faculdade é ruim e ser reprovado é b... (7)
De volta para o futuro - ou melhor, para o presente (parte 2) (0)









