Administrere Linux Logger

posted in: Articles | 0

En nøkkel beste praksis for å logge er å sentralisere eller samlet-loggene på ett sted, spesielt hvis du har flere servere eller arkitektur lagene. Moderne programmer ofte har flere nivåer av infrastruktur som kan inneholde en blanding av lokale tjenere og cloud-tjenester. Prøver å jakte ned riktig fil for å feilsøke en feil ville være utrolig vanskelig, og prøver å relatere problemstillinger på tvers av systemene vil bli enda vanskeligere., Det er ingenting mer frustrerende enn å finne ut den informasjonen du ville ikke var fanget i en loggfil, eller at loggfilen som kunne ha holdt svaret var tapt etter en server på nytt.

Dette avsnittet forklarer hvordan du bruker sentralisering tjenester for å samle inn og sentralisere Linux loggfiler.

fordelene

Fordeler av å Sentralisere Logger

Sentralisere loggene gjør søker gjennom logge data enklere og raskere, siden alle loggene er tilgjengelig på ett sted., I stedet for å gjette hvilken server har riktig fil, kan du enkelt få tilgang til depotet av logg data for å søke etter relevante hendelser. Sentralisering er en viktig del av store management løsninger, som det tillater dem å analysere, analysere, og indeksen logger før du lagrer dem på ett sted. Dette gjør feilsøking og løse problemer produksjon enklere og raskere. Sentralisering også tilbyr disse fordeler.

  • Loggene er sikkerhetskopiert på en annen plassering, beskytte dem mot tilfeldig eller utilsiktet tap., Dette sørger også for dem som er tilgjengelig i ditt tilfelle servere går ned eller slutter å svare.
  • Du trenger ikke å bruke SSH eller ineffektiv grep kommandoer, som kan bruke verdifulle dataressurser for komplekse søk.
  • Du kan redusere mengden diskplass som brukes av loggfiler.
  • Ingeniører kan feilsøke problemer produksjon uten direkte tilgang til systemer.

Mens sentralisert logg management er generelt bedre alternativ, det er fortsatt en viss risiko, for eksempel dårlig net tilkobling fører til tap av data, eller logger du bruker mye av båndbredden på nettverket., Vi vil diskutere hvordan intelligent løse disse problemene på i avsnittene nedenfor.

populære

Populære Verktøy for å Sentralisere Logger

de Fleste Linux-systemer allerede sentralisere logger ved hjelp av en syslog daemon. Som vi forklarte i Linux Logging Grunnleggende delen, syslog er en tjeneste som samler loggfiler fra tjenester og programmer som kjører på vertsmaskinen. Det kan skrive de logger seg til fil, eller videresende dem til en annen server via syslog-protokollen., Det er flere syslog implementeringer som du kan bruke, blant annet:

  • Rsyslog– en lett-vekt daemon installert på de fleste vanlige Linux-distribusjoner.
  • syslog-ng– den nest mest populære syslog-nisse for Linux.
  • logstash– en tyngre vekt agent som kan gjøre mer avansert behandling og analysering. Det kan du lese syslog meldinger via syslog-inngang plugin og videresende dem til noen antall output destinasjoner.
  • fluentd– en annen agent med avansert prosessering evner. Den støtter også syslog innspill bruke in_syslog plugin.,

Rsyslog er den mest populære syslog implementering og kommer ferdig installert som standard i mange distribusjoner av Linux. Hvis du trenger mer avansert filtrering eller egendefinerte parsing evner, Logstash er den nest mest populære valg. Logstash er også tett integrert med Elastisk Stabel, som gir en komplett logg management-løsning. For denne guiden, vil vi fokus på å bruke rsyslog, siden det er så mye brukt.

config

Konfigurer Rsyslog.conf

Den viktigste rsyslog konfigurasjonsfilen ligger på /etc/rsyslog.conf., Du kan lagre ytterligere konfigurasjon filer i /etc/rsyslog.d/ katalog. For eksempel, på Ubuntu, denne katalogen inneholder /etc/rsyslog.d/50-default.conf, som instruerer rsyslog å skrive systemet logger fil. Du kan lese mer om konfigurering filer i rsyslog dokumentasjon.

Konfigurere rsyslog innebærer å sette opp input kilder (der rsyslog mottar logger), så vel som reisemål regler for hvor og hvordan logger som er skrevet. Rsyslog allerede gir standarder for å motta syslog arrangementer, så du normalt trenger bare å legge til din sentralisering server som en utgang., Rsyslog bruker RainerScript for sin konfigurasjon syntaks. I dette eksemplet, vi er videresending av loggene våre til serveren central.example.com TCP-port 514.

action(type="omfwd" protocol="tcp" target="central.example.com" port="514")

Alternativt kan vi sende loggene våre til en logg management-løsning. Cloud-basert log management leverandører som SolarWinds® Loggly® vil gi deg et vertsnavn og port som du kan sende loggene til å bare ved å endre target og port felt. Sjekk med din leverandør av dokumentasjonen når du konfigurerer rsyslog..,

direkte

Logging Filer og Kataloger

Rsyslog gir imfile modul, som gjør det mulig å overvåke loggfiler for nye hendelser. Dette lar deg angi en fil eller en katalog som en logg kilde. Rsyslog kan overvåke individuelle filer, så vel som hele kataloger.

For eksempel, vi ønsker å overvåke loggfilene som ble opprettet av Apache server. Vi kan gjøre det ved å opprette en ny fil i /etc/rsyslog.d/ kalt apache.conf legg den imfile modul, og legge til Apache ‘ s logg-filer som input.,

Filen parameter støtter jokertegn for å overvåke flere filer og kataloger.

– protokollen

Hvilken Protokoll: UDP, TCP, eller RELP?

Det er tre viktigste protokollene som du kan velge fra når du sender logger data: UDP, TCP, og RELP.

UDP sender meldinger uten garantere levering eller en anerkjennelse av kvittering (ACK). Det gjør et enkelt forsøk på å sende en pakke, og hvis levering svikter, er det ikke prøv igjen. Det er mye raskere og bruker mindre ressurser enn andre protokoller, men bør bare brukes på pålitelig nettverk som localhost., UDP også støtter ikke kryptering av logger.

TCP er mest vanlig brukt protokoll for streaming over Internett, siden det krever en ACK før du sender den neste pakke. Hvis levering mislykkes, vil det fortsette prøver på nytt om før det lykkes leverer meldingen. Imidlertid, TCP krever et håndtrykk og aktiv tilkobling mellom avsender og mottaker, som bruker ekstra nettverket ressurser.

RELP (Pålitelig hendelseslogging Protocol) er utviklet spesielt for rsyslog, og er uten tvil den mest pålitelige av disse tre protokoller., Det erkjenner mottak av data i programmet lag og send på nytt hvis det oppstår en feil. Siden det er mindre vanlig, må du sørge for at din destinasjon også støtter denne protokollen.

Hvis rsyslog møter et problem ved lagring av logger, for eksempel et utilgjengelig nettverkstilkobling, vil det kø loggene til forbindelsen er gjenopprettet. De som står i kø loggene lagres i minnet som standard. Men minnet er begrenset, og hvis problemet vedvarer, loggene kan overstige kapasiteten, noe som kan føre til tap av data. For å hindre dette, bør du vurdere å bruke disk køer.,

Advarsel: Du kan miste data hvis du lagrer logger bare i minnet.

que

Pålitelig Sende med Disk-baserte Køer på

Rsyslog kan køen loggene til disk når minnet er fullt. Disk-baserte køer gjøre transport av tømmer mer pålitelig. Her er et eksempel på hvordan du konfigurerer en logg for videresending av regelen i rsyslog med en disk-assistert køen.

krypter

Krypter Logger Bruke TLS

Når datasikkerhet og personvern er en bekymring, bør du vurdere å kryptere loggene. Sniffere og mellommenn kan lese loggen din data hvis du overføring over internett i klar tekst., Du bør kryptere logger, hvis de inneholder privat informasjon, sensitive identification data, eller regulert av staten data. Den rsyslog daemon kan kryptere logger via TLS-protokollen og holde dine data tryggere.

prosessen med å aktivere TLS-kryptering, avhenger av din logging setup. Generelt, er det innebærer følgende trinn.

  1. Opprett et Certificate Authority (CA). Det er for eksempel sertifikater i rsyslog er /contrib/gnutls – katalogen, som er god bare for testing, men du trenger for å lage dine egne for produksjon., Hvis du bruker en log management service, vil det ha en klar for deg.
  2. Generere et digitalt sertifikat til serveren for å aktivere TLS, eller bruk en fra loggen management service provider.
  3. Konfigurer din rsyslog-tjenesten til å sende TLS-kryptert data til loggen din management service.

Her er et eksempel rsyslog konfigurasjon med TLS-kryptering. Bytt CERT og DOMENENAVN med din egen server innstillingen.,

$DefaultNetstreamDriverCAFile /etc/rsyslog.d/keys/ca.d/CERT.crt$ActionSendStreamDriver gtls$ActionSendStreamDriverMode 1$ActionSendStreamDriverAuthMode x509/name$ActionSendStreamDriverPermittedPeer *.DOMAIN_NAME.com

Logg management tjenester som SolarWinds Loggly ofte gi sine egne CAs og sertifikater, som du bare trenger å referere til i din rsyslog konfigurasjon. For eksempel, slik at TLS med Loggly bare krever at du laste ned Loggly sertifikat til din /etc/rsyslog.d/ directory, oppdatere konfigurasjonen og start rsyslog service.

Første, laste ned sertifikatet.

$ 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

Så, åpne /etc/rsyslog.d/22-loggly.conf konfigurering-fil og legge til følgende:

til Slutt, starter rsyslog.,

$ sudo service rsyslog restart

praksis

Beste Praksis for Programmet å Logge på

I tillegg til den logger seg at Linux oppretter som standard, det er også en god idé å sentralisere logger fra viktige programmer. Nesten alle Linux-baserte server-applikasjoner skrive sin status informasjon i egne dedikerte loggfiler. Dette inkluderer database produkter som PostgreSQL eller MySQL, web-servere som Nginx eller Apache, brannmurer, skrive ut og fildeling tjenester, katalog og DNS-servere, og så videre.

Det første administratorer gjøre etter at du installerer et program på, er å konfigurere den., Linux-programmer har vanligvis en .conf-fil et eller annet sted i /etc-katalogen. Det kan være et annet sted også, men det er det første sted hvor folk ser for konfigurasjonsfiler. Avhengig av hvor kompleks eller store programmet er, antall stillbare parametere kan være få eller i hundrevis. Se programmets dokumentasjon for å lære mer, eller bruk finn-kommandoen til å prøve og finne filen selv.

# locate postgresql.conf/usr/pgsql-9.4/share/postgresql.conf.sample/var/lib/pgsql/9.4/data/postgresql.conf

Angi en Standard Plassering for loggfiler

Linux-systemer vanligvis lagrer sine loggfiler under /var/log – katalogen., Dette fungerer fint, men sjekk om programmet lagrer under en bestemt katalog under /var/log. Hvis den gjør det, flott. Hvis ikke, kan det hende du ønsker å opprette en egen katalog for appen under /var/log. Hvorfor? Det er fordi andre programmer lagrer logg-filer under /var/log også, og hvis appen lagrer mer enn en loggfil—kanskje en gang hver dag eller etter hver tjenesten er startet på nytt—det kan være litt vanskelig å gjennomgå en stor katalog for å finne filen du ønsker.,

Hvis du har mer enn én forekomst av program som kjører på nettverket, denne tilnærmingen er også praktisk. Tenk på en situasjon der du har kanskje et dusin web-servere som kjører i nettverket. Hvis loggene lagres på en sentral syslog server, hvordan vet du hvilken logger fil som inneholder server logger? Ved å logge deg inn hver server i en egen katalog, du vet nøyaktig hvor du skal lete når du feilsøker en server.

Bruk en Statisk Filnavn

Mange programmer legg til dynamiske data til sine logger fil, for eksempel gjeldende dato eller tidsstempel., Dette er nyttig for automatisk splitting logger av dato, men det gjør det vanskeligere for tjenester som rsyslog for å finne den nyeste filen. En bedre tilnærming er å bruke en ikke-endre navn på logg-fil, og deretter bruke logrotate å bruke et tidsstempel eller nummer eldre loggfiler.

Append og Rotere Logg-Filer

Programmer bør tilføy til eksisterende logger filer i stedet for å overskrive dem. Dette bidrar til å sikre alle logg linjer er tatt og ingen data blir tapt, selv om programmet starter på nytt. Imidlertid, loggfiler kan vokse til å bli veldig stor over tid., Hvis du prøver å finne årsaken til et problem, kan du ende opp med å søke gjennom titusener av linjer.

Vi anbefaler at du legger til loggene til en enkelt fil, men vi anbefaler også konfigurere programmet til å rotere loggfilene hver så ofte. Verktøy som logrotate kan gjøre dette automatisk ved å kopiere gjeldende logg-filen til en ny plassering, gi den et unikt navn, så truncating gjeldende logg-fil., Dette har en rekke fordeler, blant annet:

  1. Logger er fordelt over filer etter dato og tid, noe som gjør det enkelt å finne logger for en bestemt dato
  2. Hver loggfil er mye mindre, noe som gjør dem lettere å søke gjennom, og det er enklere å sende over et nettverk
  3. Sikkerhetskopiering loggfiler er mye lettere, og så slette eller arkivere eldre loggene kan gjøres mye raskere

Hvor ofte du rotere loggfiler, avhenger av hvor mange logger du genererer. Som en tommelfingerregel, kan du starte ved å rotere loggene gang per dag.

Angi loggfil Retningslinjer for Oppbevaring

Hvor lenge må du holde en logg-fil?, Som definitivt kommer ned til virksomheten kravet. Du kan bli bedt om å holde en uke igjen av logging, eller det kan være en regulatoriske krav til å holde 10 år igjen av data. Uansett hva det er, logger du trenger for å gå fra serveren på ett eller annet tidspunkt.

I vår mening, med mindre annet er påkrevd, bør du holde i minst en måned igjen av logg-filer på internett, samt kopiere dem til en ny plassering (som en logger server). Noe eldre enn det som kan bli avlastet til en separat media. For eksempel, hvis du er på AWS, eldre loggene kan kopieres til Breen.,

Lagre Logg-Filer på en Egen Stasjon

loggfiler er skrevet hele tiden, som kan føre til høye disk i/O på travle systemer. Som en av beste praksis, bør du montere /var/log på en egen lagringsenhet. Dette hindrer loggfil skriver fra forstyrre ytelsen til programmer, spesielt på disk-basert lagring. Dette hindrer også logg-filer fra å fylle opp hele harddisken i tilfelle de blir for store.

– Format Dine Oppføringer

Hva slags informasjon som du bør ta i hver oppføring?

Det avhenger av hva du ønsker å bruke loggen for., Ønsker du å bruke det bare for feilsøking formål, eller ønsker du å forevige alt som skjer? Det er et juridisk krav for å fange opp hva hver bruker er i drift eller visning?

Hvis du bruker logger seg for feilsøking, bare lagre feil, advarsler, eller dødelig meldinger. Det er ingen grunn til å fange debug meldinger, for eksempel. Appen kan logge debug meldinger som standard, eller en annen administrator kan ha gjort dette på en annen feilsøking trening, men du trenger ikke å slå av denne grunn kan det definitivt fylle opp plassen raskt., På et minimum, fange dato, tid, klient-program navn, kilde-IP-eller klient-vertsnavn, handlingen som skal utføres, og selve meldingen.

For eksempel, tenk standard logging virkemåten til PostgreSQL. Loggene er lagret i /var/log/postgresql, og hver fil som starter med postgresql – etterfulgt av dato. Filer roteres daglig, og eldre filer som blir lagt med et tall basert på når de ble rotert. Hver logg linje kan innledes med felt som gjeldende tidsstempel, gjeldende bruker, database navn, session-ID, og transaksjons-ID., Du kan endre disse innstillingene ved å redigere PostgreSQL er konfigurasjonsfilen (/etc/postgresql/11/main/postgresql.conf på Debian).

som standard, hver logg linje viser tidsstempel og PostgreSQL prosess-ID etterfulgt av loggmeldingen.

Skjerm Logg-Filer Med Imfile

Vanligvis den mest vanlige måten for programmer for å logge dataene deres er med filer. Filer er enkelt å søke på en enkelt maskin, men ikke omfanget godt med flere servere. Med rsyslog, kan du overvåke filer for endringer og importere nye hendelser i syslog, hvor du kan deretter videresende loggene til en sentralisert server., Dette er gjort ved hjelp av imfile modul. For å aktivere modulen, kan du opprette en ny konfigurasjonsfil i /etc/rsyslog.d/, og deretter legger til en fil input som dette.

Legg til din utgang bekker etter denne konfigurasjonen, og rsyslog vil sende loggene fra den angitte filen til destinasjon.

Logg Direkte til Syslog-Kontakt Med Imuxsock

En socket er lik en UNIX file håndtere, bortsett fra det leser dataene i minnet i stedet for å skrive til disk. I tilfelle av syslog, dette kan du sende logger direkte til syslog uten å måtte skrive den til en fil først.,

Denne tilnærmingen gjør effektiv bruk av systemressurser hvis serveren er begrenset av disk i/O eller du har ikke behov for lokal fil logger. Ulempen med denne tilnærmingen er at kontakten har en begrenset kø størrelse. Hvis syslog-nisse går ned, eller de kan ikke holde opp, da kan du miste logge data.

for Å aktivere socket logging i rsyslog, legge til følgende linje i rsyslog konfigurasjon (det er krysset av som standard).

$ModLoad imuxsock

Dette oppretter en socket på /dev/log socket som standard, men du kan endre dette ved å endre SysSock.Navn på parameter., Du kan også angi alternativer for eksempel hastighet begrensende, og flytkontroll. For mer informasjon, se rsyslog imuxsock dokumentasjon.

UDP-Logger Med Imupd

Noen programmer utgang logg data for UDP-format, som er en standard protokoll for å overføre logg filer over et nettverk eller din localhost. Din syslog daemon mottar disse loggene og kan behandle eller overføre dem i et annet format. Alternativt, kan du sende loggene til en annen syslog server eller en logg management-løsning.,

Bruk følgende kommando for å konfigurere rsyslog til å akseptere syslog data over UDP på standard port 514.

$ModLoad imudp$UDPServerRun 514

Administrer Konfigurasjon på Mange Servere

Når du har bare et par servere, kan du manuelt konfigurere logge på dem. Når du har et par dusin eller flere servere, kan du dra nytte av verktøy som gjør dette enklere og mer skalerbar. På et grunnleggende nivå, målet for hvert verktøy er å aktivere syslog på hver av dine servere, gjelder en konfigurasjon, og sikre at endringene trer i kraft.,

Pssh

Pssh (eller parallell SSH) kan du kjøre en ssh-kommandoen på flere servere i parallell. Bruk en pssh distribusjon for bare et lite antall servere. Hvis en av dine servere mislykkes, da har du til ssh i mislyktes server og gjør distribusjon manuelt. Hvis du har flere mislykkede servere, manuell distribusjon på dem kan ta lang tid.

Marionett/Kokk

Marionett og Kokk er configuration management verktøy som kan automatisk konfigurere alle dine servere, og bringe dem til samme tilstand. De kan overvåke dine servere og holde dem synkronisert., Marionett og Kokk er kraftig verktøy i stand til å installere programvaren, oppretter filer, starte tjenester, og mer. Hvis du ikke er sikker på hvilken som er mer egnet for distribusjon configuration management, du vil nok sette pris på InfoWorld er sammenligningen av de to verktøyene.

Noen leverandører tilbyr også moduler eller oppskrifter for å konfigurere syslog. For eksempel, Loggly gir en Marionett-modul som bruker rsyslog å automatisk videresende logger fra agenter. Installere Loggly Marionett-modulen på din Puppet master, legg deretter til følgende konfigurasjonen til det du Marionett manifest.,

 # Send syslog events to Loggly class { 'loggly::rsyslog': customer_token => 'YOUR_CUSTOMER_TOKEN', }

Når agenter oppdatere, vil de begynne å logge Loggly.

Kubernetes

Kubernetes er en orkestrering verktøy for å administrere containere på flere noder. Kubernetes gir en fullstendig logging arkitektur som automatisk samler inn og skriver container loggene til en fil på vertsmaskinen. Kan du vise logger for en bestemt Pod ved å kjøre kommandoen kubectl logger <pod navn>, som er nyttig for å få tilgang til programmet logger på en ekstern server.,

Mange logg management løsninger gir agenter som kan deployeres over Kubernetes å samle både programmet logger og vert logger. For eksempel, Loggly gir en DaemonSet som distribuerer en logging Pod til hver node i en klynge. Pod samler logger fra andre Kapsler og fra verten selv, og distribuere det som en DaemonSet bidrar til å sikre at det er alltid en forekomst som kjører på hver node. Logging en Kubernetes klynge med Loggly er så enkelt som å kjøre følgende kommandoer.

Docker

Docker bruker containere for å kjøre programmer som er uavhengig av den underliggende server., Det er ofte brukt som det beholder runtime for orchestrators som Kubernetes, men kan brukes som en frittstående plattform. ZDNet har en dyptgående artikkel om bruk av Docker i datasenteret.,

Det er flere måter å logge seg fra Docker beholdere blant annet:

  • Logging via Docker Logging Driver til vertssystemet (anbefalt metode)
  • Ruting beholder alle loggene til en dedikert logging container (dette er hvordan logspout container fungerer)
  • Logging til en xmp-logging container
  • for å Legge til en agent for å logge beholderen

Du kan også bruke Docker containere for å samle logger fra verten., Hvis beholderen har en kjører syslog-tjenesten, kan du enten sende loggene fra vert til container via syslog, eller monter vert ‘ s logg-filer i beholderen, og bruk en fil overvåking agent for å lese filene.

Leverandør Skript eller Agenter

de Fleste logg management solutions tilbyr skript eller agenter å gjøre å sende data fra en eller flere servere relativt enkelt. Tungt agenter kan bruke opp ekstra systemressurser. Noen leverandører kan integrere med eksisterende rsyslog daemoner å videresende logger uten å bruke vesentlig mer ressurser., Loggly, for eksempel, gir et skript som videresender logger fra rsyslog til Loggly inntak servere med det omfwd modul.

Se det. Analysere det. Inspisere den. Løse dem på

Se hva som er viktig.

START GRATIS PRØVEVERSJON

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *