
Vi fortsÀtter vÄr djupdykning i den spÀnnande vÀrlden av troubleshooting via loggar. Vi har kommit överens om betydelsen av grundlÀggande termer och fÄtt en överblick över den övergripande strukturen av Veeam som en enhetlig applikation. MÄlet med detta avsnitt Àr att förstÄ hur loggfiler skapas, vilken information som visas i dem och varför de ser ut som de gör.
Vad tycker ni egentligen att dessa "loggar" Àr? Enligt de flesta borde loggarna för varje applikation spela rollen av en allsmÀktig entitet som mestadels av tiden existerar i skuggan, men i rÀtt ögonblick dyker upp ur ingenstans i skinande rustning och rÀddar situationen. Det innebÀr att de borde innehÄlla allt frÄn de minsta felen i varje komponent till enskilda databastransaktioner. Och efter ett fel bör det direkt skrivas hur man kan ÄtgÀrda det. Och allt detta mÄste fÄ plats i ett par megabyte, högst. Det Àr ju bara text! Textfiler kan inte ta upp tiotals gigabyte, det har jag hört nÄgonstans!
SĂ„, loggar
I den verkliga vÀrlden Àr loggar bara ett arkiv av diagnostisk information. Vilken information som ska lagras, hur man hÀmtar informationen för lagring och hur detaljerad den ska vara, Àr upp till utvecklarna. Vissa gÄr den minimalistiska vÀgen och lagrar endast pÄ/av-poster, medan andra ivrigt samlar allt de kan fÄ tag pÄ. Det finns ocksÄ ett mellanlÀge med möjlighet att vÀlja sÄ kallad Logging Level, dÀr du sjÀlv anger hur detaljerad information du vill lagra och hur mycket överflödigt utrymme du har pÄ disken =) VBR har faktiskt hela sex sÄdana nivÄer. Och tro mig, du vill inte se vad som hÀnder vid den mest detaljrika loggningen med fritt utrymme pÄ din disk.
Bra. Vi har ungefĂ€r förstĂ„tt vad vi vill spara, men det uppstĂ„r en legitim frĂ„ga: varifrĂ„n ska vi hĂ€mta denna information? En del av hĂ€ndelserna för loggning skapar vi givetvis sjĂ€lva genom vĂ„ra interna processer. Men vad gör man nĂ€r det sker interaktion med externa miljöer? För att inte falla ner i en mörk avgrund av provisoriska lösningar och uppfinningar har Veeam en tendens att inte uppfinna hjulet pĂ„ nytt. Alltid, nĂ€r det finns ett fĂ€rdigt API, en inbyggd funktion i systemet, ett bibliotek osv., kommer vi att ge fördelar Ă„t de befintliga alternativen innan vi börjar bygga vĂ„ra egna smarta lösningar. Men det finns ocksĂ„ gott om sĂ„dana. DĂ€rför Ă€r det viktigt att förstĂ„ vid analys av loggar att en stor del av felen kommer frĂ„n meddelanden frĂ„n tredjeparts-API:er, systemanrop och andra bibliotek. I det hĂ€r fallet handlar VBR:s roll om att vidarebefordra dessa fel till loggfiler som de Ă€r. Och den grundlĂ€ggande uppgiften för anvĂ€ndaren Ă€r att lĂ€ra sig förstĂ„ vilken rad som kommer frĂ„n vem, och vad den âvemâ ansvarar för. SĂ„ om felkoden frĂ„n VBR-loggen leder dig till en sida pĂ„ MSDN, Ă€r det normalt och korrekt.
Som vi kom överens om tidigare: Veeam Ă€r en sĂ„ kallad SQL-baserad applikation. Och det betyder att alla instĂ€llningar, all information och överhuvudtaget allt som krĂ€vs för normal funktion â allt lagras i dess databas. HĂ€r Ă€r den enkla sanningen: det som inte finns i loggarna finns förmodligen i databasen. Men detta Ă€r inte en silverkula: vissa saker finns varken i de lokala loggarna frĂ„n Veeam-komponenterna eller i dess databas. DĂ€rför mĂ„ste man lĂ€ra sig att studera vĂ€rdloggar, loggar frĂ„n den lokala maskinen och loggar frĂ„n allt som deltar i backup- och Ă„terstĂ€llningsprocessen. Och ibland Ă€r det sĂ„ att den nödvĂ€ndiga informationen inte finns nĂ„gonstans. SĂ„dan Ă€r vĂ€gen.Â
NÄgra exempel pÄ sÄdana API:er
Denna lista har inte som syfte att vara heltÀckande, sÄ sök inte i den efter sanning i sista instans. Dess uppgift Àr endast att visa de vanligaste tredjeparts-API:erna och teknologierna som anvÀnds i vÄra produkter.
LĂ„t oss börja med VMware.Â
Först i listan kommer vSphere API. AnvÀnds för autentisering, lÀsa hierarkier, skapa och ta bort snapshots, begÀra information om maskiner och mycket (mycket) mer. Lösningens funktionalitet Àr mycket bred, sÄ jag rekommenderar alla intresserade att kolla in VMware vSphere API Reference för versionen och . För mer aktuella versioner kan man enkelt googla.
VIX API. Den svarta magin hos hypervisorn, för vilken det finns en separat . VMware API för att arbeta med filer pÄ vÀrden utan nÀtverksanslutning. En sista utvÀg nÀr man behöver lÀgga en fil pÄ en maskin som inte har bÀttre kommunikationskanaler. Det innebÀr en del smÀrta och lidande om filen Àr stor och vÀrden Àr belastad. Men hÀr gÀller regeln att Àven 56,6 Kb/s Àr bÀttre Àn 0 Kb/s. I Hyper-V kallas en liknande funktion PowerShell Direct. Men sÄ var det bara fram till introduktionen av
vSphere Web Services API . FrĂ„n och med vSphere 6.0 (ungefĂ€r, eftersom detta API första gĂ„ngen introducerades i version 5.5) anvĂ€nds det för att hantera gĂ€stmaskiner och har redan praktiskt taget ersatt VIX överallt. I grund och botten Ă€r det Ă€nnu ett API för att hantera vSphere. För den intresserade kan jag rekommendera att studera manualen.Â
VDDK (Virtual Disk Development Kit). Ett bibliotek som delvis nĂ€mndes i denna . AnvĂ€nds för att lĂ€sa virtuella diskar. För lĂ€nge sedan var det en del av VIX, men med tiden flyttades det till en egen produkt. Men i egenskap av arvtagare anvĂ€nder det samma felkoder som VIX. Men av nĂ„gon anledning finns det ingen beskrivning av dessa fel i sjĂ€lva SDK:n. Genom erfarenhet har det faststĂ€llts att VDDK-fel med andra koder â Ă€r bara en översĂ€ttning frĂ„n binĂ€r till decimal kod. BestĂ„r av tvĂ„ delar - den första halvan Ă€r odokumenterad information om kontexten, och den andra delen Ă€r traditionella VIX/VDDK-fel. Till exempel, om vi ser:
VDDK error: 21036749815809.Unknown error
SÄ konverterar vi detta till hex och fÄr 132200000001. Det oinformerande början 132200 avvisar vi, och resten blir vÄr felkod (VDDK 1: OkÀnt fel). Nyligen fanns det en separat diskussion om de vanligaste VDDK-felen .
Nu ska vi titta pÄ Windows.
HĂ€r hittar vi allt som Ă€r nödvĂ€ndigt och viktigt för oss i den standard Event Viewer. Men det finns en hake: enligt en gammal tradition loggar Windows inte hela felmeddelanden, utan bara deras nummer. Till exempel, felkod 5 Ă€r âĂ tkomst nekadâ, 1722 Ă€r âRPC-servern Ă€r otillgĂ€ngligâ, och 10060 Ă€r âAnslutningen har tidsgrĂ€nsâ. SjĂ€lvklart Ă€r det bra om man kommer ihĂ„g de mest kĂ€nda, men hur gör man med de tidigare okĂ€nda?Â
För att livet inte ska kÀnnas som en ren dröm förvaras Àven fel i hexadecimalt format, med prefixet 0x8007. Till exempel, 0x8007000e Àr egentligen 14, Out of Memory. Varför och för vem detta gjordes Àr en gÄta. Dock kan du ladda ner hela listan över fel gratis och utan SMS frÄn .
För övrigt förekommer ibland andra prefix Àn bara 0x8007. I en sÄdan olycklig situation mÄste man djupare förstÄ HRESULT ("result handle") för utvecklarna. I det normala livet rekommenderar jag dig inte att göra sÄ hÀr, men om du skulle bli pressad mot vÀggen eller bara Àr nyfiken, sÄ vet du nu vad du ska göra.
Men killarna pÄ Microsoft visade lite medkÀnsla och presenterade vÀrlden för ett verktyg . Det Àr en liten del av konsolens lycka, som kan översÀtta felkoder till mÀnskligt sprÄk utan att anvÀnda Google. Den fungerar ungefÀr sÄ hÀr.
C:UsersrootDesktop>err.exe 0x54f
# för hex 0x54f / decimal 1359
ERROR_INTERNAL_ERROR winerror.h
# Ett internt fel intrÀffade.
# som ett HRESULT: Allvarlighetsgrad: SUCCESS (0), FACILITY_NULL (0x0), Kod 0x54f
# för hex 0x54f / decimal 1359
ERROR_INTERNAL_ERROR winerror.h
# Ett internt fel intrÀffade.
# 2 trÀffar hittades för "0x54f"Det vÀcker en giltig frÄga: varför skriver vi inte direkt avkodningen i loggarna, utan lÀmnar dessa mystiska koder? Svaret ligger i tredjepartsapplikationer. NÀr du sjÀlv kallar pÄ nÄgot WinAPI-anrop Àr det inte svÄrt att avkoda svaret, eftersom det finns ett speciellt WinAPI-anrop för det. Men som redan nÀmnts hamnar allt i vÄra loggar som vi fÄr i svaren. HÀr skulle vi dock behöva stÀndigt övervaka detta flöde av medvetande, plocka ut bitar med Windows-fel, avkoda dem och sÀtta tillbaka dem. LÄt oss vara Àrliga, det Àr inte sÀrskilt spÀnnande.
Windows Filhanterings-API anvÀnds i hög grad nÀr man arbetar med filer. Skapande av filer, radering, öppning för skrivning, arbete med attribut och sÄ vidare.
Den ovan nÀmnda PowerShell Direct som ett alternativ till VIX API i Hyper-V vÀrlden. TyvÀrr inte sÄ flexibelt: mÄnga begrÀnsningar i funktionaliteten, fungerar inte med varje version av vÀrden och lÄngt ifrÄn alla gÀster.
RPC (Remote Procedure Call) Jag tror att det inte finns en enda person som har arbetat med Windows som inte har sett fel kopplade till RPC. Trots den populÀra missuppfattningen Àr det inte en specifik protokoll, utan vilket klient-serverprotokoll som helst som uppfyller vissa kriterier. Men om vi har ett RPC-fel i vÄra loggar, Àr det i 90 % av fallen ett fel frÄn Microsoft RPC, som Àr en del av DCOM (Distributed Component Object Model). Det finns en enorm mÀngd dokumentation om detta Àmne pÄ nÀtet, men mycket av den Àr ganska gammal. Men om det finns en stark önskan att studera Àmnet, kan jag rekommendera artiklar. , och en lÄng lista .
De viktigaste orsakerna till RPC-fel i vÄra loggar Àr misslyckade försök till interaktion mellan VBR-komponenter (server > proxy, till exempel) och oftast pÄ grund av kommunikationsproblem.
Toppen av alla toppar Ă€r felet The RPC server is unavailable (1722). Om vi ska tala enkelt, sĂ„ kunde kunden inte upprĂ€tta en anslutning till servern. Varför och hur â det finns inget entydigt svar, men det Ă€r vanligtvis ett problem med autentisering eller nĂ€tverksĂ„tkomst till port 135. Det senare Ă€r typiskt för infrastrukturer med dynamisk portallokering. Det finns till och med . Och hos Microsoft finns det för att hitta orsakerna till felet.
Det nÀst mest populÀra felet: There are no more endpoints available from the endpoint mapper (1753). RPC-klienten eller servern kunde inte tilldela en port till sig sjÀlva. Det intrÀffar vanligtvis nÀr servern (i vÄrt fall vÀrdmaskinen) Àr instÀlld pÄ dynamisk portallokering frÄn ett smalt omrÄde som har tagit slut. Om vi ser det frÄn klientens sida (i vÄrt fall VBR-servern) betyder det att vÄr VeeamVssAgent antingen inte startade eller inte registrerades som RPC-grÀnssnitt. Det finns ocksÄ .
Och för att avsluta topp-3 RPC-fel, lÄt oss minnas RPC function call failed (1726). Det intrÀffar om anslutningen har upprÀttats, men RPC-begÀrningarna inte genomförs. Till exempel, vi begÀr information om VSS-status (om det till exempel just nu görs shadow copy, och vi försöker gÄ in), och som svar fÄr vi tystnad och ignorans.
Windows Tape Backup API Behövs för att arbeta med bandbibliotek eller enheter. Som jag nÀmnde i början: det Àr ingen nöje att skriva sina egna drivrutiner och sedan plÄga sig med att stödja varje enhet. DÀrför har Veeam inga egna drivrutiner. Allt gÄr via standard-API:n, vars stöd tillhandahÄlls av hÄrdvaruleverantörerna sjÀlva. SÄ mycket mer logiskt, eller hur?
SMB/CIFS Alla skriver dem av gammal vana bredvid varandra, Àven om lÄngt ifrÄn alla minns att CIFS (Common Internet File System) bara Àr en privat version av SMB (Server Message Block). SÄ det finns inget dÄligt med att sammanfoga dessa begrepp. Samba Àr en Linux/Unix-implementation, och dÀr finns egna sÀrdrag, men jag kommer ifrÄn Àmnet. Det viktiga hÀr Àr: nÀr Veeam ber om att skriva nÄgot via en UNC-sökvÀg (serverdirectory), sÄ anvÀnder servern hierarkin av filsystemets drivrutiner, inklusive mup och mrxsmb, för att skriva till delningen. DÀrmed kommer Àven dessa drivrutiner generera fel.
Det gÄr inte att klara sig utan Winsock API. Om nÄgot behöver göras över nÀtverket arbetar VBR genom Windows Socket API, som allmÀnt kallas Winsock. SÄ om vi ser i loggen en koppling mellan IP:Port, dÄ Àr det det. I den officiella dokumentationen finns en ganska bra lista över möjliga .
Den ovan nÀmnda WMI (Windows Management Instrumentation) - det Àr en sorts allsmÀktig API för att hantera allt och alla inom Windows-vÀrlden. Till exempel, nÀr man arbetar med Hyper-V sker nÀstan alla begÀrningar till vÀrden just genom det. SÄ, det Àr helt enkelt en ovÀrderlig och mycket kraftfull resurs. I försök att hjÀlpa till att reda ut var och vad som har gÄtt fel, Àr det mycket hjÀlpsamt att ha det inbyggda verktyget WBEMtest.exe.
Och den sista i listan, men lĂ„ngt ifrĂ„n den minst viktiga - VSS (Volume Shadow Storage). Ămnet Ă€r lika outtömligt och mystiskt som det finns mycket dokumentation skriven om det. Shadow Copy kan enklast förstĂ„s som en speciell typ av snapshot, vilket det i grunden Ă€r. Tack vare det kan man i VMware göra applikationskonsekventa sĂ€kerhetskopior, och i Hyper-V nĂ€stan allt. Jag planerar att göra en separat artikel med en sammanstĂ€llning av VSS, men tills dess kan du försöka lĂ€sa . Var försiktig, eftersom ett försök att förstĂ„ VSS pĂ„ sprĂ„ng kan leda till hjĂ€rnskador.
Det hÀr borde rÀcka. Jag anser att uppgiften att förklara de mest grundlÀggande sakerna Àr genomförd, sÄ i nÀsta kapitel kommer vi att titta pÄ loggarna. Men om du har nÄgra frÄgor, tveka inte att stÀlla dem i kommentarerna.
KĂ€lla: habr.com
