LogStash میں GROK کا استعمال کرتے ہوئے لاگ سے غیر ساختہ ڈیٹا کو ELK Stack میں تبدیل کرنے کے لیے تجاویز اور ترکیبیں

GROK کے ساتھ غیر ساختہ ڈیٹا کی تشکیل

اگر آپ ایلاسٹک (ELK) اسٹیک استعمال کر رہے ہیں اور اپنی مرضی کے لاگ سٹیش لاگز کو Elasticsearch پر میپ کرنے میں دلچسپی رکھتے ہیں، تو یہ پوسٹ آپ کے لیے ہے۔

LogStash میں GROK کا استعمال کرتے ہوئے لاگ سے غیر ساختہ ڈیٹا کو ELK Stack میں تبدیل کرنے کے لیے تجاویز اور ترکیبیں

ELK اسٹیک تین اوپن سورس پروجیکٹس کا مخفف ہے: Elasticsearch، Logstash اور Kibana۔ وہ مل کر لاگ مینجمنٹ پلیٹ فارم بناتے ہیں۔

  • Elasticsearch تلاش اور تجزیاتی نظام ہے۔
  • لاگسٹ ایک سرور سائیڈ ڈیٹا پروسیسنگ پائپ لائن ہے جو بیک وقت متعدد ذرائع سے ڈیٹا اکٹھا کرتی ہے، اسے تبدیل کرتی ہے، اور پھر اسے Elasticsearch جیسے "stash" میں بھیجتی ہے۔
  • کبانا صارفین کو Elasticsearch میں چارٹس اور گرافس کا استعمال کرتے ہوئے ڈیٹا کو دیکھنے کی اجازت دیتا ہے۔

بیٹس بعد میں آیا اور ایک ہلکا پھلکا ڈیٹا بھیجنے والا ہے۔ بیٹس کے تعارف نے ایلک اسٹیک کو لچکدار اسٹیک میں تبدیل کردیا، لیکن بات یہ نہیں ہے۔

یہ مضمون Grok کے بارے میں ہے، جو Logstash میں ایک خصوصیت ہے جو آپ کے لاگز کو سٹیش میں بھیجے جانے سے پہلے تبدیل کر سکتی ہے۔ ہمارے مقاصد کے لیے، میں صرف Logstash سے Elasticsearch میں ڈیٹا پر کارروائی کرنے کے بارے میں بات کروں گا۔

LogStash میں GROK کا استعمال کرتے ہوئے لاگ سے غیر ساختہ ڈیٹا کو ELK Stack میں تبدیل کرنے کے لیے تجاویز اور ترکیبیں

Grok Logstash کے اندر ایک فلٹر ہے جو غیر ساختہ ڈیٹا کو کسی سٹرکچرڈ اور قابل استفسار میں پارس کرنے کے لیے استعمال ہوتا ہے۔ یہ ریگولر ایکسپریشن (regex) کے اوپر بیٹھتا ہے اور لاگ فائلوں میں سٹرنگز سے ملنے کے لیے ٹیکسٹ پیٹرن کا استعمال کرتا ہے۔

جیسا کہ ہم مندرجہ ذیل حصوں میں دیکھیں گے، جب موثر لاگ مینجمنٹ کی بات آتی ہے تو Grok استعمال کرنے سے بڑا فرق پڑتا ہے۔

Grok کے بغیر آپ کا لاگ ڈیٹا غیر ساختہ ہے۔

LogStash میں GROK کا استعمال کرتے ہوئے لاگ سے غیر ساختہ ڈیٹا کو ELK Stack میں تبدیل کرنے کے لیے تجاویز اور ترکیبیں

Grok کے بغیر، جب لاگ اسٹاش سے Elasticsearch کو لاگز بھیجے جاتے ہیں اور Kibana میں پیش کیے جاتے ہیں، تو وہ صرف پیغام کی قدر میں ظاہر ہوتے ہیں۔

اس صورت حال میں معنی خیز معلومات کا استفسار کرنا مشکل ہے کیونکہ تمام لاگ ڈیٹا ایک ہی کلید میں محفوظ ہے۔ اگر لاگ پیغامات کو بہتر طریقے سے ترتیب دیا جائے تو بہتر ہوگا۔

نوشتہ جات سے غیر ساختہ ڈیٹا

localhost GET /v2/applink/5c2f4bb3e9fda1234edc64d 400 46ms 5bc6e716b5d6cb35fc9687c0

اگر آپ خام ڈیٹا کو قریب سے دیکھیں گے تو آپ دیکھیں گے کہ یہ درحقیقت مختلف حصوں پر مشتمل ہے، ہر ایک کو ایک جگہ سے الگ کیا گیا ہے۔

زیادہ تجربہ کار ڈویلپرز کے لیے، آپ شاید اندازہ لگا سکتے ہیں کہ ہر ایک حصے کا کیا مطلب ہے اور API کال سے وہ لاگ میسج کیا ہے۔ ہر آئٹم کی پیشکش ذیل میں بیان کی گئی ہے۔

ہمارے ڈیٹا کا ساختی منظر

  • لوکل ہوسٹ == ماحول
  • حاصل کریں == طریقہ
  • ​ /v2/applink/5c2f4bb3e9fda1234edc64d == url
  • 400 == جوابی حیثیت
  • 46ms == جوابی وقت
  • ​ 5bc6e716b5d6cb35fc9687c0 == user_id

جیسا کہ ہم سٹرکچرڈ ڈیٹا میں دیکھتے ہیں، غیر ساختہ نوشتہ جات کے لیے ایک ترتیب ہے۔ اگلا مرحلہ خام ڈیٹا کی سافٹ ویئر پروسیسنگ ہے۔ یہ وہ جگہ ہے جہاں گروک چمکتا ہے۔

گروک ٹیمپلیٹس

بلٹ ان Grok ٹیمپلیٹس

Logstash غیر ساختہ ڈیٹا کی تشکیل کے لیے 100 سے زیادہ بلٹ ان ٹیمپلیٹس کے ساتھ آتا ہے۔ آپ کو یقینی طور پر اس سے فائدہ اٹھانا چاہیے جب بھی ممکن ہو عام syslogs جیسے apache, linux, haproxy, aws وغیرہ کے لیے۔

تاہم، کیا ہوتا ہے جب آپ کے پاس حسب ضرورت لاگز ہوں جیسے اوپر دی گئی مثال میں؟ آپ کو اپنا گروک ٹیمپلیٹ بنانا ہوگا۔

کسٹم گروک ٹیمپلیٹس

آپ کو اپنا گروک ٹیمپلیٹ بنانے کی کوشش کرنی ہوگی۔ میں نے استعمال کیا گروک ڈیبگر и گروک پیٹرنز.

نوٹ کریں کہ گروک ٹیمپلیٹ کا نحو درج ذیل ہے: %{SYNTAX:SEMANTIC}

پہلی چیز جو میں نے کرنے کی کوشش کی وہ ٹیب پر جانا تھا۔ دریافت گروک ڈیبگر میں۔ میں نے سوچا کہ یہ اچھا ہوگا اگر یہ ٹول خود بخود گروک پیٹرن تیار کرسکتا ہے، لیکن یہ زیادہ کارآمد نہیں تھا کیونکہ اسے صرف دو میچ ملے تھے۔

LogStash میں GROK کا استعمال کرتے ہوئے لاگ سے غیر ساختہ ڈیٹا کو ELK Stack میں تبدیل کرنے کے لیے تجاویز اور ترکیبیں

اس دریافت کو استعمال کرتے ہوئے، میں نے Grok debugger میں Elastic Github صفحہ پر پائے جانے والے نحو کا استعمال کرتے ہوئے اپنا ٹیمپلیٹ بنانا شروع کیا۔

LogStash میں GROK کا استعمال کرتے ہوئے لاگ سے غیر ساختہ ڈیٹا کو ELK Stack میں تبدیل کرنے کے لیے تجاویز اور ترکیبیں

مختلف نحو کے ساتھ کھیلنے کے بعد، میں آخر کار لاگ ڈیٹا کو اپنی مرضی کے مطابق ڈھانچہ بنانے میں کامیاب ہوگیا۔

LogStash میں GROK کا استعمال کرتے ہوئے لاگ سے غیر ساختہ ڈیٹا کو ELK Stack میں تبدیل کرنے کے لیے تجاویز اور ترکیبیں

گروک ڈیبگر لنک https://grokdebug.herokuapp.com/

اصل متن:

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 انڈیکس کو اپ ڈیٹ کرنا یقینی بنائیں!

LogStash میں GROK کا استعمال کرتے ہوئے لاگ سے غیر ساختہ ڈیٹا کو ELK Stack میں تبدیل کرنے کے لیے تجاویز اور ترکیبیں

Grok کے ساتھ، آپ کے لاگ ڈیٹا کی ساخت ہے!

LogStash میں GROK کا استعمال کرتے ہوئے لاگ سے غیر ساختہ ڈیٹا کو ELK Stack میں تبدیل کرنے کے لیے تجاویز اور ترکیبیں

جیسا کہ ہم اوپر کی تصویر میں دیکھ سکتے ہیں، Grok خود بخود لاگ ڈیٹا کو Elasticsearch کے ساتھ ملانے کے قابل ہے۔ اس سے لاگز کا نظم کرنا اور معلومات کو تیزی سے استفسار کرنا آسان ہو جاتا ہے۔ ڈیبگ کرنے کے لیے لاگ فائلوں کو کھودنے کے بجائے، آپ جس چیز کی تلاش کر رہے ہیں، جیسے ماحول یا یو آر ایل کے ذریعے فلٹر کر سکتے ہیں۔

Grok تاثرات کو آزمائیں! اگر آپ کے پاس ایسا کرنے کا کوئی اور طریقہ ہے یا اوپر دی گئی مثالوں میں کوئی مسئلہ ہے تو مجھے بتانے کے لیے نیچے ایک تبصرہ لکھیں۔

پڑھنے کا شکریہ — اور براہ کرم مزید دلچسپ سافٹ ویئر انجینئرنگ مضامین کے لیے میڈیم پر میری پیروی کریں!

وسائل

https://www.elastic.co/blog/do-you-grok-grok
https://github.com/elastic/logstash/blob/v1.4.2/patterns/grok-patterns
https://grokdebug.herokuapp.com/

پی ایس ماخذ لنک

ٹیلیگرام چینل بذریعہ Elasticsearch

ماخذ: www.habr.com

نیا تبصرہ شامل کریں