GROK سان گڏ غير منظم ڊيٽا جي جوڙجڪ
جيڪڏهن توهان استعمال ڪري رهيا آهيو لچڪدار (ELK) اسٽيڪ ۽ ميلاپ ڪرڻ ۾ دلچسپي رکو ٿا ڪسٽم Logstash لاگز کي Elasticsearch ڏانهن، پوء هي پوسٽ توهان لاء آهي.
ELK اسٽيڪ ٽن اوپن سورس منصوبن لاءِ مخفف آهي: Elasticsearch، Logstash ۽ Kibana. گڏو گڏ اهي هڪ لاگ مئنيجمينٽ پليٽ فارم ٺاهيندا آهن.
- ElasticsSearch هڪ ڳولا ۽ تجزياتي نظام آهي.
- Logstash هڪ سرور-سائڊ ڊيٽا پروسيسنگ پائپ لائن آهي جيڪا ڪيترن ئي ذريعن مان ڊيٽا گڏ ڪري ٿي، ان کي تبديل ڪري ٿي، ۽ پوءِ ان کي "اسٽيش" ڏانهن موڪلي ٿي جهڙوڪ Elasticsearch.
- ڪبيانا صارفين کي Elasticsearch ۾ چارٽ ۽ گراف استعمال ڪندي ڊيٽا کي ڏسڻ جي اجازت ڏئي ٿو.
ٻڪريون بعد ۾ آيو ۽ هڪ ٿلهي ڊيٽا shipper آهي. بيٽس جي تعارف ايلڪ اسٽيڪ کي لچڪدار اسٽيڪ ۾ تبديل ڪيو، پر اهو نڪتو ناهي.
هي آرٽيڪل Grok جي باري ۾ آهي، جيڪو Logstash ۾ هڪ خاصيت آهي جيڪو توهان جي لاگز کي تبديل ڪري سگهي ٿو ان کان اڳ اهي اسٽش ڏانهن موڪليا وڃن. اسان جي مقصدن لاءِ، مان صرف Logstash کان Elasticsearch ۾ ڊيٽا پروسيسنگ بابت ڳالهائيندس.
Grok Logstash جي اندر ھڪڙو فلٽر آھي جيڪو غير منظم ٿيل ڊيٽا کي ھڪڙي منظم ۽ سوال جي قابل شيء ۾ پارس ڪرڻ لاء استعمال ڪيو ويندو آھي. اهو هڪ باقاعده اظهار (regex) جي چوٽي تي ويٺو آهي ۽ لاگ فائلن ۾ تارن کي ملائڻ لاءِ ٽيڪسٽ نمونن کي استعمال ڪري ٿو.
جيئن اسان هيٺ ڏنل حصن ۾ ڏسندا، Grok استعمال ڪندي هڪ وڏو فرق پيدا ڪري ٿو جڏهن اهو موثر لاگ انتظام جي اچي ٿو.
Grok کان سواءِ توهان جو لاگ ڊيٽا غير منظم آهي
Grok کان سواءِ، جڏهن لاگز Logstash کان Elasticsearch ڏانهن موڪليا ويندا آهن ۽ Kibana ۾ پيش ڪيا ويندا آهن، اهي صرف پيغام جي قيمت ۾ ظاهر ٿيندا آهن.
هن صورتحال ۾ معقول معلومات جو سوال ڪرڻ ڏکيو آهي ڇاڪاڻ ته سڀئي لاگ ڊيٽا هڪ واحد چيڪ ۾ محفوظ ٿيل آهي. اھو بھتر ھوندو جيڪڏھن لاگ پيغامن کي بھتر ترتيب ڏنو وڃي.
لاگن مان غير منظم ڊيٽا
localhost GET /v2/applink/5c2f4bb3e9fda1234edc64d 400 46ms 5bc6e716b5d6cb35fc9687c0
جيڪڏھن توھان خام ڊيٽا کي ويجھي نظر سان ڏسندا، توھان ڏسندؤ ته اھو اصل ۾ مختلف حصن تي مشتمل آھي، ھر ھڪ خلا سان جدا ٿيل آھي.
وڌيڪ تجربيڪار ڊولپرز لاءِ، توھان اندازو لڳائي سگھو ٿا ته ھر ھڪ حصن جو مطلب ڇا آھي ۽ اھو لاگ پيغام API ڪال مان ڇا آھي. هر شئي جي پيشڪش هيٺ ڏنل آهي.
اسان جي ڊيٽا جو ٺهيل منظر
- مقامي ميزبان == ماحول
- حاصل ڪريو == طريقو
- /v2/applink/5c2f4bb3e9fda1234edc64d == url
- 400 == جواب_ اسٽيٽس
- 46ms == جواب_وقت
- 5bc6e716b5d6cb35fc9687c0 == user_id
جيئن اسان منظم ڪيل ڊيٽا ۾ ڏسون ٿا، اتي هڪ ترتيب آهي غير منظم لاگ لاءِ. ايندڙ قدم خام ڊيٽا جي سافٽ ويئر پروسيسنگ آهي. اهو آهي جتي Grok چمڪندڙ آهي.
گروڪ ٽيمپليٽس
بلٽ ان Grok ٽيمپليٽ
Logstash 100 کان وڌيڪ بلٽ ان ٽيمپليٽس سان گڏ اچي ٿو غير منظم ڊيٽا کي ترتيب ڏيڻ لاءِ. توھان کي ضرور ان مان فائدو وٺڻ گھرجي جڏھن به ممڪن ھجي ته عام syslogs جھڙوڪ apache، linux، haproxy، aws وغيره.
تنهن هوندي، ڇا ٿيندو جڏهن توهان وٽ ڪسٽم لاگ آهن جيئن مٿي ڏنل مثال ۾؟ توهان کي پنهنجو Grok ٽيمپليٽ ٺاهڻ گهرجي.
ڪسٽم Grok ٽيمپليٽ
توھان کي ڪوشش ڪرڻي پوندي پنھنجي گروڪ ٽيمپليٽ ٺاھيو. مون استعمال ڪيو
نوٽ ڪريو ته گروڪ ٽيمپليٽ نحو هن ريت آهي: %{SYNTAX:SEMANTIC}
پهرين شيء جيڪا مون ڪرڻ جي ڪوشش ڪئي هئي ٽيب ڏانهن وڃو ڊسڪور Grok debugger ۾. مون سوچيو ته اهو ٿڌو ٿيندو جيڪڏهن هي اوزار خودڪار طور تي هڪ گروڪ نمونو ٺاهي سگهي ٿو، پر اهو ايترو ڪارائتو نه هو ڇو ته اهو صرف ٻه ميچون مليا آهن.
هن دريافت کي استعمال ڪندي، مون Grok debugger ۾ لچڪدار Github صفحي تي مليل نحو کي استعمال ڪندي پنهنجو ٽيمپليٽ ٺاهڻ شروع ڪيو.
مختلف نحو سان گڏ راند ڪرڻ کان پوء، مان آخرڪار لاگ ڊيٽا کي ترتيب ڏيڻ جي قابل ٿي ويو جيئن مون چاهيو.
گروڪ ڊيبگر لنڪ
اصل متن:
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"
]
]
}
Grok ٽيمپليٽ ۽ ميپ ٿيل ڊيٽا هٿ ۾، آخري قدم ان کي شامل ڪرڻ آهي 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
آخرڪار، پڪ ڪرڻ لاء تبديليون اثر انداز ٿي ويا آهن، Kibana ۾ Logstash لاءِ پنھنجي Elasticsearch index کي اپڊيٽ ڪرڻ جي پڪ ڪريو!
Grok سان، توهان جي لاگ ڊيٽا کي منظم ڪيو ويو آهي!
جيئن اسان مٿي ڏنل تصوير ۾ ڏسي سگهون ٿا، Grok قابل آهي خودڪار طريقي سان ميلاپ ڊيٽا کي Elasticsearch سان. اهو آسان بڻائي ٿو لاگز کي منظم ڪرڻ ۽ جلدي معلومات پڇڻ. ڊيبگ ڪرڻ لاءِ لاگ فائلن جي ذريعي کوٽڻ بدران، توهان صرف ان ذريعي فلٽر ڪري سگهو ٿا جيڪي توهان ڳولي رهيا آهيو، جهڙوڪ ماحول يا url.
Grok اظهار جي ڪوشش ڪريو! جيڪڏهن توهان وٽ اهو ڪرڻ جو ٻيو طريقو آهي يا مٿي ڏنل مثالن سان ڪو مسئلو آهي، صرف مون کي ڄاڻڻ لاء هيٺ ڏنل تبصرو لکو.
پڙهڻ لاءِ مهرباني- ۽ مهرباني ڪري مون کي فالو ڪريو هتي ميڊيم تي وڌيڪ دلچسپ سافٽ ويئر انجنيئرنگ آرٽيڪل لاءِ!
ذريعا
پي
ٽيليگرام چينل پاران
جو ذريعو: www.habr.com