lnav - Tan-awa ug Analisaha ang Apache Logs gikan sa Linux Terminal


Wala pay duha ka semana ang milabay, ang pag-atake sa Wannacry ransomware nakakompromiso sa liboan ka mga kompyuter, nga nagpahinabog dakong kapildihan sa dagkong kompanya ug indibidwal. Kana, uban sa uban pang kaylap nga mga kahuyangan nga nakit-an sa bag-ohay nga mga tuig (sama sa Shellshock bug), gipasiugda ang kamahinungdanon sa pagpabilin sa ibabaw sa imong mga sistema nga kritikal sa misyon.

Bisan kung ang mga kahuyangan kanunay nga nagpunting sa usa ka piho nga operating system o sangkap sa software, ang pagsusi sa trapiko nga mosulod ug gawas sa imong network mahimo’g usa ka hinungdanon nga tabang aron mapanalipdan ang mga kabtangan nga ikaw ang responsable.

Ingon ako sigurado nga nahibal-an na nimo, ang mga log sa sistema mao ang una nga lugar diin kinahanglan naton pangitaon kini nga kasayuran. Aron mapasayon kini nga buluhaton, niining artikuloha atong ipasabot kon unsaon pag-instalar ug paggamit sa lnav, usa ka advanced log file viewer. Uban sa lnav, makahimo ka sa pagtan-aw sa pipila ka mga matang sa mga log nga dungan, pag-navigate sa file gamit ang mga hotkey, ug pagmugna og usa ka summarized histogram sa mga access ug mga sayop. Busa padayon sa pagbasa!

Pag-instalar ug Paglansad sa lnav sa Linux

Aron ma-install ang lnav, gamita ang sistema sa pagdumala sa pakete sa imong pag-apod-apod.

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

Kung kompleto na ang pag-install, ilunsad ang lnav nga gisundan sa hingpit nga agianan sa direktoryo diin nahimutang ang mga log nga susihon. Tungod kay kini kasagaran /var/log, atong buhaton:

# lnav /var/log/httpd

aron masusi ang mga log sa Apache web server sa usa ka CentOS 7:

Atong susihon sa makadiyot ang output nga gipakita sa miaging hulagway:

  • Ang taas nga tuo nga suok nagpakita sa mga file nga gisusi karon (access_log-20170519 ug access_log). Samtang nag-scroll ka paubos o pataas, imong mamatikdan nga ang mga ngalan sa file mahimong mausab samtang ikaw moadto gikan sa usa ngadto sa lain.
  • 40x nga mga tubag sa HTTP (pananglitan, Wala Makita o Gidili) gipakita sa bold, samtang ang 20x nga mga tubag gipakita sa regular nga teksto.
  • Ang mga IP adres makita sa bold nga berde.

Nindot kana tan-awon, dili ba? Apan magkalot kita og gamay karon, ug atong makita nga ang lnav naghatag ug labaw pa kay sa usa ka nindot nga kolor nga output.

Kung nakuryoso ka kung nganong wala gipakita ang mga error log, makit-an nimo ang tubag sa ulahi niini nga artikulo. Busa padayon sa pagbasa!

Pag-usab sa Output gamit ang mga Opsyon ug Mga Hotkey

Sa dili pa kita mopadayon, ilista nato ang pipila ka mga hotkey nga magtugot kanato sa paglihok sa output sa lnav ug sa mga available nga view nga mas sayon:

  • e o E para molukso sa sunod/miaging mensahe sa sayop.
  • w o W para molukso sa sunod/miaging mensahe sa pasidaan.
  • b o Backspace para ibalhin sa miaging panid.
  • Espasyo aron mabalhin sa sunod nga panid.
  • g o G para ibalhin ngadto sa ibabaw/ubos sa kasamtangan nga view.

Kung ang mga log gituyok, ang daan nga mga file mahimong ma-compress (o dili) depende sa mga setting nga gitakda sa logrotate configuration files. Aron maapil ang mga compressed files sa output, ilunsad ang lnav sama sa mosunod:

# lnav -r /var/log/httpd

Kung gusto nimong tan-awon pag-ayo ang paagi sa pag-operate sa lnav, mahimo nimong ilunsad ang programa gamit ang -d nga kapilian nga gisundan sa usa ka filename diin ang impormasyon sa pag-debug isulat, sama niini:

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

Niini nga pananglitan, ang impormasyon sa debug nga namugna sa dihang nagsugod ang lnav isulat sa usa ka file nga ginganlan og lnav.txt sulod sa kasamtangan nga direktoryo sa pagtrabaho.

Ang unang pipila ka linya sa maong payl gipakita sa mosunod nga hulagway:

Ang gipasiugda nga teksto nagpakita nga ang lnav nagkarga sa default nga mga format nga file ug, labi na, ang access_log nga format aron ma-parse ang Apache access log. Dugang pa, ang lnav nagtugot sa pag-parse sa matag linya sa output aron ang output mahimong mas sayon nga mahanduraw ug masabtan.

Aron magamit kini nga bahin, ilunsad ang programa ug pilia ang linya nga gusto nimong i-parse. Ang pinili nga linya mao ang kanunay nga anaa sa ibabaw sa bintana. Dayon pindota ang p ug makita nimo ang mosunod nga resulta:

Aron mobalik sa normal nga mode, pindota pag-usab ang p.

Karon, kung gusto nimong makita ang usa ka summary sa mga log sa petsa ug oras, pindota ang i. Pananglitan, ang gipasiugda nga teksto nagpakita nga sa Lunes, Abril 10, tali sa 10 ug 11 sa gabii, adunay 37 ka HTTP nga mga hangyo nga adunay 14 nga miresulta sa mga sayup.

Kung nahibal-an na nimo ang usa ka potensyal nga problema base sa histogram sama sa gipakita sa taas, mahimo nimong i-press ang i aron makagawas sa view aron susihon kini sa dugang nga detalye gamit ang parser sama sa gipasabut sa sayo pa. O mahimo usab nimo gamiton ang built-in nga mga kapabilidad sa SQL pinaagi sa pag-type sa usa ka semicolon ug pagsulat sa usa ka standard nga pangutana. Pananglitan, buhata ang:

;.schema

aron tan-awon ang anaa nga mga lamesa sa database schema. Human sa pag-ila sa husto nga lamesa (access_log sa atong kaso), atong i-press q ug dayon gamiton ang mosunod nga pangutana aron ibalik ang tanang anaa nga impormasyon mahitungod sa mga hangyo nga gikan sa 195.154.230.31:

;SELECT * FROM access_log WHERE c_ip='195.154.230.31'

Timan-i nga mahimo usab namon nga isala ang mga resulta pinaagi sa log_time. Ang punto mao, ihulog ang usa ka gamay nga SQL ug ang langit ang limitasyon kung unsa ang imong mahimo sa lnav.

Apache Default Log Formats

Daghang mga format sa log ang gikarga pinaagi sa default sa lnav ug busa gi-parse nga wala ang among interbensyon. Mahimo nimong tan-awon ang lista sa seksyon sa Mga Format sa Log sa opisyal nga dokumentasyon.

Ang mga default nga format gitakda sa ~/.lnav/formats/default/default-formats.json.sample, ug ang uban mahimong idugang ~/.lnav/formats gamit ang .json extension.

Bisan pa, ang pag-edit niini nga mga file nanginahanglan usa ka piho nga lebel sa pamilyar sa JSON (Javascript Object Notation) ug sa PCRE (Perl-Compatible Regular Expressions) library.

Busa nganong wala ipakita sa lnav ang Apache error log files? Ang hinungdan mao nga kadtong mga log dili motakdo sa bisan unsang regular nga ekspresyon sa kasamtangan nga format nga mga file, ug sa ingon gitratar isip regular nga mga text file (nagpasabot sa mga file nga walay gihatag nga format sa log).

Sama sa nahisgutan sa sayo pa, mahimo ka makahimo og imong kaugalingon nga mga format sa higayon nga pamilyar ka sa JSON ug PCRE. Mahimo kini nga magamit, pananglitan, kung imong gihubit ang naandan nga mga log sa Apache.

Bisan tuod among gigamit ang Apache access log aron ipakita kon unsaon paggamit ang lnav, hinumdomi nga adunay daghan pang mga matang sa mga log nga mahimong tan-awon ug ma-parse gamit kini nga himan. Kung ang himan wala makaila sa usa ka piho nga log, mahimo ka nga maghimo dugang nga mga format ug i-install kini nga nagsunod sa mga timailhan nga gihatag dinhi.

Aduna ka bay pangutana o komento bahin niining artikuloha? Sama sa kanunay, ayaw pagduhaduha sa pagpahibalo kanamo gamit ang porma sa ubos. Kami nagpaabut nga makadungog gikan kanimo!