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.