för att systemadministratören ska kunna identifiera eller felsöka ett problem på ett CentOS 7-eller RHEL 7-serversystem måste det känna till och visa händelserna som hände på systemet under en viss tidsperiod från loggfiler lagrade i systemet i katalogen /var/log.
syslog-servern på en Linux-maskin kan fungera som en central övervakningspunkt över ett nätverk där alla servrar, nätverksenheter, routrar, switchar och de flesta av deras interna tjänster som genererar loggar, oavsett om de är relaterade till specifika interna problem eller bara informativa meddelanden kan skicka sina loggar.
på ett CentOS/RHEL 7-system är Rsyslog-demonen huvudloggservern förinstallerad, följt av Systemd Journal Daemon (journald).
Rsyslog server i build som en klient/server arkitektur tjänst och kan uppnå båda rollerna samtidigt. Det kan köras som en server och samla alla loggar som överförs av andra enheter i nätverket eller det kan köras som en klient genom att skicka alla interna systemhändelser loggas till en fjärr slutpunkt syslog server.
när rsyslog konfigureras som en klient kan loggarna lagras lokalt i filer på det lokala filsystemet eller kan skickas på distans istället för att skriva dem i filer som lagras på datorn eller skriva händelseloggsfiler lokalt och skicka dem till en fjärr syslog-server samtidigt.
Syslog server Driver alla loggmeddelanden med följande schema:
type (facility).priority (severity) destination(where to send the log)
A. Anläggningen eller typdata representeras av de interna systemprocesserna som genererar meddelandena. I Linux interna processer (anläggningar) som genererar loggar standardiseras enligt följande:
- auth = meddelanden som genereras av autentiseringsprocesser (inloggning).
- cron= meddelanden som genereras av schemalagda processer (crontab).
- daemon = meddelanden som genereras av demoner (interna tjänster).
- kernel = meddelanden som genereras av själva Linux-kärnan.
- mail = Meddelanden som genereras av en e-postserver.
- syslog = meddelanden som genereras av själva rsyslog-demonen.
- lpr = meddelanden som genereras av lokala skrivare eller en skrivarserver.
- local0-local7 = anpassade meddelanden definierade av en administratör (local7 tilldelas vanligtvis för Cisco eller Windows).
B. prioritetsnivåerna (svårighetsgrad) är också standardiserade. Varje prioritet tilldelas en standardförkortning och ett nummer som beskrivs nedan. Den 7: e prioriteten är den högre nivån av alla.
- emerg = nödsituation – 0
- varning = varningar – 1
- err = fel – 3
- varna = varningar – 4
- meddelande = anmälan – 5
- info = Information – 6
- debug = felsökning– 7
särskilda rsyslog-nyckelord:
- * = alla anläggningar eller prioriteringar
- none = anläggningarna har inga givna prioriteringar t.ex.: post.ingen
C. Den tredje delen för syslog-schemat representeras av destinationsdirektivet. Rsyslog daemon kan skicka loggmeddelanden som ska skrivas i en fil på det lokala filsystemet (mestadels i en fil i /var/log/ katalog) eller att ledas till en annan lokal process eller att skickas till en lokal användarkonsol (till stdout), eller skicka meddelandet till en fjärr syslog server via TCP/UDP-protokollet, eller till och med kasta meddelandet till /dev/null.
för att konfigurera CentOS/RHEL 7 som en central Loggserver måste vi först kontrollera och se till att /var-partitionen där alla loggfiler spelas in är tillräckligt stor (några GB minimum) för att kunna lagra alla loggfiler som kommer att skickas av andra enheter. Det är ett bra beslut att använda en separat enhet (LVM, RAID) för att montera /var/log/ katalog.
krav
- CentOS 7.3 installationsprocedur
- RHEL 7.3 installationsprocedur
så här konfigurerar du Rsyslog i CentOS/RHEL 7 Server
1. Som standard installeras rsyslog-tjänsten automatiskt och ska köras i CentOS/RHEL 7. För att kontrollera om demonen startas i systemet, utfärda följande kommando med root-privilegier.
# systemctl status rsyslog.service
om tjänsten inte körs som standard, kör kommandot nedan för att starta rsyslog daemon.
# systemctl start rsyslog.service
2. Om rsyslog-paketet inte är installerat på det system som du tänker använda som en centraliserad loggningsserver utfärdar du följande kommando för att installera rsyslog-paketet.
# yum install rsyslog
3. Det första steget som vi behöver göra på systemet för att konfigurera rsyslog-demonen som en centraliserad loggserver, så att den kan ta emot loggmeddelanden för externa klienter, är att öppna och redigera, med din favorittextredigerare, huvudkonfigurationsfilen från /etc/rsyslog.conf, som presenteras i nedanstående utdrag.
# vi /etc/rsyslog.conf
i rsyslog-huvudkonfigurationsfilen, Sök och Avkommentera följande rader (ta bort hashtaggen #
– tecknet vid linjens början) för att tillhandahålla UDP-transportmottagning till Rsyslog-servern via 514-port. UDP är standardprotokollet som används för loggöverföring av Rsyslog.
$ModLoad imudp $UDPServerRun 514
4. UDP-protokollet har inte TCP overhead, vilket gör det snabbare för överföring av data än TCP-protokollet. Å andra sidan garanterar UDP-protokollet inte tillförlitligheten för överförda data.
men om du behöver använda TCP-protokollet för loggmottagning måste du söka och Avkommentera följande rader från /etc/rsyslog.conf-fil för att konfigurera Rsyslog-demonen för att binda och lyssna på ett TCP-uttag på 514-porten. TCP-och UDP-lyssningsuttag för mottagning kan konfigureras på en Rsyslog-server samtidigt.
$ModLoad imtcp $InputTCPServerRun 514
5. I nästa steg, stäng inte filen ännu, skapa en ny mall som ska användas för att ta emot fjärrmeddelanden. Den här mallen instruerar den lokala rsyslog-servern var du ska spara de mottagna meddelandena som skickas av syslog-nätverksklienter. Mallen måste läggas till före början av det globala DIREKTIVBLOCKET som illustreras i nedanstående utdrag.
$template RemoteLogs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log" . ?RemoteLogs & ~
ovanstående $template RemoteLogs-direktiv instruerar rsyslog-demonen att samla in och skriva alla mottagna loggmeddelanden till olika filer, baserat på klientmaskinens namn och fjärrklientanläggning (applikation) som genererade meddelandena baserat på de definierade egenskaperna som presenteras i mallkonfigurationen: %HOSTNAME% och %PROGRAMNAME%.
alla dessa loggfiler kommer att skrivas till lokalt filsystem till en dedikerad fil uppkallad efter klientmaskinens värdnamn och lagras i /var/log/ katalog.
& ~ omdirigeringsregeln instruerar den lokala rsyslog-servern att sluta bearbeta det mottagna loggmeddelandet ytterligare och kassera meddelandena (skriv inte dem till interna loggfiler).
RemoteLogs-namnet är ett godtyckligt namn som ges till detta malldirektiv. Du kan använda vilket namn du kan hitta bäst för din mall.
för att skriva alla mottagna meddelanden från klienter i en enda loggfil som är uppkallad efter fjärrklientens IP-adress, utan att filtrera anläggningen som genererade meddelandet, använd nedanstående utdrag.
$template FromIp,"/var/log/%FROMHOST-IP%.log" . ?FromIp & ~
ett annat exempel på en mall där alla meddelanden med auth facility flagga loggas till en mall som heter ”TmplAuth”.
$template TmplAuth, "/var/log/%HOSTNAME%/%PROGRAMNAME%.log" authpriv.* ?TmplAuth
nedan är ett utdrag bildar en mall definition från rsyslog 7 server:
template(name="TmplMsg" type="string" string="/var/log/remote/msg/%HOSTNAME%/%PROGRAMNAME:::secpath-replace%.log" )
ovanstående mallutdrag kan också skrivas som:
template(name="TmplMsg" type="list") { constant(value="/var/log/remote/msg/") property(name="hostname") constant(value="/") property(name="programname" SecurePath="replace") constant(value=".log") }
för att skriva komplexa rsyslog-mallar, läs rsyslog-konfigurationsfilen genom att utfärda man rsyslog.conf kommando eller konsultera Rsyslog online dokumentation.
6. När du har redigerat rsyslog-konfigurationsfilen med dina egna inställningar som förklarats ovan, starta om Rsyslog-demonen för att tillämpa ändringar genom att utfärda följande kommando:
# service rsyslog restart
7. Vid det här laget, rsyslog server bör konfigureras för att agera en centraliserad loggserver och spela in meddelanden från syslog klienter. För att verifiera rsyslog-nätverksuttag, kör netstat-kommandot med root-privilegier och använd grep för att filtrera rsyslog-strängen.
# netstat -tulpn | grep rsyslog
8. Om du har SELinux aktiverat i CentOS / RHEL 7, utfärda följande kommando för att konfigurera SELinux för att tillåta rsyslog-trafik beroende på nätverksuttagstyp.
# semanage -a -t syslogd_port_t -p udp 514# semanage -a -t syslogd_port_t -p tcp 514
9. Om brandväggen är aktiverad och aktiv, kör kommandot nedan för att lägga till nödvändiga regler för att öppna rsyslog-portar i Firewalld.
# firewall-cmd --permanent --add-port=514/tcp# firewall-cmd --permanent --add-port=514/udp# firewall-cmd –reload
det är allt! Rsyslog är nu konfigurerad i serverläge och kan centralisera loggar från fjärrklienter. I nästa artikel kommer vi att se hur du konfigurerar Rsyslog-klienten på CentOS/RHEL 7-servern.
använda Rsyslog server som en central övervakningspunkt för fjärrloggmeddelanden kan du inspektera loggfiler och observera klientens hälsotillstånd eller felsöka klientens problem lättare när system kraschar eller är under någon form av attack.