Linux Experience

cvs: hash.c:312: findnode: Assertion `key != ((void *)0)’ failed

Novembre 20, 2007 · Lascia un Commento

Strano errore

Questo e’ uno strano errore che mi e’ capitato durante la commit di un file:

cvs [commit aborted]: received abort signal
cvs: hash.c:312: findnode: Assertion `key != ((void *)0)’ failed.
cvs commit: saving log message in /tmp/cvsqKD7fM

 

Da cosa puo’ essere causato?

  1. File system full sul repository
  2. Fine degli inode sul server cvs
  3. Una precedente commit andata male : Il file esite nel repository ma ne’ dalla update ne’ dal checkout viene estrapolato. Il file risulta inserito nel repository ma non e’ utilizzabile : invisibile al client

Soluzioni

  1. controllare il fs ed eventualmente liberare spazio
  2. testare con una touch se e’ possibile aggiungere un file vuoto al filesystem
  3. cancellare manulamente dal repository il file corrotto

→ Lascia un CommentoCategorie: CVS

Fetchlog

Settembre 25, 2007 · Lascia un Commento

Introduzione

Questa simpatica utility serve per tenere sotto controllo un qualsiasi log. Generalmente viene utilizzata per tenere sotto controllo il messages in modo semplice ed efficace.

Installazione

procuriamoci l’utility dal sito : http://fetchlog.sourceforge.net/

il formato e’ il classico tar.gz fetchlog-1.0.tar.gz

perciò da utente digitiamo

$ tar xvfz fetchlog-1.0.tar.gz

$ cd fetchlog-1.0

$ make

diventiamo root e digitiamo

# make install

Questo installerà il sw in INSTDIR/bin e la pagina di man in INSTDIR/man/man1.

Comunque è presente all’interno del pacchetto anche un file readme per l’integrazione con NAGIOS e SNMP.

Utilizzo

Vediamo come funziona:

fetchlog -F prima_colonna:ultima_colonna:lunghezza:conv logfile bookmarkfile [pattern ...]

fetchlog -f prima_colonna:ultima_colonna:lunghezza:conv logfile bookmarkfile [pattern ...]

Il programma una volta lanciato scorre il logfile indicato ed estrapola le righe che contengono la stringa di testo definita con pattern solo se compresa tra prima_colonna e ultima_colonna; in output avremo una righa di tanti caratteri quanto indicati dalla condizione lunghezza.

il parametro -f indica che fetchlog utilizzarà un file bookmark che avrà nome e path indicato. Questo file serve come segnalibro: indica da quale punto ripartire alla prossima iterazione dell’ utility.

il parametro -F indica di non usare il bookmark file

il parametro conv indica che tipo di convenzone usare per il pattern-matching di solito si utilizza s di shell, per ulteriori approfondimenti rimando alla pagina del man.

un interessante utilizzo e’ quello creare uno script schedulato a intervalli regolari nel cron che permette di ricercare particolari stringhe nel file messages (errori di applicazioni,problemi kernel etc) e se ne trova mandare una mail all’amministratore.

Il vantaggio di questa utility e’ la possibilita’ di usare piu’ segnalibri per il medesimo file in modo da differenziare la stringa di ricerca.

Esempi

Piccola script che ho schedulato nel crontab di un sistema per controllare se vengono rivelati eventuali errori del raid o dei dischi scsi. Se la condizione e’ verificata vengono inviate due mail per segnalare l’errore con lo stralcio del /var/log/messages relativo

#!/bin/sh

HOST=`/bin/cat /etc/hosts| /bin/grep \`echo $HOSTNAME\“

DATA=`/bin/date`

SPAZI=”########################################################”

FETCHLOG=”/usr/local/bin/fetchlog -F 1:100:200:s”

TO=”tuo.indirizzo@dominio.it”

CC=”cc.indirizzo@dominio.it”

MSGINT=”\n$SPAZI\n $DATA \n$SPAZI\n”

#controllo errori megaraid

MSG=`$FETCHLOG /var/log/messages /var/megaraid.sgn ‘kernel: megaraid: abort’`

if [ $? -gt 0 ]; then

echo -e “$SPAZI \nErrore Megaraid \n$SPAZI\n $MSGINT \n $MSG \n$SPAZI \n \n\n Nodo: $HOST “|/bin/mail -i -s “MEGARAID ERROR : $HOSTNAME” -c $CC $TO

fi

# controllo errori scsi
MSG=`$FETCHLOG /var/log/messages /var/scsioff.sgn ‘kernel: scsi: Device offlined’`

if [ $? -gt 0 ]; then

echo -e “$SPAZI \n ERRORE SCSI DEVICE MESSO IN OFFLINE\n$SPAZI\nNodo: $HOST \n$MSGINT \n $MSG \n$SPAZI “|/bin/mail -i -s “SCSI ERROR : $HOSTNAME” -c $CC $TO

fi

Conclusioni

Ho trovato questa utility molto utile per risolvere alcuni problemi che avevo nel gestire i log da remoto in maniera semplice pulita e senza dover utilizzare prodotti troppo pesanti

Fatemi sapere la vostra opinioe

→ Lascia un CommentoCategorie: monitoring
Messo il tag: , ,