SEC (Simple Event Correlator) installeren en configureren op FreeBSD
Wat is SEC (Simple Event Correlator)?
SEC (Simple Event Correlator) is een krachtige open-source tool voor event-correlatie en real-time log monitoring. De software is platformonafhankelijk en vormt een uitstekend alternatief voor dure commerciële event-correlatieoplossingen of eenvoudige shellscripts.
SEC analyseert logbestanden in realtime en kan automatisch acties uitvoeren wanneer vooraf gedefinieerde gebeurtenissen worden gedetecteerd. Denk hierbij aan het versturen van e-mails, uitvoeren van shellscripts, verzenden van SNMP-traps of het schrijven van meldingen naar bestanden of pipes.
Doordat SEC invoer accepteert via reguliere bestanden, named pipes en standaardinvoer (stdin), kan het eenvoudig worden geïntegreerd met vrijwel iedere applicatie die loggegevens wegschrijft.
Hoe werkt SEC?
De configuratie van SEC bestaat uit één of meerdere tekstbestanden met regels. Iedere regel bevat:
- een voorwaarde waarop een event moet worden herkend;
- één of meerdere acties die uitgevoerd moeten worden;
- optioneel een booleaanse expressie om te bepalen wanneer de regel actief is.
Voor het herkennen van gebeurtenissen gebruikt SEC onder andere:
- reguliere expressies (RegExp);
- Perl-subroutines;
- variabelen en patroonherkenning.
Hierdoor is SEC zeer geschikt voor het monitoren van bijvoorbeeld:
- HAProxy
- Apache
- Nginx
- Syslog
- Firewalls
- Applicatielogs
SEC installeren op FreeBSD
Installeer SEC via de FreeBSD Ports Collection:
cd /usr/ports/sysutils/sec
make install clean
SEC configureren
Maak een configuratiebestand aan:
ee /etc/sec.conf
Onderstaand voorbeeld controleert het HAProxy-logbestand. Wanneer een backend-server de status DOWN of UP krijgt, verstuurt SEC automatisch een e-mailmelding.
type=Single
ptype=RegExp
pattern=Server\s+(\S+)\s+\S+\s+(\S+)(.*)
desc=$0
action=pipe '%t server $1 went $2 $3' /usr/bin/mail -s 'HAProxy: $1 went $2' systeembeheer@markterweele.nl
De reguliere expressie haalt hierbij de volgende gegevens uit het logbestand:
- $1 – naam van de server
- $2 – status (UP of DOWN)
- $3 – overige informatie uit de logregel
SEC starten
Gebruik onderstaande opdracht om SEC te starten en het systeemlogbestand te monitoren.
sec -detach \
-pid=/var/run/sec.pid \
-conf=/etc/sec.conf \
-log=/var/log/sec.log \
-input=/var/log/messages
Betekenis van de opties
| Optie | Beschrijving |
|---|---|
-detach | Draait SEC als achtergrondproces. |
-conf | Geeft het configuratiebestand op. |
-log | Logbestand van SEC zelf. |
-pid | Locatie van het PID-bestand. |
-input | Het logbestand dat bewaakt wordt. |
Swatch-configuraties converteren naar SEC
Wanneer je eerder Swatch gebruikte, kun je bestaande configuraties grotendeels automatisch omzetten naar SEC.
Maak hiervoor het script aan:
ee /usr/bin/swatch2sec.pl
Voeg vervolgens het onderstaande Perl-script toe.
#!/usr/bin/perl -w
...
Gebruik het script als volgt:
swatch2sec < ~/.swatchrc > sec.conf
Hiermee wordt een bestaande Swatch-configuratie automatisch vertaald naar een SEC-configuratie.
Opstartscript voor SEC
Maak een init-script aan zodat SEC eenvoudig gestart en gestopt kan worden.
ee /etc/rc.d/rc.sec
Plaats hierin het onderstaande script.
#!/bin/bash
...
Maak het script uitvoerbaar:
chmod 755 /etc/rc.d/rc.sec
Logrotatie configureren
Om te voorkomen dat het logbestand onbeperkt groeit, is het verstandig logrotate te gebruiken.
Kopieer eerst de voorbeeldconfiguratie:
cp /usr/ports/sysutils/logrotate/files/logrotate.conf.sample /etc/logrotate.conf
Open vervolgens het bestand:
ee /etc/logrotate.conf
Wijzig de instellingen bijvoorbeeld naar:
daily
rotate 7
create
Voeg daarna onderstaande configuratie toe zodat SEC na iedere logrotatie automatisch opnieuw wordt gestart.
/var/log/sec.log {
missingok
postrotate
/etc/rc.d/rc.sec restart
endscript
}
SEC handmatig starten
Start SEC met:
sh /etc/rc.d/rc.sec start
SEC automatisch starten bij het opstarten van FreeBSD
Wil je dat SEC automatisch wordt gestart wanneer FreeBSD opstart?
Open dan:
ee /etc/rc.local
Voeg de volgende regel toe:
sh /etc/rc.d/rc.sec start
Toepassingen van SEC
SEC wordt veel gebruikt voor:
- realtime log monitoring;
- event-correlatie;
- automatische e-mailmeldingen;
- monitoring van HAProxy;
- serverbewaking;
- netwerkmonitoring;
- security monitoring;
- systeembeheer en automatisering.
Dankzij de flexibele configuratie is SEC geschikt voor zowel kleine als grote IT-omgevingen.