lnav – žiūrėkite ir analizuokite „Apache“ žurnalus iš „Linux“ terminalo


Mažiau nei prieš dvi savaites „Wannacry“ išpirkos reikalaujančios programinės įrangos ataka pakenkė tūkstančiams kompiuterių ir padarė didelių nuostolių didelėms įmonėms ir asmenims. Tai, kartu su kitais plačiai paplitusiais pažeidžiamumu, aptiktu pastaraisiais metais (pvz., „Shellshock“ klaida), pabrėžia, kaip svarbu nuolat stebėti savo misijai svarbias sistemas.

Nors pažeidžiamumai dažnai nukreipti į vieną konkrečią operacinę sistemą arba programinės įrangos komponentą, srauto, patenkančio į tinklą ir iš jo, tyrimas gali būti labai naudingas norint apsaugoti turtą, už kurį esate atsakingi.

Siūlomas skaitymas: 4 geri atvirojo kodo žurnalų stebėjimo ir valdymo įrankiai, skirti Linux

Esu tikras, kad jau žinote, sistemos žurnalai yra pirmoji vieta, kur turėtume ieškoti šios informacijos. Kad būtų lengviau atlikti šią užduotį, šiame straipsnyje paaiškinsime, kaip įdiegti ir naudoti lnav, išplėstinę žurnalo failų peržiūros priemonę. Naudodami lnav galėsite žiūrėti kelių tipų žurnalus vienu metu, naršyti po failą naudodami sparčiuosius klavišus ir generuoti apibendrintą priėjimų ir klaidų histogramą. Taigi skaitykite toliau!

Lnav diegimas ir paleidimas Linux sistemoje

Norėdami įdiegti lnav, naudokite platinimo paketų valdymo sistemą.

aptitude install lnav          [Debian and derivatives]
yum install epel-release lnav  [CentOS 7 and similar]

Baigę diegti, paleiskite lnav ir nurodykite absoliutų kelią į katalogą, kuriame yra tikrinami žurnalai. Kadangi tai paprastai yra /var/log, atlikime:

lnav /var/log/httpd

norėdami patikrinti „Apache“ žiniatinklio serverio žurnalus CentOS 7:

Trumpai panagrinėkime ankstesniame paveikslėlyje parodytą išvestį:

  • Viršutiniame dešiniajame kampe rodomi šiuo metu tikrinami failai (access_log-20170519 ir access_log). Slinkdami žemyn arba aukštyn pastebėsite, kad failų pavadinimai gali keistis pereinant iš vieno į kitą.
  • 40 kartų HTTP atsakymai (pvz., Nerasta arba Uždrausta) rodomi pusjuodžiu šriftu, o 20 kartų atsakymai rodomi įprastame tekste.
  • IP adresai rodomi paryškintu žalia spalva.

Tai tikrai atrodo gražiai, ar ne? Bet dabar pasigilinkime šiek tiek giliau ir pamatysime, kad lnav suteikia daug daugiau nei gražios spalvos išvestį.

Jei jums įdomu, kodėl klaidų žurnalai nerodomi, atsakymą rasite vėliau šiame straipsnyje. Taigi skaitykite toliau!

Išvesties keitimas naudojant parinktis ir sparčiuosius klavišus

Prieš tęsdami toliau, išvardinkime kelis sparčiuosius klavišus, kurie leis mums lengviau pereiti per lnav išvestį ir galimus rodinius:

  • e arba E, kad pereitumėte prie kito/ankstesnio klaidos pranešimo.
  • w arba W, kad pereitumėte prie kito/ankstesnio įspėjimo pranešimo.
  • b arba Backspace, kad pereitumėte į ankstesnį puslapį.
  • Tarpas pereiti į kitą puslapį.
  • g arba G, kad pereitumėte į dabartinio rodinio viršų/apačią.

Kai žurnalai pasukami, seni failai gali būti suglaudinti (arba ne), priklausomai nuo nustatymų, nurodytų logrotate konfigūracijos failuose. Norėdami įtraukti suglaudintus failus į išvestį, paleiskite lnav taip:

lnav -r /var/log/httpd

Jei norite atidžiau pažvelgti į lnav veikimo būdą, galite paleisti programą naudodami -d parinktį ir failo pavadinimą, į kurį bus įrašyta derinimo informacija, pvz.:

lnav /var/log/httpd -d lnav.txt

Šiame pavyzdyje derinimo informacija, sugeneruota paleidus lnav, bus įrašyta į failą pavadinimu lnav.txt dabartiniame darbiniame kataloge.

Kelios pirmosios to failo eilutės rodomos šiame paveikslėlyje:

Paryškintas tekstas rodo, kad lnav įkėlė numatytųjų formatų failą ir, konkrečiau, formatą access_log, kad išanalizuoti Apache prieigos žurnalą. Be to, lnav leidžia analizuoti kiekvieną išvesties eilutę, kad išvestis būtų lengviau vizualizuojama ir suprantama.

Siūlomas skaitymas: „GoAccess“ (realiojo laiko „Apache“ ir „Nginx“) žiniatinklio serverio žurnalų analizatorius

Norėdami naudoti šią funkciją, paleiskite programą ir pasirinkite eilutę, kurią norite analizuoti. Pasirinkta eilutė visada yra lango viršuje. Tada paspauskite p ir turėtumėte pamatyti tokį rezultatą:

Norėdami grįžti į įprastą režimą, dar kartą paspauskite p.

Dabar, jei norite matyti žurnalų santrauką pagal datą ir laiką, paspauskite i. Pavyzdžiui, paryškintas tekstas rodo, kad pirmadienį, balandžio 10 d., nuo 20 iki 23 val., buvo 37 HTTP užklausos, iš kurių 14 buvo klaidų.

Kai nustatote galimą problemą pagal histogramą, kaip parodyta aukščiau, galite paspausti i, kad išeitumėte iš rodinio ir išnagrinėtumėte ją išsamiau naudodami analizatorių, kaip paaiškinta anksčiau. Arba taip pat galite naudoti integruotas SQL galimybes įvesdami kabliataškį ir parašydami standartinę užklausą. Pavyzdžiui, atlikite:

;.schema

norėdami peržiūrėti galimas lenteles duomenų bazės schemoje. Nustatę tinkamą lentelę (mūsų atveju access_log), paspauskite q ir naudokite šią užklausą, kad pateiktumėte visą turimą informaciją apie užklausas, gautas iš 195.154.230.31:

;SELECT * FROM access_log WHERE c_ip='195.154.230.31'

Atminkite, kad taip pat galėjome filtruoti rezultatus pagal log_time. Esmė ta, kad įmeskite šiek tiek SQL ir dangus bus riba, ką galite padaryti su lnav.

„Apache“ numatytieji žurnalo formatai

Daugelis žurnalų formatų pagal numatytuosius nustatymus įkeliami naudojant lnav, todėl analizuojami be mūsų įsikišimo. Sąrašą galite peržiūrėti oficialios dokumentacijos skiltyje „Žurnalo formatai“.

Numatytieji formatai nurodyti ~/.lnav/formats/default/default-formats.json.sample, o kitus galima pridėti ~/.lnav/formats naudojant .json plėtinį.

Tačiau norint redaguoti šiuos failus, reikia išmanyti JSON (Javascript Object Notation) ir PCRE (su Perl suderinamus reguliarius reiškinius) biblioteką.

Taigi kodėl lnav nerodė Apache klaidų žurnalo failų? Priežastis ta, kad tie žurnalai neatitinka jokių reguliarių išraiškų esamuose formato failuose, todėl yra traktuojami kaip įprasti tekstiniai failai (ty failai be nurodyto žurnalo formato).

Siūlomas skaitymas: Kaip stebėti „Apache“ žiniatinklio serverio apkrovą ir puslapio statistiką

Kaip minėta anksčiau, galite sukurti savo formatus, kai esate bent šiek tiek susipažinę su JSON ir PCRE. Tai gali būti naudinga, pavyzdžiui, jei apibrėžėte pasirinktinius „Apache“ žurnalus.

Santrauka

Nors naudojome Apache prieigos žurnalą norėdami parodyti, kaip naudoti lnav, atminkite, kad yra keletas kitų tipų žurnalų, kuriuos galima peržiūrėti ir išanalizuoti naudojant šį įrankį. Jei įrankis neatpažįsta konkretaus žurnalo, galite sukurti papildomų formatų ir juos įdiegti vadovaudamiesi čia pateiktais nurodymais.

Ar turite klausimų ar komentarų apie šį straipsnį? Kaip visada, nedvejodami praneškite mums naudodami toliau pateiktą formą. Lauksime jūsų žinučių!