Thunberg's
@ Högåsbacke
Software projects
Hur man sätter upp Syslog Server och Syslog agenter
Har du ett nätverk hemma med lite servrar, routrar och desktoppar? Har du koll på dina loggar i dessa ? Här har jag samlat lite noteringar om hur man kan ordna det för sig och vad jag funnit ut genom lite försök.
- Allmänt om Syslog
- Syslog på Linux (exempelvis Debian)
- Syslog server på Linux (exempelvis Debian)
- Syslog Server på Windows
- Syslog Clients (Agents)
- Ett sätt att kolla loggfilerna på Linux servern
- Logga access_log ifrån apache på syslog
- Logga till syslog från din applikation
Allmänt om Syslog |
När en nätverks komponent (device) får problem så genereras fel (error) meddelanden.
Ofta är det upp till dig var dessa meddelanden tar vägen.
Nätverks komponenter liksom servrar(inklusive Windows servrar med agenten som nämns nedan),
routers, brandväggar, switchar och även vissa print serverkort stödjer användning av en "syslog" server.
En syslog server är en sorts central for log meddelanden och ett sätt för dig att centralisera din monitorering
av nätverks system och komponenter. Det är en sorts client/server typ av set up där komponenterna är "clienter".
När du sätter upp en syslog server, kommer komponenterna att skicka sina log meddelanden över nätverket till syslog servern
istället för att skriva dem till en lokal fil eller visa dem lokalt.
Exempelvis D-LINK routrar skriver dessa till web men bara några sidor om man inte låter dom gå till en 'syslog' server.
Du kan bestämma destinationen som meddelanden skickas, du kan också bestämma vilka meddelanden som clienten (agenten)
skickar baserat på vilken allvarlighets nivå (severity) meddelandet har.
Dessa nivåer är standardiserade och identifieras av en siffra och/eller en standard förkortning (visas inom parentes):
0 - Emergency (emerg) 1 - Alerts (alert) 2 - Critical (crit) 3 - Errors (err) 4 - Warnings (warn) 5 - Notification (notice) 6 - Information (info) 7 - Debug (debug) |
Level 7 betyder att minsta pip skall skickas till syslog servern. Det är bra när du vill testa ut din syslog server så duvet med säkerhet att den fungerar.
Det finns också något som kallas "facilities" wilket är löst relaterat till system processer, ett sätt att katgorisera meddelanden. När en remote komponent skickar ett meddelande till syslog servern så inkluderar den ett standard "facility" värde (tillsammans med severity nivån). Några av de vanliga kategorierna (facilities) är:
auth - authentication (login) messages cron - messages from the memory-resident scheduler daemon - messages from resident daemons kern - kernel messages lpr - printer messages (used by JetDirect cards) mail - messages from Sendmail user - messages from user-initiated processes/apps local0-local7 - user-defined (see below) syslog - messages from the syslog process itself |
Denna standard finns specifcerad i RFC3164.
local7 används b.l.a av viss Cisco utrustning och Windows servrar. Du kan specificera olika "severity levels" för olika "facilities", t.e.x, logga alla kernel meddelanden men bara "emergency" meddelanden från printrar.
Syslog på Linux (exempelvis Debian) | Top of page |
Detta görs i Linux med /etc/syslog.conf filen enl. följande format:
facility.severity log-file-name
Exemplet från ovan om kernel och printer meddelanden i /etc/syslog.conf filen skulle se ut som:
kern.* /var/log/example.log lpr.emerg /var/log/example.log |
Har du satt upp en stor partition med "logs" som monteringspunkt bara för syslogfiler kan det se ut som
kern.* /logs/enterprise.log lpr.emerg /logs/enterprise.log |
|
Syslog Server på Linux (exempelvis Debian) | Top of page |
Det är två saker du måste sätta upp för att ett Linux(jag kör Debian) system skall agera som en logg värd. Det är enkla editeringar av ett par textfiler:
- Tala om för syslog daemonen att lystna på remota meddelanden.
- Tala om för syslog daemonen vad den skall göra med dem.
Syslog daemon startas vid system startup default för den hanterar också alla locala log filer och de är många. Om du listar filerna i /var/log katalogen ser du mängden.
För att ta hand om den första punkten måste vi redigera startup scriptet som kör syslogd daemonen när systemet bootas. öppna scriptet med kommandot:
ee /etc/init.d/sysklogd
och titta på en rad i början:
SYSLOGD=""
och ändra till:
SYSLOGD="-r -m0"
(Det är en nolla efter 'm'.) Spara sedan filen. Parametern -r begär att syslogd skall lystna till remota meddelanden. Parametern -m0 stoppar syslogd från att stoppa in en massa irriterande -- MARK -- i dina logg-filer.
För att tala om för syslog daemonen vad den skall göra med alla meddelnden, öppna följande fil:
ee /etc/syslog.conf
och lägg till följande rader i början:
|
Tidigare har vi bara talat om att syslogd daemonen skall skriva meddelanden till enterprise.log file. om du vill monitorera Windows serverar och andra komponenter lägg till denna rad också:
local7.debug /var/log/enterprise.log
Jag använder 'debug' nivån här bara för test så jag vet att min server tar emot och loggar meddelanden. Det kan vi justera senare. Nu tartar vi om syslogd daemonen med kommandot:
/etc/init.d/sysklogd restart
Gratulerar, nu har du en syslog server! Du kan kolla den genom att lista filerna /var/log katalogen igen. Det bör finnas en fil som heter enterprise.log där nu.
Syslog Server på Windows | Top of page |
Nått som heter Syslog finns inte i Windows, alla meddelanden skrivs i 'Event Viewer' loggarna. Se nedan för en agent (client) som kan skicka dessa till en Syslog server.Det finns dock programvaror som kan agera som Syslog server, en bra jag testat är KIWI den finns i en 'freeware' version som duger gott för hemma bruk, kan köras som en service och kan laddas från deras hemsida här. En annan enklare är Rsyslog som finns att ladda ner här.
Syslog Clients | Top of page |
Nu kan du gå runt till dina datorer och komponenter och säga åt dem att nyttja den och vilken nivå av mddelanden du vill skicka till den.
D-Link Devices
För att aktivera på ex. en D-Link 604 gör du det via webb-gränssnittet:
Linux som Client
Om du vill sätta upp andra Linux servrar (eller desktops) som clienter (d.v.s skicka deras meddelanden till en log server) skall du lägga till följande rad i deras /etc/syslog.conf filer:
*.* @MySyslogServer
och byta 'MySyslogServer' med vad nu din syslog server har för hostnamn eller ip-adress. '*.*' specificerar att alla log meddelanden skall skickas till log servern.
Windows som Client
Micro$oft vill naturligtvis inte stödja en standard som syslog så det krävs lite trix för att monitorera windows burkar. Det finns dock ett företag i sverige som kallas Datagram som har en gratis utility som kallasSyslogAgent som kan köras som en service på Windows. den konverterar meddelanden från alla 'Event Viewer' loggar (System, Applications, Security, etc.) till syslog format och skickar dom till en syslog server. Du kan specificera olika 'severity levels' för varje logg. Gå till deras download sida:
www.syslogserver.com/download.html
och ladda nerendast 'SyslogAgent' filen, inte hela suiten.
Rotera Logg filerna på Linux
Syslog är en daemon som körs på alla Linux/UNIX system för att hålla lokala loggar. Parametern -r (listen on remote systems) är vad som gör att en Linux blir en syslog server. Det finns en annan daemon som arbeter med syslog för attunderhålla filerna som kallas logrotated. Med att "rotera" en logg fil menas att byta namn (renaming), lägga till .0 ellerr .1 etc. på loggfilnamnet och starta en ny. Undan sparandet (renaming) av den gammla loggfilen och hur många man skall spara är konfigurerbara värden och hur ofta man skall byta kan man skriva i /etc/logrotate.conf filen. Om du bara loggar kritiska (critical) och däröver från remota komponenter kanske det räcker med att bara 'rotera' en gång i månaden. Varje vecka är default. Du kan också bestämma hur många gammla du vill spara.
Denna sättning görs i /etc/logrotate.conf filen:
Du kan också sätta upp sektioner så att olika loggfiler har olika värden. Kolla man sidan för logrotate för detaljer.# rotate log files weekly weekly # keep 4 weeks worth of backlogs rotate 4 # create new (empty) log files after rotating old ones create # uncomment this if you want your log files compressed #compress
Ett sätt att kolla loggfilerna på Linux servern | Top of page |
Om du sätter upp din /etc/syslog.conf fil så att allt skrivs till samma fil, så när alla client komponenter skickar sitt har du bara en loggfil att kolla för allt på ditt nätverk.
Men istället föratt vara tvungen att logga på din linux server, kan du göra den acsessbar överallt via en browser förutsatt att du har apache installerad på din syslog server. Du måste också konfigurera den att hantera SSI (Server-Side Includes).
När du satt upp Apache måste vi skapa en webb sida som visar loggen. Skapa sedan en symlänk till /var/log/ i /var/www/ som du kallar för syslog
Använd ee editorn för att skapa en ny sida med kommandot:
ee /var/www/mylogg.shtml
(notera att s i filändelsen krävs för SSI) och skriv in följande:
<html> <head> <title>Enterprise Syslog Log File</title> </head> <body> <center> <h2> Alfs Enterprise Syslog Log </h2> </center> <!--#include file="/syslog/enterprise.log" --> <br> </body> </html> |
Spara filen.
Filreferencen i SSI include direktivet är relativ till "document rooten" i Apache servern.
När du gjort alla ändringar starta om Apache services eller bootat systemet.
Gå nu till ett annat system på dityt nätverk, dra igång en Web browser och peka på IP addressen till din syslog server exempelvis:
http://192.168.0.70/mylogg.shtml
En Websida innehållande 'enterprise.log' filen bör visas(om något hunnit bli loggat förståss). Om inte, gör "View source" i din browser och se om SSI direktiv raden är i HTML koden. Det skall det inte!. Om det finns har du inte lyckas konfigurera Apache att hantera SSI direktiv (eller du använde inte shtml som extension på sidan). /var/log/apache.log and /var/log/apache.err filerna kan vara till hjälp isåfall.
Syslog är ett mycket kraftfullt verktyg. Det har många möjligheter, som att skicka meddelanden över nätet istället för filer. Det kan också användas till att logga misslyckade påloggningar vilket kan indikera att någon hackare försöker ta sig in. Med lägre 'severity' kan du logga alla påloggningar så du kan arkivera vem som loggade in och när.
Logga access_log ifrån apache på syslog | Top of page |
Kanske vill du logga Apache webserverns access_log till syslog, då behöver du en plug-in som heter mod-witch som du kan se
här, den finns säkert att hämta
på fler ställen på nätet. Undrar du hur man gör detta i C har du källkoden
här.
Exempel på konfigurering i apache:
LoadModule witch_module /usr/lib/apache/1.3/mod_witch.so WitchIdent mod_witch WitchOption LOG_PID WitchFacility LOG_DAEMON WitchLevel LOG_INFO WitchError log WitchLogStyle MyWeb
Logga till syslog från din applikation. | Top of page |
Vill du logga på syslog från java skall du nyttja LOG4J paketet.