nm log, rotação e armazenamento no banco de dados

4

Há duas partes neste post.

Captura & Registrando

Gostaria de capturar automaticamente os dados nmon a cada 5 minutos por 24 horas e depois girar o arquivo. Eu suponho que eu precisaria executar o comando abaixo e ter o cron kick off às 12:00.

nmon -s 300 -c 288

Q1: Como posso ter certeza de que esse processo não continue a ser executado antes do próximo dia começar e iniciar um novo processo?

Q2: Posso especificar o nome do arquivo para impedir que alguém o execute manualmente e sobrescreva meu arquivo de log? (isto é, hostname_YYYYMMDD.nmon)

Importação de banco de dados

Uma vez que o arquivo foi escrito, eu gostaria de importá-lo para um banco de dados mysql.

Não tenho certeza se isso pode ser feito com um script de shell ou se preciso usar outra linguagem como o Python.

Comecei a escrever o roteiro abaixo, mas pareço estar preso em algumas áreas. Por favor, sinta-se à vontade para modificar quaisquer erros encontrados no que escrevi até agora.

Script

#!/bin/bash
# nmon_log_rot_db.sh

# Variables

# nmon
NMON = '/usr/local/bin/nmon/nmon'
# Log Directory
LOGDIR = '/var/log/nmon/'
# Hostname
HOST = '/etc/hostname'
# Date
DATE = '/usr/bin/date +%y%m%d'
# File Name
FILE = ${LOGDIR}/${HOST}-${DATE}.nmon

# Kill current nmon process
command to kill nmon_log_rot_db.sh
???

# Log to Database
# connect to database
HOSTNAME = mysqlhost;
DBUSER = dbuser;
DBPASS = dbpass;
DBNAME = dbname;


# network table
ROW_ID|datetime|hostname|iface|rx KB/s|tx KB/s

# cpu table
ROW_ID|datetime|hostname|USER%|SYS%|WAIT%|IDLE

# mem table
ROW_ID|datetime|hostname|type (system or swap)|Total|Free|Used

# disk table
ROW_ID|datetime|hostname|disk_dev|busy|read|write

# Delete old log file
rm ${OLD_FILE}

# Start nmon
${NMON} -F ${FILE} -s 300 -c 288
    
por linguru772x 03.08.2015 / 03:20

1 resposta

1

A combinação de sinalizadores s e c permite controlar a duração total de quanto tempo o nmon será executado no modo em lote. Aqui está um exemplo de execução de nmon por 24 horas, registrando estatísticas a cada 60 segundos.

0 0 * * * /opt/nmon/nmon -f -s 60 -c 1440 -T -m /opt/nmon/nmon_logs/

No seu caso, a expressão cron vai registrar da seguinte forma:

0 0 * * * /opt/nmon/nmon -f -s 300 -c 288 -T -m /opt/nmon/nmon_logs/

O binário nmon anexa automaticamente a data aos arquivos exportados, portanto você não deve se preocupar com conflitos de nomes de arquivos, mas provavelmente quer garantir que os arquivos mais antigos sejam excluídos depois de algum tempo.

A convenção de nomenclatura padrão é hostname_yyMMdd_HHmm.log produzindo arquivos como este: NURSWGHBS001_151113_2300.log

Você pode então importar arquivos para qualquer ferramenta que não suporte o formato nmon, o que é bastante particular.

    
por 20.11.2015 / 20:50

Tags