Live:CloudOps Webinars & Hands-on Workshops ·Register ↗
Skip to main content

லாக்குகள்

லாக்குகள் என்பது ஒரு பயன்பாடு அல்லது ஒரு சாதனத்தால் அனுப்பப்படும் செய்திகளின் தொடர் ஆகும், இது ஒரு நிகழ்வு பற்றிய ஒன்று அல்லது அதற்கு மேற்பட்ட வரிகளின் விவரங்களால், அல்லது சில நேரங்களில் அந்த பயன்பாட்டின் ஆரோக்கியத்தால் குறிக்கப்படுகிறது. பொதுவாக, லாக்குகள் ஒரு கோப்பில் அனுப்பப்படும், சில நேரங்களில் அவை பகுப்பாய்வு மற்றும் ஒருங்கிணைப்பு செய்யும் ஒரு கலெக்டருக்கு அனுப்பப்படும். மெகாபைட்கள்/நாள் முதல் டெராபைட்கள்/மணி நேரம் வரை - எந்த அளவிலும் லாக் தரவை உருவாக்குதல், உட்கொள்ளல் மற்றும் நிர்வகித்தல் பணியை எளிதாக்குவதை நோக்கமாகக் கொண்ட பல முழு-அம்ச லாக் aggregators, frameworks மற்றும் தயாரிப்புகள் உள்ளன.

லாக்குகள் ஒரு நேரத்தில் ஒரே ஒரு பயன்பாட்டால் உமிழப்படுகின்றன, பொதுவாக அந்த ஒரு பயன்பாட்டின் எல்லைக்குள் சம்பந்தப்படுகின்றன - டெவலப்பர்கள் விரும்பினால் லாக்களை சிக்கலானதாகவும் நுணுக்கமானதாகவும் வைக்க சுதந்திரம் உள்ளது. எங்கள் நோக்கங்களுக்காக, லாக்குகளை ட்ரேஸ்களிலிருந்து அடிப்படையில் வேறுபட்ட சிக்னலாக கருதுகிறோம், ட்ரேஸ்கள் ஒன்றுக்கு மேற்பட்ட பயன்பாடு அல்லது சேவையிலிருந்து நிகழ்வுகளால் உருவாக்கப்படுகின்றன, மேலும் response latency, service faults, request parameters போன்ற சேவைகளுக்கிடையிலான இணைப்பு பற்றிய சூழலுடன் கூடியவை.

லாக்குகளில் உள்ள தரவு ஒரு காலக்கட்டத்தில் திரட்டப்படவும் முடியும். எடுத்துக்காட்டாக, அவை புள்ளியியல் சார்ந்ததாக இருக்கலாம் (எ.கா., முந்தைய நிமிடத்தில் வழங்கப்பட்ட கோரிக்கைகளின் எண்ணிக்கை). அவை structured, free-form, verbose ஆகவும், எந்த எழுத்து மொழியிலும் இருக்கலாம்.

லாக்கிங்கின் முதன்மை பயன்பாட்டு வழக்குகள் விவரிப்பது:

  • ஒரு நிகழ்வு, அதன் நிலை மற்றும் காலம், மற்றும் பிற முக்கிய புள்ளிவிவரங்கள் உட்பட
  • அந்த நிகழ்வுடன் தொடர்புடைய பிழைகள் அல்லது எச்சரிக்கைகள் (எ.கா., stack traces, timeouts)
  • பயன்பாடு தொடங்குதல், start-up மற்றும் shutdown செய்திகள்
note

லாக்குகள் மாற்ற முடியாதவையாக இருக்க வேண்டும், மேலும் பல லாக் மேலாண்மை அமைப்புகள் லாக் தரவை மாற்ற முயற்சிகளைப் பாதுகாக்கவும், கண்டறியவும் வழிமுறைகளை உள்ளடக்கியவை.

உங்கள் லாக்கிங் தேவைகளைப் பொருட்படுத்தாமல், நாங்கள் அடையாளம் கண்ட சிறந்த நடைமுறைகள் இவை.

Structured logging வெற்றிக்கு முக்கியம்

பல அமைப்புகள் அரை-structured வடிவத்தில் லாக்களை உமிழும். எடுத்துக்காட்டாக, ஒரு Apache web server இவ்வாறு லாக்களை எழுதலாம், ஒவ்வொரு வரியும் ஒற்றை web request-க்கு சம்பந்தப்பட்டது:

192.168.2.20 - - [28/Jul/2006:10:27:10 -0300] "GET /cgi-bin/try/ HTTP/1.0" 200 3395 127.0.0.1 - - [28/Jul/2006:10:22:04 -0300] "GET / HTTP/1.0" 200 2216

ஒரு Java stack trace பல வரிகளை உள்ளடக்கிய ஒற்றை நிகழ்வாக இருக்கலாம், குறைவான structured:

Exception in thread "main" java.lang.NullPointerException at com.example.myproject.Book.getTitle(Book.java:16) at com.example.myproject.Author.getBookTitles(Author.java:25) at com.example.myproject.Bootstrap.main(Bootstrap.java:14)

ஒரு Python error log நிகழ்வு இவ்வாறு தோன்றலாம்:

	Traceback (most recent call last):
File "e.py", line 7, in <module>
raise TypeError("Again !?!")
TypeError: Again !?!

இந்த மூன்று உதாரணங்களில், முதலாவது மட்டுமே மனிதர்கள் மற்றும் ஒரு லாக் aggregation அமைப்பு இரண்டாலும் எளிதாக parse செய்யக்கூடியது. Structured logs பயன்படுத்துவது லாக் தரவை விரைவாகவும் திறம்படவும் செயலாக்குவதை எளிதாக்குகிறது, மனிதர்கள் மற்றும் இயந்திரங்கள் இரண்டிற்கும் அவர்கள் தேடுவதை உடனடியாகக் கண்டறிய தேவையான தரவை வழங்குகிறது.

மிகவும் பொதுவாகப் புரிந்துகொள்ளப்படும் லாக் வடிவம் JSON ஆகும், அதில் ஒரு நிகழ்வின் ஒவ்வொரு கூறும் key/value ஜோடியாகக் குறிக்கப்படுகிறது. JSON-ல், மேலே உள்ள python உதாரணம் இவ்வாறு மாற்றி எழுதப்படலாம்:

	{
"level", "ERROR"
"file": "e.py",
"line": 7,
"error": "TypeError(\"Again !?!\")"
}

Structured logs பயன்படுத்துவது உங்கள் தரவை ஒரு லாக் அமைப்பிலிருந்து மற்றொன்றுக்கு எடுத்துச் செல்லக்கூடியதாக ஆக்குகிறது, மேம்பாட்டை எளிமைப்படுத்துகிறது, மற்றும் operational diagnosis-ஐ வேகமாக (குறைவான பிழைகளுடன்) செய்கிறது. மேலும், JSON பயன்படுத்துவது லாக் செய்தியின் schema-வை உண்மையான தரவுடன் உட்பொதிக்கிறது, இது அதிநவீன லாக் பகுப்பாய்வு அமைப்புகள் உங்கள் செய்திகளை தானாகவே index செய்ய உதவுகிறது.

லாக் நிலைகளை சரியாகப் பயன்படுத்துங்கள்

இரண்டு வகையான லாக்குகள் உள்ளன: நிலை உள்ளவை மற்றும் நிகழ்வுகளின் தொடராக உள்ளவை. நிலை உள்ளவற்றுக்கு, இவை வெற்றிகரமான லாக்கிங் உத்தியின் முக்கியமான கூறு. லாக் நிலைகள் ஒரு framework-லிருந்து மற்றொன்றுக்கு சிறிது வேறுபடும், ஆனால் பொதுவாக இந்த அமைப்பைப் பின்பற்றுகின்றன:

நிலைவிளக்கம்
DEBUGஒரு பயன்பாட்டை debug செய்ய மிகவும் பயனுள்ள நுண்ணிய தகவல் நிகழ்வுகள். இவை பொதுவாக developers-க்கு மதிப்புள்ளவை மற்றும் மிகவும் verbose ஆக இருக்கும்.
INFOபயன்பாட்டின் முன்னேற்றத்தை coarse-grained நிலையில் எடுத்துக்காட்டும் தகவல் செய்திகள்.
WARNஒரு பயன்பாட்டிற்கு ஆபத்தைக் குறிக்கும் சாத்தியமான தீங்கு விளைவிக்கும் சூழ்நிலைகள். இவை ஒரு பயன்பாட்டில் அலாரத்தை தூண்டலாம்.
ERRORபயன்பாடு தொடர்ந்து இயங்க அனுமதிக்கக்கூடிய பிழை நிகழ்வுகள். இவை கவனம் தேவைப்படும் அலாரத்தை தூண்ட வாய்ப்புள்ளது.
FATALபயன்பாடு நிறுத்தப்படும் காரணமாக இருக்கக்கூடிய மிகவும் கடுமையான பிழை நிகழ்வுகள்.
info

வெளிப்படையான நிலை இல்லாத லாக்குகள் INFO ஆக கருதப்படலாம், இந்த நடத்தை பயன்பாடுகளுக்கிடையே மாறுபடலாம்.

பிற பொதுவான லாக் நிலைகள் CRITICAL மற்றும் NONE, உங்கள் தேவைகள், நிரலாக்க மொழி மற்றும் framework-ஐ பொறுத்தது. ALL மற்றும் NONE பொதுவானவை, ஆனால் ஒவ்வொரு application stack-லும் காணப்படுவதில்லை.

உங்கள் சூழலின் ஆரோக்கியத்தைப் பற்றி உங்கள் monitoring மற்றும் observability தீர்வை தெரிவிப்பதில் லாக் நிலைகள் முக்கியமானவை, மேலும் லாக் தரவு இந்த தரவை ஒரு தர்க்கரீதியான மதிப்பைப் பயன்படுத்தி எளிதாக வெளிப்படுத்த வேண்டும்.

tip

WARN நிலையில் அதிகமான தரவை லாக் செய்வது உங்கள் monitoring அமைப்பை மட்டுப்படுத்தப்பட்ட மதிப்புள்ள தரவால் நிரப்பும், பின்னர் செய்திகளின் மொத்த அளவில் முக்கியமான தரவை இழக்கலாம்.

லாக்குகள் flowchart

info

ஒரு நிலையான லாக் நிலை உத்தியைப் பயன்படுத்துவது ஆட்டோமேஷனை எளிதாக்குகிறது, மற்றும் developers-க்கு சிக்கல்களின் மூல காரணத்தை விரைவாகக் கண்டறிய உதவுகிறது.

warning

லாக் நிலைகளுக்கான நிலையான அணுகுமுறை இல்லாமல், உங்கள் லாக்களை வடிகட்டுவது ஒரு பெரிய சவாலாகும்.

மூலத்திற்கு அருகில் லாக்களை வடிகட்டுங்கள்

முடிந்தவரை, மூலத்திற்கு நெருக்கமாக லாக்களின் அளவைக் குறையுங்கள். இந்த சிறந்த நடைமுறையைப் பின்பற்ற பல காரணங்கள் உள்ளன:

  • லாக்களை உட்கொள்வதற்கு எப்போதும் நேரம், பணம் மற்றும் வளங்கள் தேவை.
  • downstream அமைப்புகளிலிருந்து sensitive தரவை (எ.கா., தனிப்பட்ட முறையில் அடையாளம் காணக்கூடிய தரவு) வடிகட்டுவது தரவு கசிவிலிருந்து ஆபத்து வெளிப்பாட்டை குறைக்கிறது.
  • Downstream அமைப்புகளுக்கு தரவின் மூலங்களுடன் அதே operational அக்கறைகள் இருக்க வேண்டியதில்லை. எடுத்துக்காட்டாக, CRITICAL அல்லது FATAL செய்திகளைக் கவனிக்கும் monitoring மற்றும் alerting அமைப்புக்கு ஒரு பயன்பாட்டிலிருந்து INFO லாக்குகள் ஆர்வமற்றதாக இருக்கலாம்.
  • லாக் அமைப்புகள், மற்றும் நெட்வொர்க்குகள், தேவையற்ற அழுத்தம் மற்றும் ட்ராஃபிக்கின் கீழ் வைக்கப்பட வேண்டியதில்லை.
info

உங்கள் செலவுகளைக் குறைக்கவும், தரவு வெளிப்பாட்டு ஆபத்தைக் குறைக்கவும், ஒவ்வொரு கூறும் முக்கியமான விஷயங்களில் கவனம் செலுத்தவும் மூலத்திற்கு அருகில் உங்கள் லாக்களை வடிகட்டுங்கள்.

tip

உங்கள் கட்டமைப்பைப் பொறுத்து, உங்கள் பயன்பாடு மற்றும் சூழலில் மாற்றங்களை ஒரே செயல்பாட்டில் டிப்ளாய் செய்ய infrastructure as code (IaC)-ஐ பயன்படுத்த விரும்பலாம். இந்த அணுகுமுறை உங்கள் லாக் வடிகட்டி patterns-ஐ பயன்பாடுகளுடன் டிப்ளாய் செய்ய அனுமதிக்கிறது, அவற்றுக்கு அதே கடுமை மற்றும் சிகிச்சையை வழங்குகிறது.

இரட்டை-உட்கொள்ளல் எதிர்-patterns-ஐ தவிர்க்கவும்

நிர்வாகிகள் பின்பற்றும் ஒரு பொதுவான pattern என்னவென்றால், அவர்களின் அனைத்து லாக்கிங் தரவையும் ஒரே இடத்திலிருந்து அவர்களின் அனைத்து லாக்களையும் வினவும் இலக்குடன் ஒற்றை அமைப்பில் நகலெடுப்பது. இதில் சில manual workflow நன்மைகள் உள்ளன, இருப்பினும் இந்த pattern கூடுதல் செலவு, சிக்கலான தன்மை, தோல்வி புள்ளிகள் மற்றும் operational overhead-ஐ அறிமுகப்படுத்துகிறது.

இரட்டை லாக் உட்கொள்ளல்

info

உங்கள் சூழல்களிலிருந்து லாக் தரவின் மொத்த பரவலைத் தவிர்க்க லாக் நிலைகள் மற்றும் லாக் வடிகட்டல் ஆகியவற்றின் கலவையைப் பயன்படுத்துங்கள்.

info

சில நிறுவனங்கள் அல்லது வொர்க்லோடுகள் ஒழுங்குமுறை தேவைகளை பூர்த்தி செய்ய, லாக்களை பாதுகாப்பான இடத்தில் சேமிக்க, non-reputability அடைய, அல்லது பிற நோக்கங்களை அடைய லாக் ஷிப்பிங் தேவைப்படுகிறது. இது லாக் தரவை மீண்டும் உட்கொள்வதற்கான பொதுவான பயன்பாட்டு வழக்கு. இந்த லாக் காப்பகங்களில் நுழையும் மிதமிஞ்சிய தரவின் அளவைக் குறைக்க லாக் நிலைகள் மற்றும் லாக் வடிகட்டலின் சரியான பயன்பாடு இன்னும் பொருத்தமானது என்பதை நினைவில் கொள்ளுங்கள்.

உங்கள் லாக்களிலிருந்து மெட்ரிக் தரவை சேகரியுங்கள்

உங்கள் லாக்களில் சேகரிக்கக் காத்திருக்கும் மெட்ரிக்குகள் உள்ளன! ISV தீர்வுகள் அல்லது நீங்கள் எழுதாத பயன்பாடுகள் கூட ஒட்டுமொத்த வொர்க்லோட் ஆரோக்கியத்தில் அர்த்தமுள்ள நுண்ணறிவுகளை பிரித்தெடுக்கக்கூடிய மதிப்புள்ள தரவை அவற்றின் லாக்களில் உமிழும். பொதுவான உதாரணங்கள்:

  • டேட்டாபேஸ்களிலிருந்து மெதுவான query நேரம்
  • Web servers-லிருந்து uptime
  • Transaction processing நேரம்
  • காலப்போக்கில் ERROR அல்லது WARNING நிகழ்வுகளின் எண்ணிக்கை
  • மேம்படுத்தலுக்கு கிடைக்கும் packages-ன் மொத்த எண்ணிக்கை
tip

இந்த தரவு ஒரு நிலையான லாக் கோப்பில் பூட்டப்பட்டிருக்கும்போது குறைவான பயனுள்ளது. முக்கிய மெட்ரிக் தரவை அடையாளம் கண்டு, பின்னர் அதை பிற signals-உடன் தொடர்புபடுத்தக்கூடிய உங்கள் மெட்ரிக் அமைப்பில் வெளியிடுவதே சிறந்த நடைமுறை.

stdout-க்கு லாக் செய்யுங்கள்

முடிந்தவரை, பயன்பாடுகள் ஒரு கோப்பு அல்லது socket போன்ற நிலையான இடத்திற்கு பதிலாக stdout-க்கு லாக் செய்ய வேண்டும். இது லாக் ஏஜெண்ட்கள் உங்கள் சொந்த observability தீர்வுக்கு அர்த்தமுள்ள விதிகளின் அடிப்படையில் உங்கள் லாக் நிகழ்வுகளை சேகரிக்கவும் வழிநடத்தவும் உதவுகிறது. அனைத்து பயன்பாடுகளுக்கும் சாத்தியமில்லை என்றாலும், containerized வொர்க்லோடுகளுக்கு இது சிறந்த நடைமுறை.

note

பயன்பாடுகள் தங்கள் லாக்கிங் நடைமுறைகளில் generic மற்றும் எளிமையாக இருக்க வேண்டும், லாக்கிங் தீர்வுகளிலிருந்து loosely coupled ஆக இருக்க வேண்டும், லாக் தரவை stdout-லிருந்து ஒரு கோப்புக்கு அனுப்ப இன்னும் ஒரு லாக் கலெக்டர் தேவைப்படுகிறது. முக்கியமான கருத்து என்னவென்றால், பயன்பாடு மற்றும் வணிக logic உங்கள் லாக்கிங் உள்கட்டமைப்பை சார்ந்திருப்பதை தவிர்க்க வேண்டும் - வேறு வார்த்தைகளில், உங்கள் concerns-ஐ பிரிக்க வேலை செய்ய வேண்டும்.

info

உங்கள் பயன்பாட்டை உங்கள் லாக் மேலாண்மையிலிருந்து decouple செய்வது, code மாற்றங்கள் இல்லாமல் உங்கள் தீர்வை மாற்றவும் மேம்படுத்தவும் உங்களை அனுமதிக்கிறது, இதனால் உங்கள் சூழலில் செய்யப்படும் மாற்றங்களின் சாத்தியமான blast radius-ஐ குறைக்கிறது.