klíčovou nejlepší praxe pro přihlášení je centralizovat nebo souhrnné protokoly v jednom místě, zejména pokud máte více serverů, nebo stylu vrstvy. Moderní aplikace mají často více úrovní infrastruktury, které mohou zahrnovat kombinaci on-premise serverů a cloudových služeb. Snaží se dopadnout pravého souboru se řešit chybu, by bylo neuvěřitelně obtížné, a snaží korelovat problémy napříč systémy by být ještě těžší., Není nic frustrujícího, než zjistit, že informace, které jste chtěli, nebyly zachyceny v souboru protokolu, nebo že soubor protokolu, který mohl mít odpověď, byl ztracen po restartu serveru.
tato část vysvětluje, jak používat centralizační služby ke shromažďování a centralizaci souborů protokolu Linux.
výhody
Výhody Centralizace Protokolů
Centralizace protokolů umožňuje vyhledávání prostřednictvím protokolu dat jednodušší a rychlejší, protože všechny vaše protokoly jsou dostupné na jednom místě., Místo hádání, který server má správný soubor, můžete jednoduše přistupovat k úložišti dat protokolu hledat relevantní události. Centralizace je klíčovou součástí velkých řešení pro správu, protože jim umožňuje analyzovat, analyzovat a indexovat protokoly před jejich uložením na jednom místě. To usnadňuje a urychluje řešení problémů s výrobou. Centralizace také nabízí tyto výhody.
- protokoly jsou zálohovány na samostatném místě a chrání je před náhodnou nebo neúmyslnou ztrátou., To také udržuje je přístupné v případě, že vaše servery jít dolů nebo se nereaguje.
- nemusíte používat SSH nebo neefektivní příkazy grep, které mohou používat cenné výpočetní prostředky pro komplexní vyhledávání.
- můžete snížit množství místa na disku používané soubory protokolu.
- inženýři mohou řešit problémy s výrobou bez přímého přístupu k systémům.
Zatímco centralizovaný log management je obecně lepší volba, stále existují určitá rizika, například špatné net připojení, což vede ke ztrátě dat, nebo protokoly využívající velkou šířku pásma sítě., Budeme diskutovat o tom, jak inteligentně řešit tyto problémy v sekcích níže.
populární
populární nástroje pro centralizaci protokolů
většina systémů Linux již centralizuje protokoly pomocí démona syslog. Jak jsme vysvětlili v sekci Základy protokolování Linuxu, syslog je služba, která shromažďuje soubory protokolu ze služeb a aplikací běžících na hostiteli. To může psát tyto protokoly do souboru, nebo předat je na jiný server pomocí protokolu syslog., Existuje několik implementací syslog, které můžete použít, včetně:
- Rsyslog-daemon s nízkou hmotností nainstalovaný na nejběžnějších distribucích Linuxu.
- syslog-ng-druhý nejoblíbenější démon syslog pro Linux.
- logstash-těžší činidlo, které může provádět pokročilejší zpracování a analýzu. To může číst zprávy syslog pomocí vstupního pluginu syslog a předat je do libovolného počtu výstupních destinací.
- fluentd-další agent s pokročilými možnostmi zpracování. To také podporuje vstup syslog pomocí in_syslog plugin.,
Rsyslog je nejoblíbenější implementací syslogu a ve výchozím nastavení je nainstalován v mnoha distribucích Linuxu. Pokud potřebujete pokročilejší možnosti filtrování nebo vlastní analýzy, Logstash je další nejoblíbenější volbou. Logstash je také pevně integrován s elastickým stackem, který poskytuje kompletní řešení správy protokolu. Pro tuto příručku se zaměříme na používání rsyslogu, protože je tak široce používán.
config
Configure Rsyslog.conf
hlavní konfigurační soubor rsyslog je umístěn na /etc/rsyslog.conf
., Další konfigurační soubory můžete uložit do/etc / rsyslog.d / adresář. Například v Ubuntu obsahuje tento adresář /etc/rsyslog.d/50-default.conf
, který instruuje rsyslog k zápisu systémových protokolů do souboru. Více o konfiguračních souborech si můžete přečíst v dokumentaci rsyslog.
Konfigurace rsyslog zahrnuje nastavení vstupního zdroje (kde rsyslog obdrží protokoly), stejně jako určení pravidel pro kde a jak protokoly jsou písemné. Rsyslog již poskytuje výchozí nastavení pro příjem událostí syslog, takže obvykle stačí přidat centralizační server jako výstup., Rsyslog používá RainerScript pro jeho konfigurační syntaxi. V tomto příkladu přeposíláme naše protokoly na server na central.example.com
přes TCP port 514.
action(type="omfwd" protocol="tcp" target="central.example.com" port="514")
alternativně bychom mohli poslat naše protokoly do řešení správy protokolu. Cloud-based log management poskytovatelů, jako SolarWinds® Loggly® vám poskytne název hostitele a port, který můžete posílat své záznamy na jednoduše tím, že mění target
port
pole. Při konfiguraci rsyslogu se obraťte na dokumentaci svého poskytovatele..,
přímé
Protokolování Souborů a Adresářů
Rsyslog poskytuje imfile modul, který umožňuje sledovat soubory protokolu pro nové události. To vám umožní zadat soubor nebo adresář jako zdroj protokolu. Rsyslog může sledovat jednotlivé soubory i celé adresáře.
například chceme sledovat soubory protokolu vytvořené serverem Apache. Můžeme tak učinit vytvořením nového souboru v /etc/rsyslog.d/
s názvem apache.conf
, načtěte modul imfile a přidejte soubory protokolu Apache jako vstupy.,
parametr soubor podporuje zástupné znaky pro sledování více souborů, stejně jako adresáře.
protokol
který protokol: UDP, TCP nebo RELP?
při přenosu dat protokolu si můžete vybrat ze tří hlavních protokolů: UDP, TCP a RELP.
UDP odesílá zprávy bez záruky doručení nebo potvrzení o přijetí (ACK). To dělá jediný pokus poslat paket, a v případě, že dodávka selže, to nezkouší znovu. Je to mnohem rychlejší a používá méně zdrojů než jiné protokoly, ale mělo by být použito pouze na spolehlivých sítích, jako je localhost., UDP také nepodporuje šifrování protokolů.
TCP je nejčastěji používaný protokol pro streamování přes Internet, protože před odesláním dalšího paketu vyžaduje ACK. Pokud se dodávka nezdaří, bude pokračovat v opakování, dokud zprávu úspěšně nedodá. TCP však vyžaduje handshake a aktivní spojení mezi odesílatelem a přijímačem, který využívá další síťové zdroje.
Relp (Reliable Event Logging Protocol) je navržen speciálně pro rsyslog a je pravděpodobně nejspolehlivější z těchto tří protokolů., Uznává příjem dat v aplikační vrstvě a bude znovu odesílat, pokud dojde k chybě. Protože je to méně běžné, budete se muset ujistit, že váš cíl také podporuje tento protokol.
Pokud se rsyslog setká s problémem při ukládání protokolů, jako je například nedostupné síťové připojení, bude fronty protokolů, dokud nebude obnoveno připojení. Protokoly ve frontě jsou ve výchozím nastavení uloženy v paměti. Paměť je však omezená a pokud problém přetrvává, protokoly mohou překročit kapacitu paměti, což může vést ke ztrátě dat. Chcete-li tomu zabránit, zvažte použití diskových front.,
varování: data můžete ztratit, pokud ukládáte protokoly pouze do paměti.
que
spolehlivě odeslat s diskem asistované fronty
Rsyslog Může fronty protokoly na disk, když je paměť plná. Diskové fronty zvyšují spolehlivost přepravy protokolů. Zde je příklad, jak nakonfigurovat pravidlo přesměrování protokolu v rsyslogu pomocí fronty podporované diskem.
šifrování
šifrování protokolů pomocí TLS
pokud jde o zabezpečení dat a soukromí, měli byste zvážit šifrování protokolů. Sniffers a prostředníci mohli číst data protokolu, pokud je přenášíte přes internet v jasném textu., Protokoly byste měli zašifrovat, pokud obsahují soukromé informace, citlivé identifikační údaje nebo vládou regulovaná data. Démon rsyslog může šifrovat vaše protokoly pomocí protokolu TLS a udržovat vaše data bezpečnější.
proces Povolení šifrování TLS závisí na nastavení protokolování. Obecně se jedná o následující kroky.
- Vytvořte certifikační autoritu (CA). V adresáři rsyslog jsou ukázkové certifikáty
/contrib/gnutls
, které jsou dobré pouze pro testování, ale musíte si vytvořit vlastní pro výrobu., Pokud používáte službu správy protokolu, bude pro vás připravena. - Vygenerujte digitální certifikát pro váš server, který umožní TLS, nebo jej použijte od poskytovatele služeb správy protokolu.
- nakonfigurujte službu rsyslog tak, aby odesílala TLS šifrovaná data do služby správy protokolu.
zde je příklad konfigurace rsyslog s šifrováním TLS. Nahraďte CERT a DOMAIN_NAME vlastním nastavením serveru.,
$DefaultNetstreamDriverCAFile /etc/rsyslog.d/keys/ca.d/CERT.crt$ActionSendStreamDriver gtls$ActionSendStreamDriverMode 1$ActionSendStreamDriverAuthMode x509/name$ActionSendStreamDriverPermittedPeer *.DOMAIN_NAME.com
Log management services, jako je SolarWinds Loggly často poskytují své vlastní CAs a certifikáty, které jednoduše potřebujete odkazovat v konfiguraci rsyslog. Například povolení TLS pomocí Loggly vyžaduje pouze stažení certifikátu Loggly do / etc / rsyslog.d / adresář, aktualizujte konfiguraci a restartujte službu rsyslog.
nejprve si stáhněte certifikát.
$ 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
poté otevřete konfigurační soubor /etc/rsyslog.d/22-loggly.conf
a přidejte následující:
nakonec restartujte rsyslog.,
$ sudo service rsyslog restart
practice
Best Practices for application Logging
kromě protokolů, které Linux ve výchozím nastavení vytváří, je také dobré centralizovat protokoly z důležitých aplikací. Téměř všechny serverové aplikace založené na Linuxu zapisují své informace o stavu do samostatných, vyhrazených souborů protokolu. To zahrnuje databázové produkty, jako je PostgreSQL nebo MySQL, webové servery jako Nginx nebo Apache, firewally, služby tisku a sdílení souborů, servery adresářů a DNS atd.
první věc, kterou Administrátoři dělají po instalaci aplikace, je nakonfigurovat ji., Linuxové aplikace mají obvykle .conf soubor někde v adresáři / etc. Může to být také někde jinde, ale to je první místo, kde lidé hledají konfigurační soubory. V závislosti na tom, jak složitá nebo velká je aplikace, může být počet nastavitelných parametrů několik nebo stovky. Další informace naleznete v dokumentaci aplikace nebo pomocí příkazu locate zkuste soubor najít sami.
# locate postgresql.conf/usr/pgsql-9.4/share/postgresql.conf.sample/var/lib/pgsql/9.4/data/postgresql.conf
Nastavit Standardní Umístění pro Soubory Protokolu
Linuxové systémy obvykle zachránit své log soubory v /var/log
adresář., To funguje dobře, ale zkontrolujte, zda aplikace uloží pod konkrétním adresářem pod /var/log
. Pokud ano, skvělé. Pokud tomu tak není, možná budete chtít vytvořit vyhrazený adresář pro aplikaci pod /var/log
. Proč? To proto, že další aplikace uložit své log soubory v /var/log
příliš a pokud vaše aplikace uloží více než jeden soubor protokolu—možná, jednou, každý den nebo po každém restartování služby—to může být trochu obtížné se plazit přes velký adresář najít soubor, který chcete.,
Pokud máte více než jednu instanci aplikace spuštěné ve vaší síti, je tento přístup také užitečný. Přemýšlejte o situaci, kdy můžete mít v síti tucet webových serverů. Pokud jsou vaše protokoly uloženy na centrálním serveru syslog, jak víte, který soubor protokolu obsahuje protokoly serveru? Přihlášením každého serveru do samostatného adresáře přesně víte, kde hledat při odstraňování problémů s jedním serverem.
použijte statický název souboru
mnoho aplikací přidává dynamická data do názvu souboru protokolu, například aktuální datum nebo časové razítko., To je užitečné pro automatické rozdělení protokolů podle data, ale pro služby, jako je rsyslog, je těžší najít nejnovější soubor. Lepším přístupem je použití neměnného názvu souboru protokolu, poté pomocí logrotate použijte časové razítko nebo číslo na starší soubory protokolu.
připojte a otočte soubory protokolu
aplikace by se měly připojit k existujícím souborům protokolu namísto jejich přepsání. To pomáhá zajistit, aby všechny řádky protokolu byly zachyceny a žádná data nebyla ztracena, i když se aplikace restartuje. Soubory protokolu však mohou být v průběhu času velmi velké., Pokud se snažíte najít příčinu problému, můžete skončit prohledáváním desítek tisíc řádků.
doporučujeme připojí své záznamy do jednoho souboru, ale také doporučujeme konfiguraci aplikace otočit své log soubory, každý tak často. Nástroje, jako je logrotate, to mohou provést automaticky zkopírováním aktuálního souboru protokolu na nové místo, jeho jedinečným názvem a zkrácením aktuálního souboru protokolu., To má řadu výhod, včetně:
- Protokoly jsou rozděleny do souborů podle data a času, takže je snadné najít záznamy pro konkrétní datum
- Každý soubor protokolu je mnohem menší, což je jednodušší vyhledávání a jednodušší poslat přes síť
- Zálohování souborů protokolu, je mnohem jednodušší, a smazání nebo archivaci starší záznamy lze udělat mnohem rychleji,
Jak často budete rotovat soubory protokolu závisí na tom, jak mnoho protokolů generování. Zpravidla začněte otáčením protokolů jednou denně.
nastavit zásady uchovávání souborů protokolu
jak dlouho uchováváte soubor protokolu?, To rozhodně záleží na obchodních požadavcích. Můžete být požádáni, aby jeden týden protokolování informace, nebo to může být regulační požadavek na to, aby 10 let v hodnotě dat. Ať už je to cokoli, protokoly musí jít ze serveru najednou nebo jiný.
podle našeho názoru, pokud není požadováno jinak, měli byste mít alespoň měsíční hodnotu log soubory on-line, plus je zkopírovat do sekundární umístění (jako přihlášení serveru). Něco staršího než to může být vyloženo na samostatné médium. Například, pokud jste na AWS, vaše starší protokoly mohou být zkopírovány do Glacier.,
ukládejte soubory protokolu na samostatnou jednotku
soubory protokolu se zapisují neustále, což může vést k vysokému i/O disku na rušných systémech. Jako nejlepší postup byste měli připojit /var/log
na samostatné paměťové zařízení. Tím se zabrání zápisu souboru protokolu v rozporu s výkonem vašich aplikací, zejména na diskovém úložišti. To také zabraňuje tomu, aby soubory protokolu vyplňovaly celou jednotku v případě, že jsou příliš velké.
naformátujte položky protokolu
jaké informace byste měli zachytit v každém záznamu protokolu?
to závisí na tom, pro co chcete protokol použít., Chcete jej použít pouze pro účely odstraňování problémů, nebo chcete zachytit vše, co se děje? Je to zákonný požadavek zachytit to, co každý uživatel běží nebo prohlížení?
Pokud používáte protokoly pro účely odstraňování problémů, uložte pouze chyby, varování nebo fatální zprávy. Například není důvod zachycovat ladicí zprávy. Aplikace mohou protokolovat zprávy ladění ve výchozím nastavení, nebo jiný správce změnili na pro další řešení potíží cvičení, ale musíte to vypnout, protože to může určitě vyplnit prostor rychle., Minimálně zachyťte datum, čas, název aplikace klienta, zdrojovou IP nebo název hostitele klienta, provedenou akci a samotnou zprávu.
zvažte například výchozí logovací chování PostgreSQL. Protokoly jsou uloženy v /var/log/postgresql
a každý soubor začíná postgresql-následuje datum. Soubory se střídají denně, a starší soubory jsou připojeny s číslem na základě toho, kdy byly otočeny. Každý řádek protokolu lze připojit pomocí polí, jako je aktuální časové razítko, Aktuální uživatel, název databáze, ID relace a ID transakce., Tato nastavení můžete změnit úpravou konfiguračního souboru PostgreSQL (/etc/postgresql/11/main/postgresql.conf
na Debianu).
ve výchozím nastavení každý řádek protokolu zobrazuje časové razítko a ID procesu PostgreSQL následované zprávou protokolu.
monitorujte soubory protokolu pomocí Imfile
tradičně je nejběžnějším způsobem, jak aplikace zaznamenávat svá data, soubory. Soubory lze snadno vyhledávat na jednom počítači, ale ne měřítko dobře s více servery. S rsyslog můžete sledovat soubory pro změny a importovat nové události do syslogu, kde pak můžete protokoly předat centralizovanému serveru., To se provádí pomocí modulu imfile. Chcete-li modul povolit, vytvořte nový konfigurační soubor v /etc/rsyslog.d/
a poté přidejte takový vstup souboru.
po této konfiguraci přidejte výstupní proudy a rsyslog odešle protokoly ze zadaného souboru do výstupního cíle.
přihlaste se přímo do soketu Syslog pomocí Imuxsock
zásuvka je podobná rukojeti souboru UNIX, kromě toho, že čte data do paměti místo zápisu na disk. V případě syslogu to umožňuje odesílat protokoly přímo do syslogu, aniž byste je museli nejprve zapsat do souboru.,
tento přístup umožňuje efektivní využití systémových prostředků, pokud je váš server omezen diskem I/O nebo nepotřebujete lokální protokoly souborů. Nevýhodou tohoto přístupu je, že zásuvka má omezenou velikost fronty. Pokud váš démon syslog klesne nebo nemůže držet krok, pak byste mohli ztratit data protokolu.
Chcete-li povolit protokolování soketu v rsyslogu, přidejte do konfigurace rsyslogu následující řádek (ve výchozím nastavení je povoleno).
$ModLoad imuxsock
tím se vytvoří socket na /dev/log socket
ve výchozím nastavení, ale můžete změnit úpravou SysSock.Jméno parametru., Můžete také nastavit možnosti, jako je omezení rychlosti a řízení průtoku. Další informace naleznete v dokumentaci rsyslog imuxsock.
UDP protokoly s Imupd
některé aplikace výstupní data protokolu ve formátu UDP, což je standardní protokol při přenosu souborů protokolu přes síť nebo localhost. Váš démon syslog přijímá tyto protokoly a může je zpracovávat nebo přenášet v jiném formátu. Případně můžete protokoly odeslat na jiný server syslog nebo na řešení správy protokolu.,
pomocí následujícího příkazu nakonfigurujte rsyslog tak, aby přijímal data syslog přes UDP na standardním portu 514.
$ModLoad imudp$UDPServerRun 514
Správa konfigurace na mnoha serverech
Pokud máte jen několik serverů, můžete na nich ručně nakonfigurovat protokolování. Jakmile budete mít několik desítek nebo více serverů, můžete využít nástrojů, které usnadňují a škálovatelnější. Na základní úrovni je cílem každého nástroje povolit syslog na každém ze svých serverů, použít konfiguraci a zajistit, aby se změny projevily.,
Pssh
Pssh (nebo paralelní SSH) umožňuje spustit příkaz ssh na několika serverech paralelně. Použijte nasazení pssh pouze pro malý počet serverů. Pokud některý z vašich serverů selže, musíte ssh do neúspěšného serveru a provést nasazení ručně. Pokud máte několik neúspěšných serverů, ruční nasazení na nich může trvat dlouho.
loutka / kuchař
loutka a kuchař jsou nástroje pro správu konfigurace, které mohou automaticky nakonfigurovat všechny vaše servery a přivést je do stejného stavu. Mohou sledovat vaše servery a udržovat je synchronizované., Loutka a šéfkuchař jsou výkonné nástroje schopné instalovat software, vytvářet soubory, restartovat služby a další. Pokud si nejste jisti, který z nich je vhodnější pro správu konfigurace nasazení, můžete ocenit porovnání obou nástrojů InfoWorld.
někteří prodejci také nabízejí moduly nebo recepty pro konfiguraci syslogu. Například Loggly poskytuje loutkový modul, který používá rsyslog k automatickému předávání protokolů od vašich agentů. Nainstalujte modul Loggly Puppet na svého loutkového mistra a přidejte následující konfiguraci do loutkového manifestu.,
# Send syslog events to Loggly class { 'loggly::rsyslog': customer_token => 'YOUR_CUSTOMER_TOKEN', }
jakmile se vaši agenti obnoví, začnou se přihlašovat k přihlášení.
Kubernetes
Kubernetes je nástroj pro orchestraci pro správu kontejnerů na více uzlech. Kubernetes poskytuje kompletní architekturu protokolování, která automaticky shromažďuje a zapisuje protokoly kontejnerů do souboru na hostitelském počítači. Můžete si prohlédnout záznamy pro konkrétní Modul spuštěním příkazu kubectl protokoly <pod názvem>, což je užitečné pro přístup k aplikaci přihlásí na vzdálený server.,
mnoho řešení správy protokolu poskytuje agenty, které lze nasadit přes Kubernetes, aby shromažďovaly protokoly aplikací i protokoly hostitele. Například Loggly poskytuje DaemonSet, který nasazuje protokolovací modul do každého uzlu v clusteru. Modul shromažďuje protokoly z jiných lusků a od samotného hostitele a jeho nasazení jako DaemonSet pomáhá zajistit, že na každém uzlu vždy běží instance. Protokolování clusteru Kubernetes pomocí Loggly je stejně snadné jako spuštění následujících příkazů.
Docker
Docker používá kontejnery pro spouštění aplikací nezávislých na podkladovém serveru., Často se používá jako runtime kontejneru pro orchestrátory, jako je Kubernetes, ale může být použit jako samostatná platforma. ZDNet má podrobný článek o použití Docker ve vašem datovém centru.,
Existuje několik způsobů, jak se přihlásit z Docker kontejnerů, včetně:
- Přihlášení přes Docker Přihlášení Řidiče do hostitelského systému (doporučená metoda)
- Směrování všech kontejner protokoly do jediného specializovaného přihlášení kontejneru (to je to, jak logspout kontejner funguje)
- Přihlášení do postranního vozíku přihlášení nádoby
- Přidání přihlášení agenta do kontejneru
můžete také používat Docker kontejnery pro sběr logů z hostitele., Pokud má váš kontejner spuštěnou službu syslog, můžete buď odesílat protokoly z hostitele do kontejneru přes syslog, nebo připojit soubory protokolu hostitele do kontejneru a pomocí agenta pro sledování souborů číst soubory.
Prodejce Skripty nebo Agenti
Většina log management řešení nabízejí skripty nebo agentů, aby odesílání dat z jednoho nebo více serverů relativně snadné. Heavyweight agenti mohou využít další systémové prostředky. Někteří dodavatelé se integrují se stávajícími démony rsyslog pro předávání protokolů bez použití výrazně více zdrojů., Loggly, například, poskytuje skript, který předává protokoly z rsyslog na loggly požití servery pomocí modulu omfwd.
viz. Analyzujte to. Zkontrolujte to. Vyřešte to
podívejte se, na čem záleží.
spusťte bezplatnou zkušební verzi
Napsat komentář