Script de backup Graylog
Publicado por Leandro Rubert Jacomini (última atualização em 10/10/2017)
[ Hits: 5.126 ]
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
Backup incremental com montagem automática e e-mail
Backups automáticos de rádios Intelbras APC5
DriveTool.sh: um script para cópia rápida e segura de arquivos para unidades flash USB
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? (12)