Script de backup Graylog
Publicado por Leandro Rubert Jacomini (última atualização em 10/10/2017)
[ Hits: 5.309 ]
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 e envio do arquivo + md5sum para o FTP da escolha do usuário
Script de Backup do Perfil dos Usuários do Sistema em Batch do Windows
Realiza backup de VMs ligadas no XenServer 6.5
Nenhum comentário foi encontrado.
Resolver problemas de Internet
Como compartilhar a tela do Ubuntu com uma Smart TV (LG, Samsung, etc.)
Descritores de Arquivos e Swappiness
Fez porcaria no teu repositório Git? Aprenda a restaurar uma versão anterior do seu código!
Restaurando Fontes de Download do Hydra no Linux
Atualizando "na marra" o YT-DLP quando começa a dar erro de downloads
Como instalar o WPS com interface e corretor ortográfico em PT-BR no Arch Linux
Linphonec não executa após clonagem de HD (2)
Atualizador de Programas do Zorin 17.3 não funciona [RESOLVIDO] (4)