Script de backup Graylog
Publicado por Leandro Rubert Jacomini (última atualização em 10/10/2017)
[ Hits: 5.125 ]
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
Backup da pasta de usuário em sistemas GNU/Linux sem copiar os arquivos ocultos
Backup dinâmico de banco de dados MySQL
Backup de diretórios do sistema Linux
Nenhum comentário foi encontrado.
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (7)