OpenVPN brojači saobraćaja nasuprot diskovnom I/O: tri različita broja
Bajtovi interfejsa, brojači znakova procesa i upisi na disk mere različit rad. Uporedite ih pre nego što dimenzionirate diskove prema obimu tunela.
Provedite veliki fajl kroz tunel i brojač interfejsa poraste za veličinu fajla. Ništa u tom broju ne znači da je isti obim stigao na disk. U ovim raspravama upoređuju se tri različita merenja i ona odgovaraju na tri različita pitanja: koliko je saobraćaja prešlo mrežni sloj, koliko je bajtova proces pročitao i zapisao kroz sistemske pozive i koliko je posla stiglo do sloja skladištenja.
Poređenje prvog s trećim uobičajena je greška i ona proizvodi ili fantomski problem s diskom ili plan kapaciteta koji zanemaruje upise koji se zaista dešavaju. Ta tri su razdvojiva i svako ima ispravnu upotrebu.
Tri broja koja se mešaju
Brojači interfejsa opisuju saobraćaj koji se obrađuje na mrežnom sloju. Oni su ispravan broj za propusnost, za veličinu tunela i za modele naplate koji naplaćuju tranzit.
Brojači znakova procesa opisuju bajtove prenesene kroz pozive čitanja i pisanja na bilo kom deskriptoru, uključujući cevi, terminale i znakovne uređaje. Oni su ispravan broj za pitanje koliko je proces zauzet na granici sistemskog poziva i nisu diskovni račun.
Brojači skladištenja opisuju bajtove koje je kernel pokušao da prenese u blokovski uređaj ili iz njega. Oni su ispravan broj za planiranje kapaciteta, uz napomenu da kernel dokumentuje sopstvene granice obračuna: keširana čitanja ne postaju čitanja skladištenja, a upis koji se kasnije otkaže ne postaje završen upis na uređaj.
| Measurement | Question it answers |
|---|---|
| Interface bytes | How much traffic crossed this layer |
rchar and wchar | How much data the process moved through system calls |
read_bytes and write_bytes | How much work reached the storage layer |
Zašto deskriptor fajla nije upis na disk
VPN u korisničkom prostoru razmenjuje pakete s kernelom kroz TUN uređaj, koji je znakovni uređaj, a ne običan fajl. Čitanje iz njega predaje paket; pisanje u njega ubacuje paket. Nema stranice sadržaja fajla koja se priprema za skladištenje i nema uključene putanje datotečnog sistema.
Zato zauzet tunel može da pokaže ogromne brojače znakova gotovo bez brojača skladištenja. Proces je zaista preneo te bajtove i kernelu zaista nije bio potreban disk da to učini.
cat /proc/$(pgrep -n openvpn)/io
ip -s link show tun0
Prvi izlaz čitajte kao kumulativni od pokretanja procesa, a ne kao stopu. Drugi daje pogled interfejsa na isti saobraćaj. Veliki jaz između njih je očekivan i ne ukazuje na curenje, red ili pogrešnu konfiguraciju.
Odakle bajtovi zaista dolaze
Trajni izlaz ima sopstveni budžet i njime upravljaju operacije, a ne korisni teret. Opširan nivo dnevnika, lista klijenata koja se često menja ili greška koja se ponavlja u tesnoj petlji mogu da stvore znatne upise dok tunel prenosi vrlo malo.
Datoteka stanja je snimak koji se prepisuje u intervalu, pa njen trošak zavisi od intervala i od toga koliko zapisa sadrži. Ona nije tekuća kopija saobraćaja svakog klijenta, a skraćivanje intervala menja obim upisa bez promene obima saobraćaja.
Vlasništvo je važno kada tražite te upise. Ako servis predaje poruke demonu za dnevnike, dnevnik ili datoteku piše taj demon i bajtovi se pojavljuju u njegovom obračunu, a ne u sopstvenim brojačima VPN procesa. Gledanje samo u VPN proces ne objašnjava ni aktivnost diska ni njeno odsustvo.
Ostale doprinositelje je lako prevideti: čitanja sertifikata i konfiguracije pri pokretanju, kuke koje pišu sopstvene zapise, računovodstvene dodatke, ispise pri rušenju i nepovezane poslove na istom hostu. Nijedan od njih ne treba procenjivati izjednačavanjem saobraćaja tunela sa zapisanim bajtovima.
Ispravno čitanje svakog brojača
Tri pojedinosti odlučuju da li poređenje nešto znači. Identitet procesa je važan jer restartovan servis poništava svoje brojače. Vremenski interval je važan jer su kumulativna cifra i grafikon po sekundi različita merenja. I jedinica je važna jer trenutna veličina datoteke dnevnika takođe nije stopa.
grep -E 'rchar|wchar|read_bytes|write_bytes' /proc/$(pgrep -n openvpn)/io
du -sh /var/log/openvpn 2>/dev/null
journalctl --disk-usage
Ako sumnjate na stvarne upise korisnog tereta, potražite komponentu čiji je posao da čuva teret: alat za hvatanje paketa, proxy koji kešira tela, dodatak koji arhivira. Oni stvaraju saobraćaj prema skladištenju koji raste s onim što se od njih traži da zabeleže i pripadaju zasebnoj političkoj odluci o zadržavanju i pristupu.
Planiranje kapaciteta s ispravnim brojem
Dimenzionirajte putanju paketa mrežnim brojevima: propusnost, kriptografska obrada i kretanje memorije. Dimenzionirajte skladištenje izborima za posmatranje koje ste zaista napravili: nivo dnevnika, zadržavanje, interval stanja i svako hvatanje koje je namerno omogućeno.
Držanje tih dvaju budžeta odvojenim takođe olakšava čitanje incidenata. Pun disk uz skroman saobraćaj tunela upućuje na dnevnike, hvatanja ili nešto nepovezano i brojač interfejsa to nikada neće objasniti. Zasićen link uz tih dnevnik upućuje na drugu stranu.
Poređenje koje je vredno je između merenja iste vrste. Bajtovi interfejsa naspram bajtova interfejsa kroz vreme govore vam o putanji. Upisi na disk naspram kapaciteta skladištenja govore vam o zadržavanju. Unakrsno poređenje, saobraćaj naspram diska, samo izgleda smisleno i nikada nije.