Inicio > Scripts, Zabbix > Zabbix: Script para reducir entradas en tabla History

Zabbix: Script para reducir entradas en tabla History

https://www.zabbix.com/forum/showthread.php?t=14105

 

#!/bin/bash
############## VARIABLES ################
MySQL_HOST=srvhost
MySQL_DB=dbname
MySQL_USER=mysqluser
MySQL_PWD=mysqlpass
LOG_FILE=GenCleanHistory.log

##########################################################################################
 ############################ NO MODIFICAR NADA A PARTIR DE AQUI ########################
##########################################################################################
### Busco el path de los comando a utilizar
DATE=`which date`
MYSQL=`which mysql`
ECHO=`which echo`
EXPR=`which expr`
CAT=`which cat`
PS=`which ps`
GREP=`which grep`
AWK=`which awk`
CLEAR=`which clear`

$CLEAR
$ECHO > $LOG_FILE
# Logeo PATHs
$ECHO "-----------> Paths Comandos <-----------" > $LOG_FILE
$ECHO "date="$DATE > $LOG_FILE
$ECHO "mysql="$MYSQL >> $LOG_FILE
$ECHO "expr="$EXPR >> $LOG_FILE
$ECHO "cat="$CAT >> $LOG_FILE
$ECHO "----------------------------------------" >> $LOG_FILE

# Obtengo la fecha actual del sistema
ACTUAL=`$DATE +%s`
$ECHO "-----------> Fechas en segundos <-----------" >> $LOG_FILE
$ECHO "Fecha Actual="$ACTUAL >> $LOG_FILE

# Constantes de segundos en:
# MESES1 -> 30 dias
# MESES2 -> 60 dias
# MESES3 -> 90 dias

MESES1=2592000
MESES2=5184000
MESES3=7776000
$ECHO "30 dias(s)="$MESES1 >> $LOG_FILE
$ECHO "60 dias(s)="$MESES2 >> $LOG_FILE
$ECHO "90 dias(s)="$MESES3 >> $LOG_FILE

# Elijo la constante
MES=$MESES2
$ECHO "Segundos a utilizar="$MES >> $LOG_FILE

# Realizo la cuenta para obtener la cantidad de segundos a guardar
RESTA=`$EXPR $ACTUAL - $MES`
$ECHO "Resultado="$RESTA >> $LOG_FILE
$ECHO "-------------------------------------------" >> $LOG_FILE
# Genero el archivo .sql
# Constante de nombre archiv SQL
SQLSCRIPT=CleanZabbixDB
$ECHO "DELETE FROM history WHERE clock <= $RESTA;" > $SQLSCRIPT.sql
$ECHO "DELETE FROM history_log WHERE clock <= $RESTA;" >> $SQLSCRIPT.sql
$ECHO "DELETE FROM history_str_sync WHERE clock <= $RESTA;" >> $SQLSCRIPT.sql
$ECHO "DELETE FROM history_sync WHERE clock <= $RESTA;" >> $SQLSCRIPT.sql
$ECHO "DELETE FROM history_text WHERE clock <= $RESTA;" >> $SQLSCRIPT.sql
$ECHO "DELETE FROM history_uint WHERE clock <= $RESTA;" >> $SQLSCRIPT.sql
$ECHO "DELETE FROM history_uint_sync WHERE clock <= $RESTA;" >> $SQLSCRIPT.sql
$ECHO "DELETE FROM alerts WHERE clock <= $RESTA;" >> $SQLSCRIPT.sql
$ECHO "DELETE FROM auditlog WHERE clock <= $RESTA;" >> $SQLSCRIPT.sql

#$ECHO "SELECT * FROM alerts LIMIT 10000;" > $SQLSCRIPT.sql

$ECHO "-------------------------------> Consultas SQL <-------------------------------" >> $LOG_FILE
$CAT $SQLSCRIPT.sql >> $LOG_FILE
$ECHO "-------------------------------------------------------------------------------" >> $LOG_FILE

### Creo un Script temporal para lanzar las consultas SQL y luego limpiar los archivos generados.

`$MYSQL -h$MySQL_HOST -u$MySQL_USER -p$MySQL_PWD -D$MySQL_DB < $SQLSCRIPT.sql > $SQLSCRIPT.tab &`
PID_RUN=`$PS -AF | $GREP "mysql" | $GREP -v grep | $GREP localhost| $AWK '{print $2}'`
$ECHO "PID MySQL="$PID_RUN >> $LOG_FILE
$ECHO "Por Favor verifique los procesos en base al PID guardado ($PID_RUN)" >> $LOG_FILE
$CAT $LOG_FILE
Anuncios
  1. Aún no hay comentarios.
  1. No trackbacks yet.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: