GROK உடன் கட்டமைக்கப்படாத தரவை கட்டமைத்தல்
நீங்கள் எலாஸ்டிக் (ELK) அடுக்கைப் பயன்படுத்துகிறீர்கள் மற்றும் தனிப்பயன் லாக்ஸ்டாஷ் பதிவுகளை Elasticsearch க்கு மேப்பிங் செய்வதில் ஆர்வமாக இருந்தால், இந்த இடுகை உங்களுக்கானது.
ELK ஸ்டாக் என்பது மூன்று திறந்த மூல திட்டங்களுக்கான சுருக்கமாகும்: எலாஸ்டிக் சர்ச், லாக்ஸ்டாஷ் மற்றும் கிபானா. அவர்கள் ஒன்றாக ஒரு பதிவு மேலாண்மை தளத்தை உருவாக்குகிறார்கள்.
- Elasticsearch ஒரு தேடல் மற்றும் பகுப்பாய்வு அமைப்பு.
- Logstash ஒரே நேரத்தில் பல ஆதாரங்களில் இருந்து தரவை உள்வாங்கி, அதை மாற்றி, பின்னர் எலாஸ்டிக் சர்ச் போன்ற "ஸ்டாஷ்"க்கு அனுப்பும் சர்வர் பக்க தரவு செயலாக்க பைப்லைன் ஆகும்.
- Kibana மீள் தேடலில் விளக்கப்படங்கள் மற்றும் வரைபடங்களைப் பயன்படுத்தி தரவைக் காட்சிப்படுத்த பயனர்களை அனுமதிக்கிறது.
பீட்ஸ் பின்னர் வந்தது மற்றும் ஒரு இலகுரக டேட்டா ஷிப்பர். பீட்ஸின் அறிமுகம் எல்க் ஸ்டேக்கை எலாஸ்டிக் ஸ்டேக்காக மாற்றியது, ஆனால் அது முக்கியமல்ல.
இந்தக் கட்டுரை க்ரோக்கைப் பற்றியது, இது லாக்ஸ்டாஷில் உள்ள ஒரு அம்சமாகும், இது உங்கள் பதிவுகளை ஸ்டாஷுக்கு அனுப்பும் முன் மாற்றும். எங்கள் நோக்கங்களுக்காக, நான் Logstash இலிருந்து Elasticsearch இல் தரவை செயலாக்குவது பற்றி மட்டுமே பேசுவேன்.
Grok என்பது Logstash க்குள் இருக்கும் ஒரு வடிகட்டியாகும், இது கட்டமைக்கப்படாத தரவை கட்டமைக்கப்பட்ட மற்றும் வினவக்கூடிய ஒன்றாக அலசப் பயன்படுகிறது. இது வழக்கமான வெளிப்பாட்டின் மேல் (regex) அமர்ந்து, பதிவுக் கோப்புகளில் உள்ள சரங்களைப் பொருத்த உரை வடிவங்களைப் பயன்படுத்துகிறது.
பின்வரும் பிரிவுகளில் நாம் பார்ப்பது போல், திறமையான பதிவு மேலாண்மைக்கு வரும்போது Grok ஐப் பயன்படுத்துவது ஒரு பெரிய வித்தியாசத்தை ஏற்படுத்துகிறது.
Grok இல்லாமல் உங்கள் பதிவு தரவு கட்டமைக்கப்படவில்லை
Grok இல்லாமல், Logstash இலிருந்து Elasticsearch க்கு பதிவுகள் அனுப்பப்பட்டு கிபானாவில் ரெண்டர் செய்யப்பட்டால், அவை செய்தி மதிப்பில் மட்டுமே தோன்றும்.
இந்த சூழ்நிலையில் அர்த்தமுள்ள தகவலை வினவுவது கடினம், ஏனெனில் அனைத்து பதிவு தரவுகளும் ஒரே விசையில் சேமிக்கப்படுகின்றன. பதிவு செய்திகள் சிறப்பாக ஒழுங்கமைக்கப்பட்டால் நன்றாக இருக்கும்.
பதிவுகளிலிருந்து கட்டமைக்கப்படாத தரவு
localhost GET /v2/applink/5c2f4bb3e9fda1234edc64d 400 46ms 5bc6e716b5d6cb35fc9687c0
நீங்கள் மூலத் தரவை உற்று நோக்கினால், அது உண்மையில் வெவ்வேறு பகுதிகளைக் கொண்டிருப்பதைக் காண்பீர்கள், ஒவ்வொன்றும் ஒரு இடைவெளியால் பிரிக்கப்பட்டிருக்கும்.
அனுபவம் வாய்ந்த டெவலப்பர்களுக்கு, API அழைப்பிலிருந்து ஒவ்வொரு பகுதியும் என்ன அர்த்தம் மற்றும் பதிவு செய்தி என்ன என்பதை நீங்கள் யூகிக்க முடியும். ஒவ்வொரு பொருளின் விளக்கக்காட்சியும் கீழே கோடிட்டுக் காட்டப்பட்டுள்ளது.
எங்கள் தரவின் கட்டமைக்கப்பட்ட பார்வை
- லோக்கல் ஹோஸ்ட் == சூழல்
- GET == முறை
- /v2/applink/5c2f4bb3e9fda1234edc64d == url
- 400 == பதில்_நிலை
- 46ms == response_time
- 5bc6e716b5d6cb35fc9687c0 == user_id
கட்டமைக்கப்பட்ட தரவுகளில் நாம் பார்ப்பது போல, கட்டமைக்கப்படாத பதிவுகளுக்கு ஒரு வரிசை உள்ளது. அடுத்த கட்டம் மூல தரவுகளின் மென்பொருள் செயலாக்கமாகும். இங்குதான் க்ரோக் ஜொலிக்கிறார்.
க்ரோக் டெம்ப்ளேட்கள்
உள்ளமைக்கப்பட்ட Grok வார்ப்புருக்கள்
கட்டமைக்கப்படாத தரவைக் கட்டமைக்க Logstash 100 க்கும் மேற்பட்ட உள்ளமைக்கப்பட்ட டெம்ப்ளேட்களுடன் வருகிறது. apache, linux, haproxy, aws மற்றும் பல போன்ற பொதுவான syslogகளுக்கு முடிந்தவரை இதை நீங்கள் கண்டிப்பாகப் பயன்படுத்திக் கொள்ள வேண்டும்.
இருப்பினும், மேலே உள்ள எடுத்துக்காட்டில் உள்ள தனிப்பயன் பதிவுகள் உங்களிடம் இருந்தால் என்ன நடக்கும்? நீங்கள் உங்கள் சொந்த க்ரோக் டெம்ப்ளேட்டை உருவாக்க வேண்டும்.
தனிப்பயன் Grok வார்ப்புருக்கள்
உங்கள் சொந்த க்ரோக் டெம்ப்ளேட்டை உருவாக்க முயற்சிக்க வேண்டும். நான் பயன்படுத்தினேன்
Grok டெம்ப்ளேட் தொடரியல் பின்வருமாறு என்பதை நினைவில் கொள்க: %{SYNTAX:SEMANTIC}
நான் செய்ய முயற்சித்த முதல் விஷயம் தாவலுக்குச் சென்றது டிஸ்கவர் Grok பிழைத்திருத்தத்தில். இந்தக் கருவி தானாகவே க்ரோக் பேட்டர்னை உருவாக்கினால் நன்றாக இருக்கும் என்று நினைத்தேன், ஆனால் இரண்டு பொருத்தங்கள் மட்டுமே கிடைத்ததால் அது மிகவும் பயனுள்ளதாக இல்லை.
இந்த கண்டுபிடிப்பைப் பயன்படுத்தி, எலாஸ்டிக் கிதுப் பக்கத்தில் காணப்படும் தொடரியல் மூலம் க்ரோக் பிழைத்திருத்தத்தில் எனது சொந்த டெம்ப்ளேட்டை உருவாக்கத் தொடங்கினேன்.
வெவ்வேறு தொடரியல்களுடன் விளையாடிய பிறகு, இறுதியாக பதிவுத் தரவை நான் விரும்பிய வழியில் கட்டமைக்க முடிந்தது.
Grok பிழைத்திருத்தி இணைப்பு
அசல் உரை:
localhost GET /v2/applink/5c2f4bb3e9fda1234edc64d 400 46ms 5bc6e716b5d6cb35fc9687c0
முறை:
%{WORD:environment} %{WORD:method} %{URIPATH:url} %{NUMBER:response_status} %{WORD:response_time} %{USERNAME:user_id}
இறுதியில் நடந்தது என்ன
{
"environment": [
[
"localhost"
]
],
"method": [
[
"GET"
]
],
"url": [
[
"/v2/applink/5c2f4bb3e9fda1234edc64d"
]
],
"response_status": [
[
"400"
]
],
"BASE10NUM": [
[
"400"
]
],
"response_time": [
[
"46ms"
]
],
"user_id": [
[
"5bc6e716b5d6cb35fc9687c0"
]
]
}
க்ரோக் டெம்ப்ளேட் மற்றும் மேப் செய்யப்பட்ட தரவு கையில் இருப்பதால், அதை Logstash இல் சேர்ப்பது கடைசி படியாகும்.
Logstash.conf உள்ளமைவு கோப்பை புதுப்பிக்கிறது
நீங்கள் ELK அடுக்கை நிறுவிய சேவையகத்தில், Logstash உள்ளமைவுக்குச் செல்லவும்:
sudo vi /etc/logstash/conf.d/logstash.conf
மாற்றங்களை ஒட்டவும்.
input {
file {
path => "/your_logs/*.log"
}
}
filter{
grok {
match => { "message" => "%{WORD:environment} %{WORD:method} %{URIPATH:url} %{NUMBER:response_status} %{WORD:response_time} %{USERNAME:user_id}"}
}
}
output {
elasticsearch {
hosts => [ "localhost:9200" ]
}
}
உங்கள் மாற்றங்களைச் சேமித்த பிறகு, Logstash ஐ மறுதொடக்கம் செய்து அதன் நிலையைச் சரிபார்க்கவும்.
sudo service logstash restart
sudo service logstash status
இறுதியாக, மாற்றங்கள் நடைமுறைக்கு வந்துள்ளன என்பதை உறுதிப்படுத்த, கிபானாவில் லாக்ஸ்டாஷிற்கான உங்கள் எலாஸ்டிக் தேடல் குறியீட்டைப் புதுப்பிக்க மறக்காதீர்கள்!
Grok உடன், உங்கள் பதிவு தரவு கட்டமைக்கப்பட்டுள்ளது!
மேலே உள்ள படத்தில் நாம் பார்ப்பது போல், க்ரோக் பதிவுத் தரவை எலாஸ்டிக் தேடலுடன் தானாகப் பொருத்த முடியும். இது பதிவுகளை நிர்வகிப்பதை எளிதாக்குகிறது மற்றும் தகவல்களை விரைவாக வினவுகிறது. பிழைத்திருத்தம் செய்ய பதிவுக் கோப்புகளைத் தோண்டி எடுப்பதற்குப் பதிலாக, சூழல் அல்லது url போன்ற நீங்கள் தேடுவதை வடிகட்டலாம்.
க்ரோக் வெளிப்பாடுகளை முயற்சிக்கவும்! இதைச் செய்ய உங்களுக்கு வேறு வழி இருந்தால் அல்லது மேலே உள்ள எடுத்துக்காட்டுகளில் ஏதேனும் சிக்கல்கள் இருந்தால், எனக்குத் தெரியப்படுத்த கீழே ஒரு கருத்தை எழுதவும்.
படித்ததற்கு நன்றி - மேலும் சுவாரஸ்யமான மென்பொருள் பொறியியல் கட்டுரைகளுக்கு இங்கே மீடியத்தில் என்னைப் பின்தொடரவும்!
Ресурсы
பி.எஸ்
மூலம் டெலிகிராம் சேனல்
ஆதாரம்: www.habr.com