پرش به محتوا
آرش حاتمی

hatamiarash7/ mtrtools-overview

سال توسعه: ۱۴۰۴ متن‌باز

خلاصه و مقایسهٔ تأخیر شبکه با MTR.tools Overview

افزونهٔ مرورگر برای جمع‌بندی نتایج پینگ در mtr.tools، نمایش موقعیت‌های پرتأخیر، مقایسهٔ اجراها و دریافت داده‌ها در قالب CSV و JSON.

وقتی نتیجهٔ پینگ یک مقصد از چندین موقعیت جغرافیایی در دسترس است، خواندن تک‌تک ردیف‌ها برای رسیدن به یک تصویر کلی زمان می‌برد. میانگین تأخیر چقدر است؟ کدام موقعیت‌ها پاسخ کندتری دارند؟ بعد از یک تغییر در زیرساخت، وضعیت بهتر شده یا بدتر؟

پروژهٔ MTR.tools Overview یک افزونهٔ مرورگر است که داده‌های صفحهٔ پینگ سراسری mtr.tools را می‌خواند و خلاصهٔ آن‌ها را در پنجرهٔ افزونه نمایش می‌دهد. خود افزونه پینگ اجرا نمی‌کند؛ ورودی آن همان نتایجی است که سرویس در برگهٔ فعال مرورگر نشان می‌دهد.

چه اطلاعاتی نمایش داده می‌شود؟

نسخهٔ ۱٫۱٫۰ در مخزن، علاوه بر میانگین کلی، ابزارهایی برای بررسی پراکندگی تأخیر و مقایسهٔ دو اجرا دارد:

  • خلاصهٔ آماری: میانگین، میانه و صدک ۹۵ مقادیر ستون avg، همراه با میانگین ستون‌های آخرین، بهترین و بدترین تأخیر؛
  • موقعیت‌های پرتأخیر: فهرست مرتب‌شده بر اساس میانگین تأخیر، با انتخاب ۵، ۱۰ یا ۱۵ موقعیت و نوار رنگی برای هر مورد؛
  • به‌روزرسانی زنده: بازخوانی آمار هنگام رسیدن نتایج جدید، به‌علاوهٔ دکمهٔ بازخوانی دستی؛
  • ذخیره و مقایسه: نگه‌داری یک اجرای مبنا و نمایش تغییر بعضی شاخص‌های کلی و میانگین تأخیر هر موقعیت؛
  • خروجی فایل: دریافت داده‌های موقعیت‌ها در قالب CSV یا JSON برای تحلیل بعدی.

تعداد پیش‌فرض فهرست ۵ مورد است و انتخاب کاربر در حافظهٔ محلی افزونه ذخیره می‌شود. جزئیات تغییرات این نسخه در تاریخچهٔ پروژه آمده است.

نصب و شروع استفاده

برای نصب معمول، به صفحهٔ افزونه در فروشگاه Firefox مراجعه کنید و آن را به مرورگر اضافه کنید. سپس:

۱. صفحهٔ mtr.tools/global را باز کنید و پینگ مقصد موردنظر را اجرا کنید.

۲. صبر کنید تا نتایج موقعیت‌ها در صفحه ظاهر شوند.

۳. همان برگه را فعال نگه دارید و روی آیکون افزونه در نوار ابزار یا فهرست افزونه‌ها بزنید.

تفاوت نسخه‌ها: در زمان بررسی، ۱ آبان ۱۴۰۵، نسخهٔ فروشگاه Mozilla برابر با ۱٫۰٫۰ است، درحالی‌که کد شاخهٔ main نسخهٔ ۱٫۱٫۰ را معرفی می‌کند. قابلیت‌های مقایسه، خروجی فایل و آمار تکمیلی این مقاله مربوط به نسخهٔ مخزن هستند؛ نصب نسخهٔ فروشگاه لزوماً همهٔ آن‌ها را در اختیار نمی‌گذارد.

آزمایش نسخهٔ مخزن در Firefox

برای بررسی نسخهٔ مخزن، با داشتن Git و Firefox دسکتاپ، کد را دریافت کنید:

git clone --branch main https://github.com/hatamiarash7/mtrtools-overview.git
cd mtrtools-overview

سپس در Firefox آدرس about:debugging را باز کنید، وارد بخش This Firefox شوید و Load Temporary Add-on را بزنید. فایل manifest.json را از پوشهٔ پروژه انتخاب کنید. فایل‌های HTML، CSS و JavaScript افزونه مستقیماً در مخزن قرار دارند و برای این روش نیازی به نصب وابستگی یا ساخت بسته نیست.

طبق راهنمای رسمی Mozilla، این نصب برای آزمایش و توسعه است و با راه‌اندازی مجدد مرورگر برداشته می‌شود.

مقایسهٔ دو اجرا

فرض کنید می‌خواهید تأثیر یک تغییر در مسیر دسترسی یا تنظیمات سرویس را بررسی کنید. در نسخهٔ مخزن می‌توانید این روند را دنبال کنید:

۱. پینگ مقصد را اجرا کنید و پس از رسیدن نتایج، پنجرهٔ افزونه را باز کنید.

۲. روی Save بزنید تا داده‌های فعلی به‌عنوان مبنا ذخیره شوند.

۳. تغییر موردنظر را اعمال کنید و پینگ همان مقصد را دوباره اجرا کنید.

۴. پنجرهٔ افزونه را باز کنید و گزینهٔ Compare را فعال کنید.

کاهش تأخیر با رنگ سبز و افزایش آن با رنگ قرمز نمایش داده می‌شود. در حالت مقایسه، فهرست به‌جای موقعیت‌های دارای بیشترین تأخیر، موقعیت‌های دارای بیشترین تغییر مطلق را نشان می‌دهد. موقعیت‌های تازه یا حذف‌شده با برچسب‌های new و gone مشخص می‌شوند؛ این موارد در انتهای فهرست قرار می‌گیرند و ممکن است خارج از تعداد انتخاب‌شده باشند.

مبنای ذخیره‌شده و وضعیت مقایسه در chrome.storage.local نگه‌داری می‌شوند. هر بار زدن Save، مبنای قبلی را جایگزین می‌کند. در پیاده‌سازی مقایسه، تطبیق ردیف‌ها بر اساس نام موقعیت است و مقصد پینگ همراه مبنا ثبت نمی‌شود؛ بنابراین هنگام مقایسه باید خودتان یکسان‌بودن مقصد و شرایط آزمایش را در نظر بگیرید.

دریافت خروجی برای تحلیل

دکمه‌های CSV و JSON دادهٔ همهٔ ردیف‌های معتبر اجرای فعلی را دانلود می‌کنند، نه فقط موقعیت‌های فهرست پرتأخیر. این خروجی شامل نام موقعیت، آخرین تأخیر، میانگین، بهترین و بدترین تأخیر و انحراف معیار است.

نام فایل CSV برابر با mtrtools.csv است و سطر عنوان آن چنین ساختاری دارد:

location,last,avg,best,worst,stdev

خروجی JSON در فایل mtrtools.json ذخیره می‌شود و آرایه‌ای از ردیف‌هاست. هنگام پردازش آن توجه کنید که نام کلید بدترین تأخیر در JSON برابر با wrst است، درحالی‌که عنوان همان ستون در CSV به‌شکل worst نوشته می‌شود. خروجی‌ها دادهٔ اجرای فعلی هستند و اختلاف با مبنا را شامل نمی‌شوند.

روش محاسبه و محدودیت‌ها

افزونه با JavaScript و APIهای WebExtensions، بر پایهٔ Manifest V3 نوشته شده است. پنجرهٔ آن با HTML و CSS ساخته شده و مجوزهای نسخهٔ مخزن شامل activeTab، scripting و storage هستند. هنگام بازکردن پنجره یا بازخوانی دستی، اسکریپت استخراج داده در برگهٔ فعال اجرا می‌شود.

چند نکته برای تفسیر درست خروجی اهمیت دارد:

  • هر موقعیت وزن یکسانی دارد. میانگین کلی از میانگین تأخیر موقعیت‌ها محاسبه می‌شود و با تعداد بسته‌های هر موقعیت وزن‌دهی نمی‌شود.
  • صدک ۹۵ مربوط به ستون میانگین‌هاست. این مقدار، صدک تأخیر تمام بسته‌های خام یا صدک زمان پاسخ کاربران سرویس نیست.
  • ردیف‌های ناقص کنار گذاشته می‌شوند. نام موقعیت و مقادیر عددی last، avg، best، wrst و stdev باید قابل خواندن باشند. پس تعداد گره‌های نمایش‌داده‌شده، تعداد ردیف‌های معتبر است و لزوماً همهٔ موقعیت‌های صفحه را پوشش نمی‌دهد.
  • استخراج داده به ساختار صفحه وابسته است. کد عنوان ستون‌ها را تطبیق می‌دهد، اما همچنان به چیدمان شبکه‌ای صفحه و ردیف‌های ۱۱ ستونی متکی است؛ تغییر ساختار سایت می‌تواند خواندن نتایج را مختل کند.

جزئیات این محاسبات در اسکریپت استخراج داده قابل مشاهده است. MTR.tools Overview برای جمع‌بندی سریع نتایج و مقایسهٔ اجراها کاربرد دارد و با مجوز MIT منتشر شده است.