Script de backup Graylog
Publicado por Leandro Rubert Jacomini (última atualização em 10/10/2017)
[ Hits: 5.527 ]
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
Script de backup dos hosts do Zabbix
Realiza backup de VMs ligadas no XenServer 6.5
Backup da pasta de usuário em sistemas GNU/Linux sem copiar os arquivos ocultos
Backup de Máquina Virtual - XenServer
sync_local - backup/restauração local
Nenhum comentário foi encontrado.
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?
copiar library para diretorio /usr/share/..... su com Falha na a... (1)
Problema em SSD ao dar boot LinuxMint LMDE FAYE 64 (3)
Instalação dualboot Windows 11 e Debian 13 (29)









