Script de backup Graylog
Publicado por Leandro Rubert Jacomini (última atualização em 10/10/2017)
[ Hits: 5.358 ]
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
sync_local - backup/restauração local
PKG Sync v4.0 - utilitário para backup de pacotes DEB baixados
rsyncdev-pt_BR.sh - Um baixador automático de ISOs de Sabayon Linux
DriveTool.sh: um script para cópia rápida e segura de arquivos para unidades flash USB
Nenhum coment�rio foi encontrado.
Aprenda a Gerenciar Permissões de Arquivos no Linux
Como transformar um áudio em vídeo com efeito de forma de onda (wave form)
Como aprovar Pull Requests em seu repositório Github via linha de comando
Visualizar arquivos em formato markdown (ex.: README.md) pelo terminal
Dando - teoricamente - um gás no Gnome-Shell do Arch Linux
Como instalar o Google Cloud CLI no Ubuntu/Debian
Mantenha seu Sistema Leve e Rápido com a Limpeza do APT!
Procurando vídeos de YouTube pelo terminal e assistindo via mpv (2025)
Pastas da raiz foram para a área de trabalho [RESOLVIDO] (7)
Sinto uma leve lentidão ao arrastar, miniminizar e restauras as janela... (0)
Zorin OS - Virtual Box não consigo abrir maquinas virtuais (6)