Täiustame veebiserverite logimist

Järgnev postitus on suunatud klientidele ning neid esindavatele tehnilistele võluritele, kes veebiserverite logisid aktiivselt jälgivad ning analüüsivad.

Nimelt on Zone parandamas oma veebimajutuse logide vormistuse ja säilitamise korda ning 27. septembrist plaanime sellele üle minna kogu oma ZoneOS platvormi ulatuses. See hõlmab muuhulgas ka kõiki meie Virtuaalserveri teenuseid.

Aga haarakem härjal sarvist. Täna on meie veebiserveri logides kirjed vormistatud selliselt:

example.com 1.2.3.4 - - [08/Mar/2021:13:58:23 +0000] "GET / HTTP/1.0" 200 3390 "https://example.com/referer" "ApacheBench/2.3" (064FD630-5.001)

Koosneb see logirida järgmisest infost:

  1. veebileht, millele päring tehti
  2. IP aadress, millelt päring tehti
  3. esimene “-” on pärand ajaloo hämarustest, mil veebiserver sai ’identd’ teenuse kaudu pärija arvutist teada päringu teinud külastaja nime, tänapäeval pole see võimalik ja see väli on alati tühi
  4. teine “-” kuvatakse päringust puuduva kasutajanime asemel, HTTP Basic Authentication kasutamisel seisab siin kasutajanimi
  5. päringu kuupäev ja kellaaeg
  6. päringu sisu (antud juhul siis teostati vanamoelisele HTTP/1.0 standardile vastav GET päring veebilehe juurkataloogi pihta)
  7. päringu vastuse kood, 200 tähendab OK
  8. päringu vastuse suurus
  9. lehekülg, mis viitas päritud lehele (kui see info pandi brauseri poolt kaasa)
  10. veebilehitseja, mis päringu teostas, meie näite puhul kasutati selleks ApacheBench nimelist käsureautiliiti
  11. Zone poolt arendatava ja kasutatava PHP-ZFPM mooduli poolt päringule antud identifikaator, mis võimaldab meil probleeme lahendada

Uus logikirje vorm näeb välja selline:

example.com 2021-03-08T13:58:23.209048Z 1.2.3.4 12345 - - "GET / HTTP/1.0" 200 3390 "https://example.com/referer" "ApacheBench/2.3" 1621846 (064FD630-5.001)

Tähele tasub panna järgmist:

* päringu aeg on kolinud rea 5. positsioonilt 2. positsioonile
* päringu aeg antakse nüüd edasi mikrosekundites (RFC3339 standardile vastavalt), sest meie veebiserverid on nii kiired, et sekund on päringute analüüsimiseks liiga pikk ajaühik 🙂
* päringu aja ümbert on eemaldatud nurksulud, et seda oleks lihtsam töödelda
* päringu aeg on nüüd kahe stringi asemel üks string, mis teeb selle samuti lihtsamini töödeldavaks
* lisaks päringu lähteaadressile (3. positsioon) logitakse nüüd 4. positsioonil ka lähteport, et NAT teenuse taha sattunud kasutajate probleemide lahendamine oleks lihtsam
* ühtlasi leiab eelviimaselt positsioonilt info selle kohta, kaua (seinakella järgi) läks veebiserveril aega päringule vastamiseks, taas mikrosekundites

Logide säilitamise korras on samuti toimumas muutused, mis puudutavad peamiselt veebiserveri ja PHP logifailide nimesid ja on osaliselt juba jõustunud:

* kui seni sisaldas logifaili nimekiri järjekorranumbrit (apache.ssl.access.log.1.gz), siis nüüd sisaldab see kuupäeva (apache.ssl.access.log.2021-09-16.gz)
* kui samal kuupäeval tekib mitu arhiivifaili, siis pannakse igale järgnevale failile kuupäeva taha järjekorranumber, alustades 1-st.

Muutus failinimedes aitab meil klientidele kokku hoida varukoopiate ruumi, kuna see vähendab varukoopia tegemisel muutunuks loetavate failide hulka.

Kardetavasti on isegi meie blogi lugejatest 99% inimesi juba vajutanud back nuppu, sest “who cares”, aga logid on meie töös äärmiselt tähtsad. Seetõttu kui ülalolevast infost oli sulle ka sinu töös kasu, siis meie poolt “respect“!