lnav - ഒരു ലിനക്സ് ടെർമിനലിൽ നിന്ന് അപ്പാച്ചെ ലോഗുകൾ കാണുക, വിശകലനം ചെയ്യുക


രണ്ടാഴ്ച മുമ്പ്, Wannacry ransomware ആക്രമണം ആയിരക്കണക്കിന് കമ്പ്യൂട്ടറുകളെ അപഹരിച്ചു, ഇത് വൻകിട കമ്പനികൾക്കും വ്യക്തികൾക്കും ഒരുപോലെ ഗണ്യമായ നഷ്ടമുണ്ടാക്കി. അത്, സമീപ വർഷങ്ങളിൽ (ഷെൽഷോക്ക് ബഗ് പോലുള്ളവ) കണ്ടെത്തിയ മറ്റ് വ്യാപകമായ കേടുപാടുകൾക്കൊപ്പം, നിങ്ങളുടെ മിഷൻ-ക്രിട്ടിക്കൽ സിസ്റ്റങ്ങളുടെ മുകളിൽ തുടരേണ്ടതിന്റെ പ്രാധാന്യം എടുത്തുകാണിക്കുന്നു.

കേടുപാടുകൾ പലപ്പോഴും ഒരു നിർദ്ദിഷ്uട ഓപ്പറേറ്റിംഗ് സിസ്റ്റത്തെയോ സോഫ്റ്റ്uവെയർ ഘടകത്തെയോ ലക്ഷ്യമിടുന്നുണ്ടെങ്കിലും, നിങ്ങളുടെ നെറ്റ്uവർക്കിനുള്ളിലേക്കും പുറത്തേക്കും പോകുന്ന ട്രാഫിക് പരിശോധിക്കുന്നത് നിങ്ങൾക്ക് ഉത്തരവാദിത്തമുള്ള അസറ്റുകൾ പരിരക്ഷിക്കുന്നതിന് ഒരു പ്രധാന സഹായമായിരിക്കും.

നിങ്ങൾക്ക് ഇതിനകം അറിയാമെന്ന് എനിക്ക് ഉറപ്പുണ്ട്, ഈ വിവരങ്ങൾക്കായി ഞങ്ങൾ ആദ്യം അന്വേഷിക്കേണ്ട സ്ഥലം സിസ്റ്റം ലോഗുകളാണ്. ഈ ടാസ്uക് എളുപ്പമാക്കുന്നതിന്, വിപുലമായ ലോഗ് ഫയൽ വ്യൂവറായ lnav എങ്ങനെ ഇൻസ്റ്റാൾ ചെയ്യാമെന്നും ഉപയോഗിക്കാമെന്നും ഈ ലേഖനത്തിൽ ഞങ്ങൾ വിശദീകരിക്കും. lnav ഉപയോഗിച്ച്, നിങ്ങൾക്ക് ഒരേസമയം നിരവധി തരം ലോഗുകൾ കാണാനും ഹോട്ട്കീകൾ ഉപയോഗിച്ച് ഫയലിലൂടെ നാവിഗേറ്റ് ചെയ്യാനും ആക്uസസുകളുടെയും പിശകുകളുടെയും സംഗ്രഹിച്ച ഹിസ്റ്റോഗ്രാം സൃഷ്ടിക്കാനും കഴിയും. അതിനാൽ വായന തുടരുക!

ലിനക്സിൽ lnav ഇൻസ്റ്റാൾ ചെയ്യുകയും സമാരംഭിക്കുകയും ചെയ്യുന്നു

lnav ഇൻസ്റ്റാൾ ചെയ്യാൻ, നിങ്ങളുടെ വിതരണത്തിന്റെ പാക്കേജ് മാനേജ്മെന്റ് സിസ്റ്റം ഉപയോഗിക്കുക.

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

ഇൻസ്റ്റാളേഷൻ പൂർത്തിയായിക്കഴിഞ്ഞാൽ, പരിശോധിക്കേണ്ട ലോഗുകൾ സ്ഥിതിചെയ്യുന്ന ഡയറക്ടറിയിലേക്കുള്ള സമ്പൂർണ്ണ പാതയ്ക്ക് ശേഷം lnav സമാരംഭിക്കുക. ഇത് സാധാരണയായി /var/log ആയിരിക്കുമെന്നതിനാൽ, നമുക്ക് ചെയ്യാം:

# lnav /var/log/httpd

CentOS 7-ൽ അപ്പാച്ചെ വെബ് സെർവറിന്റെ ലോഗുകൾ പരിശോധിക്കാൻ:

മുമ്പത്തെ ചിത്രത്തിൽ കാണിച്ചിരിക്കുന്ന ഔട്ട്പുട്ട് നമുക്ക് ചുരുക്കമായി പരിശോധിക്കാം:

  • മുകളിൽ വലത് കോണിൽ നിലവിൽ പരിശോധിച്ചുകൊണ്ടിരിക്കുന്ന ഫയലുകൾ കാണിക്കുന്നു (access_log-20170519 and access_log). നിങ്ങൾ താഴേക്കോ മുകളിലേക്കോ സ്ക്രോൾ ചെയ്യുമ്പോൾ, ഫയലുകളുടെ പേരുകൾ ഒന്നിൽ നിന്ന് മറ്റൊന്നിലേക്ക് പോകുമ്പോൾ മാറാനിടയുണ്ടെന്ന് നിങ്ങൾ ശ്രദ്ധിക്കും.
  • 40x HTTP പ്രതികരണങ്ങൾ (ഉദാഹരണത്തിന്, കണ്ടെത്തിയില്ല അല്ലെങ്കിൽ വിലക്കപ്പെട്ടവ) ബോൾഡിൽ പ്രദർശിപ്പിക്കും, അതേസമയം 20x പ്രതികരണങ്ങൾ സാധാരണ വാചകത്തിൽ കാണിക്കുന്നു.
  • ഐപി വിലാസങ്ങൾ ബോൾഡ് പച്ചയിൽ ദൃശ്യമാകുന്നു.

അത് തീർച്ചയായും മനോഹരമായി തോന്നുന്നു, അല്ലേ? എന്നാൽ നമുക്ക് ഇപ്പോൾ കുറച്ചുകൂടി ആഴത്തിൽ കുഴിച്ചിടാം, കൂടാതെ lnav ഒരു ഭംഗിയുള്ള വർണ്ണത്തിലുള്ള ഔട്ട്പുട്ടിനെക്കാൾ കൂടുതൽ നൽകുന്നു എന്ന് നമുക്ക് കാണാം.

എന്തുകൊണ്ടാണ് പിശക് ലോഗുകൾ കാണിക്കാത്തത് എന്നതിനെക്കുറിച്ച് നിങ്ങൾക്ക് ജിജ്ഞാസയുണ്ടെങ്കിൽ, ഈ ലേഖനത്തിൽ നിങ്ങൾ ഉത്തരം കണ്ടെത്തും. അതിനാൽ വായന തുടരുക!

ഓപ്uഷനുകളും ഹോട്ട്uകീകളും ഉപയോഗിച്ച് ഔട്ട്uപുട്ട് പരിഷ്uക്കരിക്കുന്നു

കൂടുതൽ മുന്നോട്ട് പോകുന്നതിന് മുമ്പ്, lnav-ന്റെ ഔട്ട്പുട്ടിലൂടെയും ലഭ്യമായ കാഴ്uചകളിലൂടെയും കൂടുതൽ എളുപ്പത്തിൽ നീങ്ങാൻ ഞങ്ങളെ അനുവദിക്കുന്ന കുറച്ച് ഹോട്ട്കീകൾ ലിസ്റ്റ് ചെയ്യാം:

    അടുത്ത/മുമ്പത്തെ പിശക് സന്ദേശത്തിലേക്ക് പോകുന്നതിന്
  • e അല്ലെങ്കിൽ E.
  • അടുത്ത/മുമ്പത്തെ മുന്നറിയിപ്പ് സന്ദേശത്തിലേക്ക് പോകുന്നതിന്
  • w അല്ലെങ്കിൽ W.
  • b അല്ലെങ്കിൽ Backspace മുമ്പത്തെ പേജിലേക്ക് നീങ്ങാൻ.
  • അടുത്ത പേജിലേക്ക് നീങ്ങാനുള്ള സ്ഥലം.
  • നിലവിലെ കാഴ്uചയുടെ മുകളിലേക്ക്/താഴേക്ക് നീങ്ങാൻ
  • g അല്ലെങ്കിൽ G.

ലോഗുകൾ റൊട്ടേറ്റ് ചെയ്യുമ്പോൾ, ലോഗ്രോട്ടേറ്റ് കോൺഫിഗറേഷൻ ഫയലുകളിൽ വ്യക്തമാക്കിയിട്ടുള്ള ക്രമീകരണങ്ങൾ അനുസരിച്ച് പഴയ ഫയലുകൾ കംപ്രസ്സുചെയ്യാം (അല്ലെങ്കിൽ ഇല്ല). ഔട്ട്പുട്ടിൽ കംപ്രസ് ചെയ്ത ഫയലുകൾ ഉൾപ്പെടുത്തുന്നതിന്, ഇനിപ്പറയുന്ന രീതിയിൽ lnav സമാരംഭിക്കുക:

# lnav -r /var/log/httpd

നിങ്ങൾക്ക് lnav പ്രവർത്തിക്കുന്ന രീതി സൂക്ഷ്മമായി പരിശോധിക്കണമെങ്കിൽ, നിങ്ങൾക്ക് -d ഓപ്uഷൻ ഉപയോഗിച്ച് പ്രോഗ്രാം സമാരംഭിക്കാം, തുടർന്ന് ഡീബഗ് വിവരങ്ങൾ എഴുതുന്ന ഒരു ഫയൽ നാമം, അതുപോലെ:

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

ഈ ഉദാഹരണത്തിൽ, lnav ആരംഭിക്കുമ്പോൾ ജനറേറ്റുചെയ്യുന്ന ഡീബഗ് വിവരങ്ങൾ നിലവിലെ പ്രവർത്തിക്കുന്ന ഡയറക്ടറിയിലുള്ള lnav.txt എന്ന ഫയലിലേക്ക് എഴുതപ്പെടും.

ആ ഫയലിന്റെ ആദ്യ കുറച്ച് വരികൾ ഇനിപ്പറയുന്ന ചിത്രത്തിൽ കാണിച്ചിരിക്കുന്നു:

ഹൈലൈറ്റ് ചെയ്uത ടെക്uസ്uറ്റ് സൂചിപ്പിക്കുന്നത് lnav സ്ഥിരസ്ഥിതി ഫോർമാറ്റ് ഫയലും, കൂടുതൽ വ്യക്തമായി പറഞ്ഞാൽ, Apache ആക്uസസ് ലോഗ് പാഴ്uസ് ചെയ്യുന്നതിനുള്ള ആക്uസസ്_ലോഗ് ഫോർമാറ്റും ലോഡുചെയ്uതു എന്നാണ്. കൂടാതെ, ഓരോ ഔട്ട്uപുട്ട് ലൈനും പാഴ്uസ് ചെയ്യാൻ lnav അനുവദിക്കുന്നു, അതുവഴി ഔട്ട്uപുട്ട് ദൃശ്യവൽക്കരിക്കാനും മനസ്സിലാക്കാനും എളുപ്പമാകും.

ഈ സവിശേഷത ഉപയോഗിക്കുന്നതിന്, പ്രോഗ്രാം സമാരംഭിച്ച് നിങ്ങൾക്ക് പാഴ്uസ് ചെയ്യേണ്ട വരി തിരഞ്ഞെടുക്കുക. തിരഞ്ഞെടുത്ത വരി എല്ലായ്പ്പോഴും വിൻഡോയുടെ മുകളിലായിരിക്കും. തുടർന്ന് p അമർത്തുക, നിങ്ങൾ ഇനിപ്പറയുന്ന ഫലം കാണും:

സാധാരണ മോഡിലേക്ക് മടങ്ങാൻ, വീണ്ടും p അമർത്തുക.

ഇപ്പോൾ, തീയതിയും സമയവും അനുസരിച്ച് നിങ്ങൾക്ക് ലോഗുകളുടെ ഒരു സംഗ്രഹം കാണണമെങ്കിൽ, i അമർത്തുക. ഉദാഹരണത്തിന്, ഹൈലൈറ്റ് ചെയ്uത ടെക്uസ്uറ്റ് സൂചിപ്പിക്കുന്നത്, ഏപ്രിൽ 10 തിങ്കളാഴ്ച രാത്രി 10-നും 11-നും ഇടയിൽ 37 HTTP അഭ്യർത്ഥനകളും 14 പിശകുകളും ഉണ്ടായി എന്നാണ്.

മുകളിൽ കാണിച്ചിരിക്കുന്നതുപോലെ ഹിസ്റ്റോഗ്രാം അടിസ്ഥാനമാക്കി ഒരു സാധ്യതയുള്ള പ്രശ്നം നിങ്ങൾ തിരിച്ചറിഞ്ഞുകഴിഞ്ഞാൽ, നേരത്തെ വിശദീകരിച്ചതുപോലെ പാർസർ ഉപയോഗിച്ച് കൂടുതൽ വിശദമായി പരിശോധിക്കുന്നതിന് കാഴ്ചയിൽ നിന്ന് പുറത്തുകടക്കാൻ നിങ്ങൾക്ക് i അമർത്താം. അല്ലെങ്കിൽ ഒരു അർദ്ധവിരാമം ടൈപ്പുചെയ്uത് ഒരു സാധാരണ ചോദ്യം എഴുതിക്കൊണ്ടും നിങ്ങൾക്ക് അന്തർനിർമ്മിത SQL കഴിവുകൾ ഉപയോഗിക്കാം. ഉദാഹരണത്തിന്, ചെയ്യുക:

;.schema

ഡാറ്റാബേസ് സ്കീമയിൽ ലഭ്യമായ പട്ടികകൾ കാണുന്നതിന്. ശരിയായ പട്ടിക (നമ്മുടെ കാര്യത്തിൽ ആക്uസസ്_ലോഗ്) തിരിച്ചറിഞ്ഞ ശേഷം, നമുക്ക് q അമർത്തുക, തുടർന്ന് 195.154.230.31-ൽ നിന്ന് വരുന്ന അഭ്യർത്ഥനകളെക്കുറിച്ചുള്ള ലഭ്യമായ എല്ലാ വിവരങ്ങളും നൽകുന്നതിന് ഇനിപ്പറയുന്ന അന്വേഷണം ഉപയോഗിക്കുക:

;SELECT * FROM access_log WHERE c_ip='195.154.230.31'

ഞങ്ങൾക്ക് log_time വഴിയും ഫലങ്ങൾ ഫിൽട്ടർ ചെയ്യാമായിരുന്നു എന്നത് ശ്രദ്ധിക്കുക. പോയിന്റ്, ഒരു ചെറിയ SQL ഇടുക, നിങ്ങൾക്ക് lnav ഉപയോഗിച്ച് എന്തുചെയ്യാൻ കഴിയും എന്നതിന്റെ പരിധി ആകാശമാണ്.

അപ്പാച്ചെ ഡിഫോൾട്ട് ലോഗ് ഫോർമാറ്റുകൾ

പല ലോഗ് ഫോർമാറ്റുകളും സ്ഥിരസ്ഥിതിയായി lnav-ൽ ലോഡ് ചെയ്യപ്പെടുന്നു, അങ്ങനെ നമ്മുടെ ഇടപെടൽ കൂടാതെ പാഴ്uസ് ചെയ്യപ്പെടുന്നു. ഔദ്യോഗിക ഡോക്യുമെന്റേഷനിലെ ലോഗ് ഫോർമാറ്റുകൾ വിഭാഗത്തിൽ നിങ്ങൾക്ക് ലിസ്റ്റ് കാണാൻ കഴിയും.

ഡിഫോൾട്ട് ഫോർമാറ്റുകൾ ~/.lnav/formats/default/default-formats.json.sample എന്നതിൽ വ്യക്തമാക്കിയിട്ടുണ്ട്, മറ്റുള്ളവ .json എക്സ്റ്റൻഷൻ ഉപയോഗിച്ച് ~/.lnav/formats ചേർക്കാവുന്നതാണ്.

എന്നിരുന്നാലും, ഈ ഫയലുകൾ എഡിറ്റുചെയ്യുന്നതിന് JSON (ജാവാസ്ക്രിപ്റ്റ് ഒബ്ജക്റ്റ് നോട്ടേഷൻ) കൂടാതെ PCRE (Perl-Compatible Regular Expressions) ലൈബ്രറിയുമായി ഒരു പരിധിവരെ പരിചയം ആവശ്യമാണ്.

എന്തുകൊണ്ടാണ് അപ്പാച്ചെ പിശക് ലോഗ് ഫയലുകൾ lnav പ്രദർശിപ്പിക്കാത്തത്? കാരണം, ആ ലോഗുകൾ നിലവിലുള്ള ഫോർമാറ്റ് ഫയലുകളിലെ പതിവ് എക്uസ്uപ്രഷനുകളുമായും പൊരുത്തപ്പെടുന്നില്ല, അതിനാൽ സാധാരണ ടെക്uസ്uറ്റ് ഫയലുകളായി കണക്കാക്കുന്നു (നൽകിയ ലോഗ് ഫോർമാറ്റില്ലാത്ത ഫയലുകൾ എന്നാണ് അർത്ഥമാക്കുന്നത്).

നേരത്തെ സൂചിപ്പിച്ചതുപോലെ, JSON, PCRE എന്നിവയുമായി അൽപമെങ്കിലും പരിചിതമായിക്കഴിഞ്ഞാൽ നിങ്ങൾക്ക് സ്വന്തമായി ഫോർമാറ്റുകൾ സൃഷ്ടിക്കാൻ കഴിയും. ഇത് ഉപയോഗപ്രദമാകും, ഉദാഹരണത്തിന്, നിങ്ങൾ ഇഷ്uടാനുസൃത അപ്പാച്ചെ ലോഗുകൾ നിർവചിച്ചിട്ടുണ്ടെങ്കിൽ.

lnav എങ്ങനെ ഉപയോഗിക്കാമെന്ന് കാണിക്കാൻ ഞങ്ങൾ Apache ആക്uസസ് ലോഗ് ഉപയോഗിച്ചിട്ടുണ്ടെങ്കിലും, ഈ ടൂൾ ഉപയോഗിച്ച് കാണാനും പാഴ്uസ് ചെയ്യാനും കഴിയുന്ന മറ്റ് നിരവധി തരം ലോഗുകൾ ഉണ്ടെന്ന് ഓർമ്മിക്കുക. ഉപകരണം ഒരു നിർദ്ദിഷ്ട ലോഗ് തിരിച്ചറിയുന്നില്ലെങ്കിൽ, നിങ്ങൾക്ക് അധിക ഫോർമാറ്റുകൾ സൃഷ്ടിക്കാനും ഇവിടെ നൽകിയിരിക്കുന്ന സൂചനകൾ അനുസരിച്ച് അവ ഇൻസ്റ്റാൾ ചെയ്യാനും കഴിയും.

ഈ ലേഖനത്തെക്കുറിച്ച് നിങ്ങൾക്ക് എന്തെങ്കിലും ചോദ്യങ്ങളോ അഭിപ്രായങ്ങളോ ഉണ്ടോ? എല്ലായ്പ്പോഴും എന്നപോലെ, ചുവടെയുള്ള ഫോം ഉപയോഗിച്ച് ഞങ്ങളെ അറിയിക്കാൻ മടിക്കേണ്ടതില്ല. ഞങ്ങള് താങ്കള് പറയുന്നതു കേള്ക്കാനായി കാത്തിരിക്കുന്നു!