Come posso inviare a syslogd alcuni messaggi di log per me?


13

Mi piacerebbe essere in grado di ricevere una notifica via email ogni volta che syslogd registra qualcosa, diciamo errpriorità o superiore. Supponiamo che questo sia un demone syslog compatibile con BSD.

  • Questo può essere realizzato?
  • Dovrei usare una named pipe per uno script di shell?
  • Quali altre possibili soluzioni ci sono?

Risposte:


6

Ecco una soluzione che utilizza pipe denominate. È configurato per Debian, ma dovresti essere in grado di modificarlo per BSD.


Ho finito per basare la mia soluzione su questo in modo da poter demonizzare l'e-mail. Grazie per il link
Jason,

Questo sembra troppo di un trucco. Perché dovresti dedicare del tempo allo scripting quando ci sono app open source stabili per farlo? (anche in tempo reale). * vedi la mia risposta.
sucuri,

2
Non è affatto un hack. È il modo in cui questo tipo di cose viene spesso fatto.
In pausa fino a ulteriore avviso.

6

Notifiche via syslogd (8)

Sul mio server OpenBSD, registro e invio e-mail di messaggi importanti dalle mie applicazioni Web, che utilizzano la funzione local1 . Ecco il mio /etc/syslog.conf per farlo accadere:

local1.err    /var/log/example.com
local1.err    |while read log; do echo "$log" | /usr/bin/mail -s SYSLOG me@example.com; done

Si noti che il ciclo while legge all'infinito ogni riga da syslogd e quindi la reindirizza alla posta via echo. Questo è importante. Una volta che l'eco ha emesso la sua linea, termina la pipe, inviando un EOF in modo che possa inviare il messaggio di registro tramite e-mail.

In altre parole, non puoi reindirizzare direttamente alla posta tramite syslogd in questo modo:

local1.err    |/usr/bin/mail -s SYSLOG me@example.com

poiché syslogd continuerà a scrivere sulla pipe fino a quando non verrà terminato o inviato un segnale HUP, a quel punto la posta invierebbe l'intero set di messaggi di log in un'unica e-mail di grandi dimensioni.

Notifiche tramite newsyslog (8)

La pianificazione di newsyslog in cron è un altro modo per ottenere messaggi a una velocità inferiore o in blocco.

Ad esempio, se si desidera un digest giornaliero della posta elettronica dei messaggi di registro, impostare il flag M e specificare un indirizzo e-mail di monitoraggio in /etc/newsyslog.conf :

# logfile_name        owner:group  mode  count  size  when  flags  monitor
/var/log/example.com  root:wheel   640   7      *     24    M      me@example.com

Quindi programmare newsyslog in crontab:

# minute hour  mday  month  wday  command
0        *     *     *      *     /usr/bin/newsyslog
1-59     *     *     *      *     /usr/bin/newsyslog -m

L' opzione -m per newsyslog (8) afferma:

Modalità di monitoraggio; vengono elaborate solo le voci contrassegnate con una "M" nei flag. Per ogni file di registro monitorato, qualsiasi output di registro dall'ultima volta che è stato eseguito il newsyslog con il flag -m viene inviato all'utente elencato nella sezione di notifica del monitor.


3

Potresti voler controllare il logcheck o il logwatch. Logcheck ti invierà un'e-mail ogni ora con linee di registro che non corrispondono a una serie di schemi. Sospetto che probabilmente potresti farcela più frequentemente. Non conosco alcuno strumento che lo faccia guardando i file di log, ma sono sicuro che ci sia qualcosa là fuori che lo faccia.


Sì, preferirei non monitorare e analizzare i file di registro dopo che sono stati scritti, ma agganciarmi al processo di registrazione in modo da poter ricevere notifiche istantanee.
Jason,

1

Vorrei usare OSSEC. Monitora i tuoi registri in tempo reale e ti consente di avvisare facilmente via e-mail (o altri mezzi) quando si verificano eventi specifici. Semplice da usare, scalabile e open source.

collegamento: http://www.ossec.net


Questo potrebbe essere eccessivo per l'applicazione. Tuttavia, il pacchetto fa molto e se ce n'è bisogno, potrebbe essere adatto.
In pausa fino a ulteriore avviso.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.