جب آپ کو اپنے سرور کی کارکردگی میں کسی قسم کی پریشانی کا سامنا کرنا پڑتا ہے، تو سب سے پہلے آپ اپنے لینکس لاگز کو چیک کرنا چاہتے ہیں ۔ سسٹم لاگ میں، آپ کو آپریٹنگ سسٹم کے مختلف اجزاء جیسے کرنل یا مختلف سروسز سے کچھ مددگار تشخیصی پیغامات مل سکتے ہیں، اس لیے آپ کو وہاں ناکامی کی وجہ مل جائے گی۔
لاگ میں موجود ہر پیغام آپریٹنگ سسٹم میں کچھ واقعات کے نتیجے میں پیدا ہوتا ہے: صارف کی طرف سے اجازت، سروس بند ہونے یا ایپلیکیشن کی ناکامی تک۔ ان واقعات کی مختلف ترجیحات ہیں اس پر منحصر ہے کہ وہ کتنے اہم ہیں۔ لینکس میں مندرجہ ذیل قسم کے واقعات ہیں:
emerg- ناکامی، سب سے زیادہ ترجیح؛alert- فوری انتباہ؛crit- اہم واقعہ؛err- عام غلطی؛warn- عام انتباہ؛notice- اطلاع؛info- معلوماتی پیغام؛debug- ڈیبگنگ کی معلومات؛
اس وقت، لینکس میں لاگز کی کٹائی کی اہم خدمات rsyslog اور systemd-journald ہیں ۔ وہ زیادہ تر جدید ڈسٹری بیوشن پیکجوں کے ساتھ جاتے ہیں اور آزادانہ طور پر کام کرتے ہیں۔
rsyslog
اس سروس کے لاگز عام ٹیکسٹ فائلوں کی شکل میں " /var/log/ " فولڈر میں موجود ہیں۔ لاگ پیغامات ایونٹ کی قسم کے لحاظ سے مختلف فائلوں میں ڈالے جاتے ہیں۔ مثال کے طور پر، " /var/log/auth.log " سسٹم میں صارفین کی اجازت کے بارے میں معلومات پر مشتمل ہے، اور " /var/log/kern.log " میں کرنل پیغامات شامل ہیں۔ فائلوں کے نام ڈسٹری بیوشن پیکجوں میں مختلف ہو سکتے ہیں، اس لیے آئیے کنفگ فائل پر ایک نظر ڈالیں تاکہ یہ اندازہ لگایا جا سکے کہ " /etc/rsyslog.d/50-default.conf " کہاں ہے ۔
یہ اصول ظاہر کرتے ہیں کہ کون سی فائل ہر قسم کے لاگ پیغامات پر مشتمل ہے۔ بایاں حصہ پیغام کی قسم کو درج ذیل شکل میں دکھاتا ہے " [ماخذ][ترجیح] " اور دایاں حصہ لاگ فائل کا نام دکھاتا ہے۔ پیغام کی قسم لکھتے وقت " * " کیریکٹر شامل کیا جا سکتا ہے۔ اس کا مطلب ہے خالی قدر یا " کوئی نہیں " جو اسے فہرست سے ہٹاتا ہے۔ آئیے پہلے دو اصولوں کو قریب سے دیکھیں۔
“auth,authpriv.* /var/log/auth.log”
“*.*;auth,authpriv.none -/var/log/syslog”
پہلے اصول کا مطلب ہے کہ اجازت کے طریقہ کار سے موصول ہونے والے تمام پیغامات کو " /var/log/auth.log " فائل میں ریکارڈ کیا جائے گا۔ اجازت دینے کی تمام کوششیں (دونوں کامیاب اور نہیں) اس فائل میں رجسٹر کی جائیں گی۔ دوسرا اصول اشارہ کرتا ہے کہ اجازت کے ساتھ منسلک پیغامات کے علاوہ تمام پیغامات کو " /var/log/syslog " فائل میں ریکارڈ کیا جائے گا۔ یہ دو فائلیں عام طور پر سب سے زیادہ مقبول ہوتی ہیں۔ درج ذیل اصول کرنل لاگز " kern.* " اور میل سروس لاگز " mail.* " کو ذخیرہ کرنے کے راستے کی وضاحت کرتے ہیں۔
لاگ فائلوں کو کسی بھی ٹیکسٹ ایڈیٹر کی مدد سے کھولا جا سکتا ہے، جیسے less , cat , tail ۔ آئیے " /var/log/auth.log " فائل کو کھولیں۔
less /var/log/auth.log
فائل کی ہر لائن درخواست یا سروس سے موصول ہونے والا ایک الگ پیغام ہے۔ تمام پیغامات کے ماخذ سے قطع نظر ان کا ایک فارمیٹ ہوتا ہے اور 5 حصوں پر مشتمل ہوتا ہے۔ آئیے اسکرین شاٹ میں نمایاں کردہ پیغام کو بطور مثال لیتے ہیں۔
- پیغام کا ٹائم اسٹیمپ - "فروری 12 06:18:33"
- اس کمپیوٹر کا نام جس نے پیغام بھیجا تھا - "vds"
- درخواست یا سروس کا نام جس نے پیغام بھیجا ہے - "sshd"
- عمل کی شناخت - [653]
- پیغام کا متن - "188.19.42.165 پورٹ 2849 ssh2 سے میہیل کے لیے منظور شدہ پاس ورڈ"
یہ SSH سے کامیاب کنکشن کی ایک مثال تھی۔
اور یہاں یہ ہے کہ لاگ ان کی ناکام کوشش کیسی دکھتی ہے:
یہ فائل اعلی درجے کی اجازتوں کے ساتھ کمانڈز کو بھی ریکارڈ کرتی ہے۔
آئیے /var/log/syslog فائل کو کھولیں۔
اسکرین شاٹ پر ایک نمایاں پیغام نیٹ ورک انٹرفیس بند ہونے کے بارے میں پیغام ہے۔
لمبی ٹیکسٹ فائلوں کے ذریعے معلومات کی تلاش کے لیے گریپ یوٹیلیٹی استعمال کریں۔ آپ pptpd سروس سے موصول ہونے والے تمام پیغامات کو " /var/log/syslog " فائل میں تلاش کر سکتے ہیں۔
grep 'pptpd' /var/log/syslog
تشخیص کے دوران آپ ٹیل یوٹیلیٹی استعمال کرسکتے ہیں جو فائلوں کی کئی آخری لائنوں کو ظاہر کرسکتی ہے۔ کمانڈ " tail -f /var/log/syslog " آپ کو ریئل ٹائم میں لاگز ریکارڈنگ دیکھنے دے گی۔
سروس rsyslog بہت لچکدار اور طاقتور ہے۔ اسے مقامی نظاموں کے ساتھ ساتھ انٹرپرائز کی سطح پر لاگوں کی کٹائی کے لیے استعمال کیا جا سکتا ہے۔ آپ کو سرکاری ویب سائٹ https://www.rsyslog.com/ پر مکمل دستاویزات مل سکتی ہیں۔
لینکس میں لاگز کی گردش
لاگ ریکارڈنگ مسلسل ہو رہی ہے، لہذا فائلوں کا سائز مسلسل بڑھتا ہے۔ گردش کا طریقہ کار پرانے لاگز کی خودکار آرکائیونگ اور نئی فائلوں کی تخلیق کو یقینی بناتا ہے۔ قواعد پر منحصر ہے، یہ روزانہ، ہفتہ وار، ماہانہ یا سائز کی حد سے ہو سکتا ہے۔ جیسے جیسے نئے لاگ بنائے جاتے ہیں، پرانے کو صرف حذف یا ای میل کے ذریعے بھیجا جا سکتا ہے۔ لاگز کی گردش لوگروٹیٹ یوٹیلیٹی کے ذریعہ کی جاتی ہے۔ آپ " /etc/logrotate.conf " فائل میں مرکزی ترتیب تلاش کر سکتے ہیں ۔ فائلوں کے مواد کو " /etc/logrotate.d/ " فولڈر میں بھی پروسیس کیا جاتا ہے۔
نئے قوانین کو مین کنفگ فائل میں لاگ ان کیا جا سکتا ہے۔ تاہم، " /etc/logrotate.d/ " میں علیحدہ فائل بنانا بہتر ہے ۔ پہلے سے طے شدہ طور پر، اس ڈائریکٹری میں چند فائلیں ہیں۔
آئیے اس فائل پر ایک نظر ڈالتے ہیں " /etc/logrotate.d/rsyslog " جس میں rsyslog سروس کے لاگز کے لیے گردش کے اصول شامل ہیں ۔
سب سے پہلے، قاعدہ میں لاگ فائل کا راستہ ہونا چاہیے اور پھر تمام رہنما خطوط کو خمیدہ بریکٹ میں جانا چاہیے۔
- گھمائیں 7 - رکھنے کے لیے فائلوں کی تعداد - 7
- روزانہ - ہر روز ایک نئی فائل بنائیں
- سکیڑیں - پرانی فائلوں کو سکیڑیں اور محفوظ کریں۔
آپ اسکرین شاٹ پر دیکھ سکتے ہیں کہ " /var/log/ " فولڈر میں مین لاگ " syslog " اور 7 آرکائیوز موجود ہیں، جو کنفگ فائل کے اصولوں سے مطابقت رکھتے ہیں۔
آپ " man logrotate " کمانڈ پر عمل کرتے ہوئے دستی میں لوگروٹیٹ کی مزید تفصیلی وضاحت حاصل کر سکتے ہیں۔
لینکس لاگز جمع کرنا - جرنلڈ
لاگز ہارویسٹنگ سروس systemd-journald ابتدائی نظام کا ایک حصہ ہے systemd ۔ لینکس لاگ فائلز کو ایک خاص فارمیٹ میں “ /var/log/journal/ ” میں محفوظ کیا جاتا ہے اور journalctl یوٹیلیٹی کی مدد سے کھولا جا سکتا ہے ۔ ریکارڈز کا فارمیٹ بالکل ویسا ہی ہے جیسا کہ rsyslog میں ہے ۔
کوئی اوصاف کے بغیر کمانڈ journalctl تمام ریکارڈ دکھاتا ہے لیکن یہ بڑے لاگ کے لیے موزوں نہیں ہے۔ آئیے اس افادیت کے کچھ اختیارات پر ایک نظر ڈالیں۔
journalctl -b- آخری آغاز کے بعد سے تمام ریکارڈ دکھائیں۔journalctl -S "2020-02-17 12:00" -U "2020-02-17 12:10"- ایک مخصوص مدت کے اندر ریکارڈ دکھائیں۔journalctl -u pptpd- کسی خاص سروس کے ریکارڈ دکھائیں۔journalctl -k- دانا کے پیغامات دکھائیں۔journalctl -p err- ایک خاص ترجیح کے پیغامات دکھائیں، اس معاملے میں اعلی ترجیحی پیغامات (تنقید، انتباہ، ابھرتے ہوئے)journalctl -f- ریئل ٹائم میں پیغامات دکھائیں۔
بہتر لچک کے لیے آپ ان اختیارات کو یکجا کر سکتے ہیں۔ آئیے pptpd سروس کی تمام خامیاں دکھاتے ہیں۔
journalctl -u pptpd -p err
اگر آپ ایگزیکیوٹیبل فائل کا راستہ بطور انتساب بتاتے ہیں تو یوٹیلیٹی اس فائل کے ذریعے بھیجے گئے تمام پیغامات دکھائے گی۔ آئیے 18 فروری 2020 کو 04:15 سے اب تک فائل " /usr/bin/sudo " کے ذریعے بھیجے گئے تمام پیغامات دکھائیں۔ درحقیقت، یہ اعلیٰ اجازتوں کے ساتھ عمل میں آنے والے تمام کمانڈز کو دکھائے گا۔
journalctl -S "2020-02-18 04:15" /usr/bin/sudo
یہ معلوم کرنے کے لیے کہ درج ذیل کمانڈ پر عمل کرنے کے لیے لاگ فائلیں کتنی ڈسک اسپیس لیتی ہیں۔
journalctl --disk-usage
لاگ فائل کو 1Gb تک محدود کرنے کے لیے درج ذیل کمانڈ پر عمل کریں۔
journalctl --vacuum-size=1G
بائنری فائلیں کھول رہا ہے۔
اب آئیے " /var/log/ " فولڈر میں کچھ خاص فائلوں پر ایک نظر ڈالیں جہاں لاگ ان کی تمام کوششیں محفوظ ہیں۔ یہ فائلیں بائنری ہیں اور صرف خصوصی پروگراموں کے ساتھ کھولی جا سکتی ہیں۔
/var/log/wtmp لاگ ان کی کامیاب کوششوں کے بارے میں معلومات پر مشتمل ہے۔ اسے کھولنے کے لیے آخری افادیت کا استعمال کریں۔
/var/log/btmp - لاگ ان کی تمام ناکام کوششوں پر مشتمل ہے۔ اسے اعلی درجے کی اجازتوں کے ساتھ lastb کے ساتھ کھولا جا سکتا ہے۔ انتساب -n فائل کے آخر سے ظاہر ہونے والی لائنوں کی تعداد کی وضاحت کرتا ہے۔
/var/log/lastlog - ہر اکاؤنٹ کے ریکارڈ کے لیے آخری لاگ ان کارروائی کا وقت ہوتا ہے۔ اسے آخری لاگ کے ساتھ کھولا جا سکتا ہے۔