lnav ابزاری بسیار کاربردی برای پیمایش لاگ ها در لینوکس و البته مک

خب گرمی هوا و تعطیلی فرصتی شد برای نوشتن درباره lnav 

طبق تعریف رسمی lanv خودش رو یک نمایش دهنده لاگ فایل که UI اون بر پایه ncurses(رابط کاربری مبتنی بر متن مثل norton commander ) هست میدونه


و اما قابلیت ها


  • ادغام و نمایش چندین لاگ فایل در یک پنجره


خیلی پیش میاد برای ریشه یابی یک مشکل مجبور باشیم چندین لاگ رو همزمان بررسی کنیم.وقتی چندین فایل رو با هم باز میکنیم براساس timestamp خطوط لاگ رو نمایش میده و به کمک رنگ های متفاوت هر خط رو متمایز میکنه
lnav /var/log/messages /var/log/secure


  • تشخیص خودکار فرمت لاگ


به صورت داخلی و پیش فرض lanv از لیست بلند بالایی از فرمت ها پشتیبانی میکنه مثلا اکثر وب سرور ها مثل nginx اگرهم فرمت مدنظر شما داخل این لیست نیست امکان تعریف فرمت شخصی رو هم دارید.


  • فیلترکردن لاگ های حجیم قبل از بازکردن
معمولا پیش میاد که با یک فایل چند گیگ ی کارداریم و فقط میخواهیم مثلا سطح  WARN ها رو ببینیم . در مثال زیر اگر دقت کنید خروجی شامل کلی لاگ DEBUG هست ولی با کمک فیلتر رسیدیم به چندین خط و البته میتونیم چندین نوع فیلتر دیگه هم داشته باشیم مثلا regex و ...

مشتری عزیرمون قبل فیلتر
مشتری عزیرمون بعد فیلتر



نمایش هیستوگرام لاگ ها

وقتی ساعت ها یا شاید روزها :) از یک خطا یا incident میگذره به کمک این قابلیت میشه زمان حدودی خطا رو بدست اورد و با کوچیک شدن بازه ریشه یابی خطا خیلی ساده میشه. قابلیت drill down ی که در قسمت هیستوگرام داریم خیلی کاربردی هست برای نمونه در بالاترین سطح ۶ و ۷ آگوست رو داریم و با zoom کردن فراوانی لاگ ها رو در ساعت های روزها هم میبینیم.
برای دیدن هیستوگرام اول دکمه enter و به کمک کلیدهای جهت نما (چپ و راست) گزینه HIST

بالاترین سطح به کمک کلیدهای shift+z
زوم کردن و رفتن به سطوح داخلی به کمک کلید z

  • نمایش زیبا شده(Pretty-Print) فایل های json یا xml 

با زدن کلیدهای shift+p شاهد این اثر هنری میشیم



 کوئری نویسی روی لاگ ها به کمک SQL
شاید یکی از جذاب ترین ویژگی های lnav همین کوئری نویسی باشه که در واقع داره از قابلیت جدول مجازی استفاده میکنه فقط لازمه با زدن کلید ; برید به قسمت کوئری نویسی که البته با زدن کلید tab به شما hint هم میده در مثال زیر من میخوام کل لاگ فایل م رو براساس log level بشمارم.

        
نمایش hint
نمایش خروجی


  • لایو بودن عملیات
تقریبا اکثر عملیاتی که در هنگام کار با lnav انجام میدیم به صورت لایو هستند از اضافه شدن لاگ های جدید(tail -f) تا کوئری نویسی و جستجو

  • تم های مختلف
به راحتی با دستور زیر میتونیم بین تم های موجود تم مدنظر خودمون رو انتخاب کنیم
:config /ui/them 
انتخاب تم مثلا night-owl 👌


به محض نوشتن شروع به فعالیت میکنه و کمک میکنه برای کم کردن خطا
مثلا نبستن پرانتز


  • تکمیل خط فرمان یا Tab-completion
ویژگی‌ای است که در اکثر مترجم‌های خط فرمان مشترک است که باعث می‌شود برنامه به صورت خودکار فرمان‌های وارد شده از طرف کاربر را تا حدی تکمیل کند و ...

کمک در نوشتن sql query ها 


  • تعریف میانبر شخصی یا Keymap
حوصله هربار نوشتن مثلا یک کوئری رو نداری اوکی Keymap رو بساز.مثلا من میخوام با زدن shift+2 یک دستور اجرا بشه در صورت خالی بودن (assign) این ترکیب دستورات مورد نیاز رو نمایش میده




  • بازیابی سشن ها
در lnav بعد از خروج آخرین session (شامل آخرین فایل و فیلتر و..)به صورت خودکار ذخیره میشه 

  • استفاده در اسکریپ ها یا خط فرمان به کمک Headless Mode
بعضی وقت ها نیاز میشه بدون رفتن به محیط UI برنامه بخواهیم از قابلت های اون استفاده کنیم



در آخر میتونید از طریق آدرس زیر به صورت live با lnav کار کنید
 ssh playground@demo.lnav.org

نظرات

پست‌های معروف از این وبلاگ

ساختن ایمیج های داکری به کمک BuildKit - بخش دوم

ساختن ایمیج های داکری به کمک BuildKit - بخش اول