امیرحسین شریف نژاد
امیرحسین شریف نژاد
خواندن ۵ دقیقه·۱ سال پیش

تجربه استفاده از تلسکوپ: یکی از بهترین ابزارها برای مانیتورینگ در محیط توسعه

تجربه استفاده از تلسکوپ (laravel telescope)
تجربه استفاده از تلسکوپ (laravel telescope)

حتما براتون پیش امده که یک کدی نوشتید که در محیط لوکال به خوبی و بدون ارور کار می کرده اما وقتی روی سرور تست و محیط دولوپ (develop) اجرا می کردید ارور می داده و فرایند اجرای پروژتون به مشکل می خورده، حالا اگر خواسته باشید لاگ های اروری که برای این مشکل ایجاد شده رو بر روی سرور تست و محیط پروداکشن بدون دسترسی، برسی کنید چی کار می کنید؟ ?
لاراول یک ابزاری داره به نام تلسکوپ که به راحتی می توانید با استفاده از اون بدون دسترسی به سرور لاگ های پروژتون رو برسی کنید، در این مقاله من تجربه و نحوه استفاده از این ابزار بهت میگم پس با من همراه باش.

تلسکوپ (Laravel Telescope) چه ابزاری است؟

لاراول تلسکوپ (Laravel Telescope) یک پکیج مانیتورینگ برای پروژه های لاراولی است که علاوه بر این که شما می توانید لاگ های و ارور های به وجود آمده را مشاهده و برسی کنید می توانید مواردی که در ادامه خدمتتون میگم مشاهده و برسی کنید.

این امکانات عبارتند از:

  1. مشاهده جزئیات درخواست‌ها و پاسخ‌ها: با استفاده از Laravel Telescope می‌توانید جزئیات کاملی از درخواست‌ها و پاسخ‌های سرور را مشاهده کنید. این شامل اطلاعاتی مانند زمان پاسخ‌دهی، کدهای وضعیت HTTP، سرآیندها و پیام‌های خطا است.
  2. مانیتورینگ پایگاه داده: با استفاده از این پکیج می‌توانید عملیات‌های پایگاه داده را مشاهده کنید که شامل کوئری‌ها، زمان اجرا، پارامترها و نتایج بازگشتی می باشد.
  3. مشاهده صف‌ها (Queues): این ابزار به شما امکان می‌دهد تا صف‌ها و جاب ها را مشاهده و نتایج آن‌ها را بررسی کنید. می‌توانید اطلاعاتی مانند تعداد جاب در صف، زمان اجرا و وضعیت آن‌ها را مشاهده کنید.
  4. ثبت رویدادها (Events): پکیچ تلسکوپ در لاراول (Laravel Telescope) به شما اجازه می‌دهد رویدادهای مختلف سیستم را رصد کنید و جزئیات آن‌ها را ببینید. می‌توانید رویدادها را بر اساس نام، زمان و سایر ویژگی‌ها فیلتر کنید.
  5. مشاهده لاگ‌ها (Logs): پکیچ تلسکوپ لاراول به شما امکان می‌دهد تا لاگ‌های برنامه را به صورت مرتب و سازمان‌یافته مشاهده کنید. این ابزار به شما کمک می‌کند تا به راحتی لاگ‌های مربوط به خطاها (Exceptions)و اطلاعات لاگ ها را مشاهده و بررسی کنید.
  6. کش (Cache): Laravel Telescope به شما امکان می‌دهد تا فعالیت کش برنامه را مشاهده کنید. شما می‌توانید اطلاعاتی مانند زمان ایجاد، زمان انقضا کش و سایر جزئیات مربوطه را بررسی کنید. این امکان به شما کمک می‌کند تا عملکرد کش را مانیتور کنید و در صورت نیاز به بهبود عملکرد، تنظیمات کش را تغییر دهید.
  7. ردیس (Redis): تلسکوپ در لاراول اطلاعاتی درباره استفاده از Redis در برنامه شما نیز نمایش می‌دهد. شما می‌توانید اطلاعاتی مانند کلیدهای ثبت شده، نوع داده‌ها، زمان ایجاد و سایر جزئیات را بررسی کنید. این قابلیت به شما کمک می‌کند تا استفاده از آن Redis را مانیتور کنید و در صورت نیاز به بهبود عملکرد و تنظیمات آن بپردازید.
  8. ویوها (Views): با استفاده از Laravel Telescope، شما می‌توانید اطلاعاتی درباره ویوها (صفحات) در برنامه خود مشاهده کنید. شما می‌توانید مشخصاتی مانند نام ویو، زمان ایجاد، زمان بروزرسانی و سایر جزئیات مربوطه را بررسی کنید. این امکان به شما کمک می‌کند تا بهبود عملکرد صفحات را مانیتور کنید و در صورت نیاز، بهینه‌سازی‌های لازم را انجام دهید.
  9. برنامه‌ریزی زمانبندی (Schedule): تلسکوپ به شما این امکان را می‌دهد تا اطلاعات مربوط کران ها زمانبندی شده در برنامه خود را مشاهده کنید. شما ممی‌توانید جزئیاتی مانند نام کران، زمان اجرا، وضعیت اجرا و سایر جزئیات مربوطه را بررسی کنید.


نحوه نصب Laravel Telescope

نصب Laravel Telescope
نصب Laravel Telescope

نصب تلسکوپ بسیار ساده هست و تنها با زدن چند کامند در کنسول میتونید به راحتی از اون استفاده کنید.

composer require laravel/telescope php artisan telescope:install php artisan migrate

بعد با مراجعه به آدرس زیر میتونید به داشبورد تلسکوپ دسترسی داشته باشید.

http://mysite.com/telescope

فیلتر کردن قابلیت های تلسکوپ

بعد از نصب پکیج یک فایل در دایرکتوری برنامه شما با نام telescope.php ایجاد می شود. محتوایات این فایل شامل قابلیت هایی که در بالا خدمتتون عرض کردم هست که امکانات زیر را دارید

  • می توایند یک قابلیت را فعال و یا غیرفعال کنید
  • میتوایند بعضی از امکانات را در هر بخش فیلتر کنید. به طور مثال شاید بخواهید که کامند زیر در تلسکوپ ثبت نشه.
php artisan key:generate

خب میتوانید به راحتی در فایل کانفیگ پکیج و در قسمت خودش نام کامند بالا اضافه کنید.

'watchers' => [ Watchers\CommandWatcher::class => [ 'enabled' => env('TELESCOPE_COMMAND_WATCHER', true), 'ignore' => ['key:generate'], ] ],

در صورتی که سرور تستتون زیاد حجم نداره و میخواید که هر چند روز یکبار لاگ های ثبتی حذف بشوند تلسکوپ به فکر شماهم بوده و می توانید از گذاشتن کامند های زیر در kernel کنسولتون از این قابلیت استفاده کنید.

$schedule->command('telescope:prune')->daily(); $schedule->command('telescope:prune --hours=48')->daily();


چرا توصیه نمی کنم که تلسکوپ در محیط پروداکشن استفاده کنید؟

شاید با دیدن عنوان و برسی پکیج، این سوال براتون پیش آمده باشه که چرا امیرحسین این ابزار برای محیط پروداکشن و سرور اصلی توصیه نمیکنه و یا حرفی ازش نمیزنه؟!
اگر که داکیومنت این پکیج بخونید توی قسمت معرفی تلسکوپ، لاراول گفته مناسب برای محیط توسعه (develop) ?

ولی حالا چرا خود لاراول این حرف زده، با برسی هایی که بیشتر انجام دادم به ۳ نتیجه رسیدم که در ادامه اون ها براتون میگم:

  • امنیت: همین طور که در بالا از قابلیت های این ابزار براتون گفتم یکی از قابلیت هایی که تلسکوپ (Laravel Telescope) داره نمایش کوئری هایی هست که به دیتابیس زده شده که این قابلیت به خاطر این که اطلاعات پایگاه داده در خودش داره ممکن که به وسیله آن سرور و دیتابیستون مورد نفوذ امنیتی قرار بگیره.
  • افزایش منابع: تلسکوپ به صورت پیش فرض قابلیت هایی داره که در محیط توسعه مورد نیاز هست اما در محیط پروداکشن ممکن هست خیلی از قابلیت های این پکیج مورد نیاز نباشد و باعث اشغال بی مورد منابع سرور تون بشه و مجبور بشید به خاطر این موضوع منابع سرورتون افزایش بدید.
  • کاهش عملکرد برنامه: در محیط پروداکشن، عملکرد سیستم باید بهینه و در حداکثر سرعت باشد اما تلسکوپ برای توسعه و اشکال زدایی طراحی شده است و عملکرد سیستم را با تعداد زیادی درخواست و عملیات مانیتورینگ و ثبت رویدادها ممکن هست کاهش دهد.

حالا با توجه به مواردی که گفتم اگر می خواید که بر روی سرور اصلیتون و محیط پروداکشن (production) از ابزاری برای مانیتورینگ استفاده کنید که عملکرد برنامه کاهش نده و امنیت بالایی هم داشته باشه به نظر من از گرافانا استفاده کنید.

منبع:

https://laravel.com/docs/10.x/telescope


لاراولآموزش لاراولlaravellaravel telescope
یک برنامه نویس، که از پیچیدگی بدش میاد
شاید از این پست‌ها خوشتان بیاید