En vigtig bedste praksis for skovhugst er at centralisere eller samlet dine logs i et enkelt sted, især hvis du har flere servere, eller arkitektur niveauer. Moderne applikationer har ofte flere niveauer af infrastruktur, der kan omfatte en blanding af lokale servere og skytjenester. At forsøge at jage den rigtige fil til fejlfinding af en fejl ville være utroligt svært, og det ville være endnu sværere at forsøge at korrelere problemer på tværs af systemer., Der er ikke noget mere frustrerende end at finde ud af de oplysninger, du ønskede ikke blev fanget i en logfil, eller at logfilen, der kunne have holdt svaret, gik tabt efter en server genstart.
dette afsnit forklarer, hvordan du bruger centraliseringstjenester til at indsamle og centralisere dine Linu. – logfiler.fordele
fordele
fordele ved centralisering af logfiler
centralisering af dine logfiler gør det lettere og hurtigere at søge gennem logdata, da alle dine logfiler er tilgængelige på et enkelt sted., I stedet for at gætte, hvilken server der har den rigtige fil, kan du blot få adgang til dit lager af logdata for at søge efter relevante begivenheder. Centralisering er en vigtig del af store styringsløsninger, da det giver dem mulighed for at analysere, analysere og indekslogfiler, før de gemmes på et enkelt sted. Dette gør fejlfinding og løsning af produktionsproblemer lettere og hurtigere. Centralisering tilbyder også disse fordele.
- logfiler sikkerhedskopieres på et separat sted, hvilket beskytter dem mod utilsigtet eller utilsigtet tab., Dette holder dem også tilgængelige, hvis dine servere går ned eller ikke reagerer.
- du behøver ikke bruge SSH eller ineffektive grep-kommandoer, som kan bruge værdifulde computerressourcer til komplekse søgninger.
- du kan reducere mængden af diskplads, der bruges af logfiler.
- ingeniører kan fejlfinde produktionsproblemer uden direkte adgang til systemer.selvom centraliseret logadministration generelt er den bedre mulighed, er der stadig nogle risici, såsom dårlig netforbindelse, der fører til tab af data eller logfiler, der bruger en stor netværksbåndbredde., Vi diskuterer, hvordan du intelligent adresserer disse problemer i afsnittene nedenfor.
populære
populære værktøjer til centralisering af logfiler
de fleste Linu. – systemer centraliserer allerede logfiler ved hjælp af en syslog-dæmon. Som vi forklarede i afsnittet Linu.Logging Basics, er syslog en tjeneste, der indsamler logfiler fra tjenester og applikationer, der kører på værten. Det kan skrive disse logfiler til fil, eller sende dem til en anden server via syslog-protokollen., Der er flere syslog implementeringer, som du kan bruge, herunder:
- Rsyslog– en letvægts dæmon installeret på de fleste almindelige Linu.-distributioner.
- syslog-ng-den næstmest populære syslog daemon til Linu..
- logstash-et tungere middel, der kan gøre mere avanceret behandling og parsing. Det kan læse syslog beskeder ved hjælp af syslog input plugin og sende dem til et vilkårligt antal output destinationer.
- fluentd-en anden agent med avancerede behandlingsfunktioner. Det understøtter også syslog input ved hjælp af in_syslog plugin.,
Rsyslog er den mest populære syslog implementering og kommer installeret som standard i mange distributioner af Linu.. Hvis du har brug for mere avanceret filtrering eller brugerdefinerede parsing kapaciteter, Logstash er den næste mest populære valg. Logstash er også tæt integreret med Elastic Stack, som giver en komplet log management løsning. I denne vejledning fokuserer vi på at bruge rsyslog, da den er så udbredt.
config
Konfigurer Rsyslog.conf
den vigtigste rsyslog-konfigurationsfil er placeret på
/etc/rsyslog.conf
., Du kan gemme yderligere konfigurationsfiler i/etc / rsysloggen.d / directory. For eksempel på Ubuntu indeholder denne mappe/etc/rsyslog.d/50-default.conf
, som instruerer rsyslog til at skrive systemlogfilerne til fil. Du kan læse mere om konfigurationsfilerne i rsyslog dokumentationen.konfiguration af rsyslog indebærer opsætning af inputkilder (hvor rsyslog modtager logfiler), samt destinationsregler for hvor og hvordan logfiler skrives. Rsyslog leverer allerede standardindstillinger til modtagelse af syslog-begivenheder, så du normalt bare skal tilføje din centraliseringsserver som et output., Rsyslog bruger RainerScript for sin konfiguration syntaks. I dette eksempel videresender vi vores logfiler til serveren på
central.example.com
over TCP-port 514.action(type="omfwd" protocol="tcp" target="central.example.com" port="514")
alternativt kunne vi sende vores logfiler til en logstyringsløsning. Cloud-baseret log management udbydere som SolarWinds® Loggly® vil give dig et værtsnavn og port, som du kan sende dine logs til ved blot at ændre
target
ogport
felter. Spørg din udbyders dokumentation, når du konfigurerer rsyslog..,direkte
Logging filer og mapper
Rsyslog giver imfile-modulet, som gør det muligt at overvåge logfiler til nye begivenheder. Dette lader dig angive en fil eller mappe som en logkilde. Rsyslog kan overvåge individuelle filer samt hele mapper.
for eksempel ønsker vi at overvåge logfiler oprettet af Apache-serveren. Vi kan gøre det ved at oprette en ny fil i
/etc/rsyslog.d/
kaldetapache.conf
, Indlæs imfile-modulet og tilføj Apache ‘ s logfiler som input.,filparameteren understøtter jokertegn til overvågning af flere filer såvel som mapper.
protokol
hvilken protokol: UDP, TCP eller RELP?
Der er tre hovedprotokoller, du kan vælge imellem, når du sender logdata: UDP, TCP og RELP.
UDP sender meddelelser uden at garantere levering eller en kvittering for modtagelse (ACK). Det gør et enkelt forsøg på at sende en pakke, og hvis leveringen fejler, forsøger den ikke igen. Det er meget hurtigere og bruger færre ressourcer end andre protokoller, men bør kun bruges på pålidelige netværk som localhost., UDP understøtter heller ikke kryptering af logfiler.
TCP er den mest almindeligt anvendte protokol til streaming over Internettet, da den kræver en ACK, før den sender den næste pakke. Hvis leveringen mislykkes, fortsætter den med at prøve igen, indtil den med succes leverer beskeden. TCP kræver dog et håndtryk og aktiv forbindelse mellem afsenderen og modtageren, der bruger yderligere netværksressourcer.RELP (Reliable Event Logging Protocol) er designet specielt til rsyslog og er uden tvivl den mest pålidelige af disse tre protokoller., Det anerkender modtagelse af data i applikationslaget og vil sende igen, hvis der er en fejl. Da det er mindre almindeligt, skal du sørge for, at din destination også understøtter denne protokol.
Hvis rsyslog støder på et problem ved lagring af logfiler, f.eks. en utilgængelig netværksforbindelse, vil den stå i kø i logfilerne, indtil forbindelsen er genoprettet. Logfilerne i kø gemmes som standard i hukommelsen. Hukommelsen er dog begrænset, og hvis problemet fortsætter, kan logfilerne overstige hukommelseskapaciteten, hvilket kan føre til tab af data. For at forhindre dette skal du overveje at bruge diskkøer.,
Advarsel: Du kan miste data, hvis du kun gemmer logfiler i hukommelsen.
quue
send pålideligt med Diskassisterede køer
Rsyslog kan kø dine logfiler til disken, når hukommelsen er fuld. Diskassisterede køer gør transport af logfiler mere pålidelige. Her er et eksempel på, hvordan du konfigurerer en log videresendelsesregel i rsyslog med en diskassisteret kø.
Krypter
Krypter logfiler ved hjælp af TLS
Når datasikkerhed og privatliv er et problem, bør du overveje at kryptere dine logfiler. Sniffere og mellemmænd kunne læse dine logdata, hvis du overfører dem over Internettet I klar tekst., Du bør kryptere dine logfiler, hvis de indeholder private oplysninger, følsomme identifikationsdata eller regeringsregulerede data. Rsyslog-dæmonen kan kryptere dine logfiler ved hjælp af TLS-protokollen og holde dine data mere sikre.
processen med at aktivere TLS-kryptering afhænger af din logopsætning. Generelt involverer det følgende trin.
- Opret en certifikatmyndighed (CA). Der er eksempler på certifikater i rsyslogs
/contrib/gnutls
bibliotek, som kun er gode til test, men du skal oprette din egen til produktion., Hvis du bruger en log management service, vil det have en klar til dig. - Generer et digitalt certifikat til din server for at aktivere TLS, eller brug et fra din logadministrationsudbyder.
- Konfigurer din rsyslog-tjeneste til at sende TLS-krypterede data til din logadministrationstjeneste.
Her er et eksempel rsyslog konfiguration med TLS-kryptering. Udskift CERT og DOMAIN_NAME med din egen serverindstilling.,
$DefaultNetstreamDriverCAFile /etc/rsyslog.d/keys/ca.d/CERT.crt$ActionSendStreamDriver gtls$ActionSendStreamDriverMode 1$ActionSendStreamDriverAuthMode x509/name$ActionSendStreamDriverPermittedPeer *.DOMAIN_NAME.com
Log management services såsom SolarWinds Loggly ofte give deres egne CAs og certifikater, som du simpelthen er nødt til reference i din asterisk-prompt-konfiguration. For eksempel kræver aktivering af TLS med Loggly kun, at du Do .nloader Loggly-certifikatet til din /etc/rsyslog.d / directory, opdater din konfiguration og genstart rsyslog-tjenesten.
do .nload først certifikatet.
$ mkdir -pv /etc/rsyslog.d/keys/ca.d$ cd /etc/rsyslog.d/keys/ca.d$ curl -O https://logdog.loggly.com/media/logs-01.loggly.com_sha12.crt
åbn derefter
/etc/rsyslog.d/22-loggly.conf
konfigurationsfilen, og tilføj følgende:endelig skal du genstarte rsyslog.,
$ sudo service rsyslog restart
øv
Bedste Praksis for Anvendelse Logge
ud over de logfiler, at Linux opretter som standard, er det også en god idé at centralisere logs fra vigtige applikationer. Næsten alle Linu.-baserede serverapplikationer skriver deres statusoplysninger i separate, dedikerede logfiler. Dette omfatter database produkter som PostgreSQL eller MySQL, web-servere, som Nginx eller Apache, firewalls, print og fildelingstjenester, bibliotek og DNS-servere, og så videre.
den første ting administratorer gør efter installation af et program er at konfigurere det., Linu. – applikationer har typisk en.conf fil et eller andet sted i /etc mappe. Det kan også være et andet sted, men det er det første sted, hvor folk ser efter konfigurationsfiler. Afhængigt af hvor kompleks eller stor applikationen er, kan antallet af indstillelige parametre være få eller i hundreder. Se programmets dokumentation for at lære mere, eller brug Find-kommandoen til at prøve at finde filen selv.
# locate postgresql.conf/usr/pgsql-9.4/share/postgresql.conf.sample/var/lib/pgsql/9.4/data/postgresql.conf
Indstil en standardplacering for logfiler
Linu. – systemer gemmer typisk deres logfiler under
/var/log
bibliotek., Dette fungerer fint, men kontroller, om applikationen gemmer under en bestemt mappe under/var/log
. Hvis det gør det, fantastisk. Hvis ikke, kan du oprette en dedikeret mappe til appen under/var/log
. Hvorfor? Det skyldes, at andre applikationer gemmer deres logfiler under/var/log
også, og hvis din app gemmer mere end en logfil—måske en gang hver dag eller efter hver servicestart—kan det være lidt svært at gennemgå en stor mappe for at finde den ønskede fil.,Hvis du har mere end en forekomst af applikationen, der kører i dit netværk, er denne tilgang også praktisk. Tænk på en situation, hvor du muligvis har et dusin .ebservere, der kører i dit netværk. Hvis dine logfiler gemmes på en central syslog-server, hvordan ved du, hvilken logfil der indeholder hvilken servers logfiler? Ved at logge hver server i en separat mappe ved du præcis, hvor du skal se, når du fejler en server.
brug et statisk filnavn
mange applikationer tilføjer dynamiske data til deres logfilnavn, såsom den aktuelle dato eller tidsstempel., Dette er nyttigt til automatisk opdeling af logfiler efter dato, men det gør det sværere for tjenester som rsyslog at finde den nyeste fil. En bedre tilgang er at bruge et ikke-skiftende navn til din logfil og derefter bruge logrotate til at anvende et tidsstempel eller nummer på ældre logfiler.
Tilføj og Roter logfiler
programmer skal føje til eksisterende logfiler i stedet for at overskrive dem. Dette hjælper med at sikre, at alle loglinjer er fanget, og at ingen data går tabt, selvom applikationen genstarter. Logfiler kan dog vokse til at være meget store over tid., Hvis du forsøger at finde årsagen til et problem, kan du ende med at søge gennem titusinder af linjer.
Vi anbefaler at tilføje dine logfiler til en enkelt fil, men vi anbefaler også at konfigurere applikationen til at rotere dens logfiler så ofte. Værktøjer som logrotate kan gøre dette automatisk ved at kopiere den aktuelle logfil til en ny placering, give den et unikt navn og derefter afkorte den aktuelle logfil., Dette har en række fordele, herunder:
- Logs, der er delt på tværs af filer efter dato og tid, hvilket gør det let at finde de logfiler for en bestemt dato
- Hver log fil er meget mindre, hvilket gør dem lettere at søge i, og er nemmere at sende over et netværk
- Sikkerhedskopiering af log-filer er meget nemmere, og at slette eller arkivere ældre logs kan gøres langt mere hurtigt
Hvor ofte du rotere logfiler afhænger af, hvor mange logs, du genererer. Start som en tommelfingerregel med at dreje dine logfiler en gang om dagen.
Indstil politikker for opbevaring af logfiler
hvor længe opbevarer du en logfil?, Det kommer bestemt ned på forretningskravet. Du kan blive bedt om at holde en uges værd at logge oplysninger, eller det kan være et lovkrav at holde 10 års værd af data. Uanset hvad det er, skal logfiler gå fra serveren på et eller andet tidspunkt.
efter vores mening, medmindre andet kræves, bør du holde mindst en måneds værdi af logfiler online, plus kopiere dem til en sekundær placering (som en logning server). Noget ældre end det kan losses til et separat medie. For eksempel, hvis du er på A .s, kan dine ældre logfiler kopieres til Glacier.,
Gem logfiler på et separat drev
logfiler skrives konstant, hvilket kan føre til høj disk I / O på travle systemer. Som en god praksis skal du montere
/var/log
på en separat lagerenhed. Dette forhindrer logfil skriver i at forstyrre udførelsen af dine applikationer, især på diskbaseret opbevaring. Dette forhindrer også logfiler i at fylde hele drevet, hvis de bliver for store.formater dine logposter
hvilke oplysninger skal du fange i hver logindgang?
det afhænger af, hvad du vil bruge loggen til., Vil du kun bruge det til fejlfindingsformål, eller vil du fange alt, hvad der sker? Er det et lovkrav at fange, hvad hver bruger kører eller ser?
Hvis du bruger logfiler til fejlfinding, skal du kun gemme fejl, advarsler eller fatale meddelelser. Der er ingen grund til at fange fejlfindingsmeddelelser, for eksempel. Appen logger muligvis fejlfindingsmeddelelser som standard, eller en anden administrator har muligvis tændt for en anden fejlfindingsøvelse, men du skal slå dette fra, fordi det bestemt kan fylde pladsen hurtigt., På et minimum, fange dato, tid, klient programnavn, kilde IP eller klient værtsnavn, handling udført, og selve meddelelsen.
For eksempel overveje standard logging adfærd Postgres .l. Logfiler gemmes i
/var/log/postgresql
, og hver fil starter med Postgres .l-efterfulgt af datoen. Filer roteres dagligt, og ældre filer tilføjes med et nummer baseret på, hvornår de blev roteret. Hver log linje kan være præfikset med felter som den aktuelle tidsstempel, nuværende bruger, database navn, session ID, og transaktions-ID., Du kan ændre disse indstillinger ved at redigere Postgres .ls konfigurationsfil (/etc/postgresql/11/main/postgresql.conf
i Debian).som standard viser hver loglinje tidsstempel-og Postgres .l-proces-ID efterfulgt af logmeddelelsen.
Overvåg logfiler med Imfile
traditionelt er den mest almindelige måde for applikationer at logge deres data på med filer. Filer er nemme at søge på en enkelt maskine, men skalerer ikke godt med flere servere. Med rsyslog kan du overvåge filer for ændringer og importere nye begivenheder til syslog, hvor du derefter kan videresende logfilerne til en centraliseret server., Dette gøres ved hjælp af imfile-modulet. For at aktivere modulet skal du oprette en ny konfigurationsfil i
/etc/rsyslog.d/
og derefter tilføje en filindgang som denne.Tilføj dine outputstrømme efter denne konfiguration, og rsyslog sender logfiler fra den angivne fil til outputdestinationen.
Log direkte på Syslog-stikket med IMU .sock
en socket ligner et UNI. – filhåndtag, bortset fra at det læser data i hukommelsen i stedet for at skrive det til disk. I tilfælde af syslog kan du sende logfiler direkte til syslog uden at skulle skrive det til en fil først.,
denne tilgang gør effektiv brug af systemressourcer, hvis din server er begrænset af disk I / O, eller du ikke har brug for lokale fillogfiler. Ulempen ved denne tilgang er, at stikket har en begrænset køstørrelse. Hvis din syslog-dæmon går ned eller ikke kan følge med, kan du miste logdata.
for at aktivere socket logging i rsyslog, tilføj følgende linje til din rsyslog konfiguration (den er aktiveret som standard).
$ModLoad imuxsock
Dette skaber et stik på
/dev/log socket
som standard, men du kan ændre dette ved at ændre SysSock.Navn parameter., Du kan også indstille indstillinger som hastighedsbegrænsning og Flo .kontrol. Du kan finde flere oplysninger i dokumentationen til rsyslog IMU .sock.UDP-logfiler med Imupd
nogle applikationer udsender logdata i UDP-format, som er standardprotokollen, når du overfører logfiler over et netværk eller dit localhost. Din syslog-dæmon modtager disse logfiler og kan behandle eller overføre dem i et andet format. Alternativt kan du sende logfilerne til en anden syslog-server eller til en logadministrationsløsning.,
Brug følgende kommando til at konfigurere rsyslog til at acceptere syslog-data over UDP på standardporten 514.
$ModLoad imudp$UDPServerRun 514
Administrer konfiguration på mange servere
Når du kun har et par servere, kan du manuelt konfigurere logning på dem. Når du har et par dusin eller flere servere, kan du drage fordel af værktøjer, der gør dette lettere og mere skalerbart. På et grundlæggende niveau er målet med hvert værktøj at aktivere syslog på hver af dine servere, anvende en konfiguration og sikre, at ændringerne træder i kraft.,
Pssh
Pssh (eller parallel ssh) lader dig køre en SSH-kommando på flere servere parallelt. Brug en pssh-implementering til kun et lille antal servere. Hvis en af dine servere mislykkes, skal du SSH ind i den mislykkede server og udføre installationen manuelt. Hvis du har flere mislykkede servere, kan den manuelle implementering på dem tage lang tid.
Puppet/Chef
Puppet og Chef er konfigurationsstyringsværktøjer, der automatisk kan konfigurere alle dine servere og bringe dem til samme tilstand. De kan overvåge dine servere og holde dem synkroniseret., Puppet og Chef er kraftfulde værktøjer, der er i stand til at installere soft .are, oprette filer, genstarte tjenester og meget mere. Hvis du ikke er sikker på, hvilken der er mere egnet til din installationskonfigurationsstyring, kan du sætte pris på Info .orlds sammenligning af de to værktøjer.nogle leverandører tilbyder også moduler eller opskrifter til konfiguration af syslog. For eksempel giver Loggly et Marionetmodul, der bruger rsyslog til automatisk at videresende logfiler fra dine agenter. Installer loggly Puppet-modulet på din Puppet master, og tilføj derefter følgende konfiguration til dit Puppet manifest.,
# Send syslog events to Loggly class { 'loggly::rsyslog': customer_token => 'YOUR_CUSTOMER_TOKEN', }
Når dine agenter opdateres, begynder de at logge for at logge.
Kubernetes
Kubernetes er et orkestreringsværktøj til styring af containere på flere noder. Kubernetes giver en komplet logning arkitektur, der automatisk indsamler og skriver container logs til en fil på værten maskine. Du kan få vist logfiler for bestemt Pod ved at køre kommandoen kubectl logs <pod navn>, som er nyttige for at få adgang til programmet logger på en ekstern server.,mange log management løsninger giver agenter, der kan implementeres over Kubernetes at indsamle både programlogfiler og host logs. For eksempel giver Loggly et DaemonSet, der udsender en logging Pod til hver node i en klynge. Pod samler logfiler fra andre Pods og fra værten selv, og implementering af det som et DaemonSet hjælper med at sikre, at der altid er en forekomst, der kører på hver node. Logning af en Kubernetes-klynge med Loggly er lige så let som at køre følgende kommandoer.
Docker
Docker bruger containere til at køre applikationer uafhængigt af den underliggende server., Det bruges ofte som container runtime for orkestratorer som Kubernetes, men kan bruges som en selvstændig platform. ZDNet har en dybdegående artikel om brug af Docker i dit datacenter.,
Der er flere måder at logge fra Docker beholdere, herunder:
- at Logge via Docker at Logge Driver til host-systemet (anbefales)
- Routing alle container logs til en enkelt dedikeret logge container (dette er, hvordan logspout container virker)
- Logge ind på en sidevogn at logge container
- Tilføje en logning agent til container
Du kan også bruge Docker beholdere til at indsamle logs fra værten., Hvis din container har en kørende syslog-tjeneste, kan du enten sende logfiler fra værten til containeren via syslog, eller montere værtens logfiler i containeren og bruge en filovervågningsagent til at læse filerne.
Sælgerscripts eller agenter
de fleste logstyringsløsninger tilbyder scripts eller agenter til at gøre det relativt nemt at sende data fra en eller flere servere. Heavy agentseight agenter kan bruge op ekstra systemressourcer. Nogle leverandører integrerer med eksisterende rsyslog-dæmoner for at videresende logfiler uden at bruge betydeligt flere ressourcer., Loggly, for eksempel, giver et script, der videresender logs fra fetchmail til Loggly indtagelse servere ved hjælp af omfwd modul.
se det. Analyser det. Undersøg det. Løs det
se hvad der betyder noget.
START GRATIS Prøveversion
Skriv et svar