Script de backup Graylog
Publicado por Leandro Rubert Jacomini (última atualização em 10/10/2017)
[ Hits: 4.775 ]
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
Lisa - sistema de backup com rsync
Script de backup de usuários do sistema
Script para gravação de BKPs em DVDs-RW
Nenhum comentário foi encontrado.
Atenção a quem posta conteúdo de dicas, scripts e tal (1)
Manutenção de sistemas Linux Debian e derivados com apt-get, apt, aptitude e dpkg
Melhorando o tempo de boot do Fedora e outras distribuições
Como instalar as extensões Dash To Dock e Hide Top Bar no Gnome 45/46
Instalar a última versão do PostgreSQL no Lunix mantendo atualizado
Flathub na sua distribuição Linux e comandos básicos de gerenciamento
Instalando o FreeOffice no LMDE 6
Anki: Remover Tags de Estilo HTML de Todas as Cartas
Colocando uma opção de redimensionamento de imagem no menu de contexto do KDE
Desenvolvimento de um driver (8)
Não esta salvando as configurações de usuário. (3)
Quais Shell Scripts vocês usam? (5)
[Shell Script] Script para desinstalar pacotes desnecessários no OpenSuse
[Shell Script] Script para criar certificados de forma automatizada no OpenVpn
[Shell Script] Conversor de vídeo com opção de legenda
[C/C++] BRT - Bulk Renaming Tool
[Shell Script] Criação de Usuarios , Grupo e instalação do servidor de arquivos samba