تصور کنید مجبورید برای یافتن یک خطای کوچک، یک میلیون خط متن بیمعنی را بخوانید؛ این دقیقاً همان کابوسی است که مهندسان سیستمهای توزیعشده با آن دستوپنجه نرم میکنند. ابزار ctrlb-decompose این کابوس را به یک بررسی ساختاری سریع تبدیل میکند.
بر اساس مستندات گیتهاب این پروژه، ابزار ctrlb-decompose که در ۲۸ جولای ۲۰۲۶ عرضه شد، قادر است ۱,۲۴۷,۸۳۱ خط لاگ خام سرور را تنها به ۴۳ الگوی ساختاری کاهش دهد. این یعنی کاهش حجم داده تا ۹۹.۹٪. این ابزار با فشردهسازی نویزهای تکراری در میلیونها خط داده، دقیقاً همان الگوهای ضروری را که یک مدل زبانی بزرگ (LLM) — مثل کتابخانهداری که میلیاردها صفحه را خوانده و حالا با همان لحن کتابها جواب میدهد — برای تحلیل نیاز دارد، استخراج میکند.
تحلیل سنتی لاگها معمولاً با جستوجوی دستی کلمات کلیدی یا نوشتن عبارات پیچیده Regular Expression انجام میشود. این روش در جریانهای کاری مدرنِ هوش مصنوعی یک گلوگاه است؛ زیرا ارسال لاگهای خام به یک مدل زبانی، بهشدت گران است و از پنجرهٔ زمینه (Context Window) — مثل میز کاری که جا برای چند ورق دارد، نه برای کل کتابخانه — فراتر میرود. همانطور که در تحلیل قبلی ما دربارهی تقطیر دادههای مصنوعی اشاره کردیم، هدف آنجا بهینهسازی آموزش بود، اما اینجا هدف تبدیل نویزهای عملیاتی دنیای واقعی به یک «سطح استدلالی» است که هوش مصنوعی بتواند آن را پردازش کند. این رویکرد استخراج دلایل ساختاریافته برای تحلیل ماشین، مشابه آنچه در پروژهی ReasonGate برای ارائه دلایل ماشینخوان در مسدودسازیها دیدیم، گامی به سوی شفافتر کردن تصمیمات هوش مصنوعی است.
خط لوله دو مرحلهای
این ابزار از یک خط لوله استریمینگ استفاده میکند که لاگها را تنها با یک بار پیمایش و کمترین مصرف حافظه پردازش میکند. در مرحله اول، پردازشگر لاگ فشرده (CLP) توکنهای متغیر — مانند آدرسهای IP، اعداد اعشاری و صحیح — را با جایگذارهای تایپشده جایگزین میکند. برای مثال، خطی که شامل یک IP خاص و زمان پاسخ است، به یک قالب کلی تبدیل میشود: "Request from
در مرحله دوم، الگوریتم Drain3 با استفاده از یک درخت پیشوند، این انواع لاگها را در گروههای وسیعتری دستهبندی میکند. این سیستم از یک آستانه شباهت قابل تنظیم (که پیشفرض آن ۰.۴ است) استفاده میکند. اگر توکنها واگرا شوند، سیستم یک علامت Wildcard یا همان <*> درج میکند. از آنجایی که این فرآیند بهصورت افزایشی انجام میشود، هیچ نیازی به پیمایش دوم دادهها نیست.
جزئیات فنی و سازوکارها
به نقل از توسعهدهندگان این ابزار، برای ارائه بینشهای کاربردی فراتر از قالبهای ساده، چندین ساختار دادهای پیشرفته و منطق طبقهبندی بهکار گرفته شده است:
- تایپبندی متغیرها: طبقهبندی خودکار متغیرهای استخراجشده به انواع معنایی. این شامل شناسایی IPv4/IPv6 از طریق الگوهای CIDR، شناسایی UUIDها با فرمت هگزاگزمال ۸-۴-۴-۴-۱۲ و همچنین استفاده از Enum برای فیلدهایی با تعداد مقادیر پایین (تعریف شده به عنوان فیلدهایی با حداکثر ۲۰ مقدار منحصربهفرد که در آنها ۳ مقدار اول، بیش از ۸۰٪ دادهها را تشکیل میدهند).
- آمار بهینه: استفاده از DDSketch برای ردیابی چندکهای p50/p99 در اندازه ثابت (حدود ۲۰۰ بایت) و HyperLogLog++ (حدود ۲۰۰ بایت) برای تخمین تعداد اعضای مجموعههای بسیار بزرگ (High-cardinality).
- مدیریت حافظه: خوشههای Drain3 با سیاست اخراج LRU (کمترین مورد استفاده) کار میکنند که پیشفرض آن روی حداکثر ۱۰ هزار مورد تنظیم شده است تا حافظه اشغال نشود. همچنین از روش Reservoir Sampling برای حفظ یک بافر محدود از خطوط نمونه برای هر الگو استفاده میشود.
- تحلیلها: شناسایی جهشهای فرکانسی، آبشارهای خطا (Error Cascades)، توزیعهای دو-مودی (Bimodal) و ناهنجاریهای عددی خوشهبندیشده. امتیاز شدت خطا بر اساس کلمات کلیدی با اولویت (ERROR > WARN > INFO > DEBUG) تعیین میشود.
یکپارچهسازی و خروجی
کاربران میتوانند این ابزار را بهصورت CLI، کتابخانه Rust یا در مرورگر از طریق WASM اجرا کنند. نصب آن از طریق Homebrew با دستور brew install ctrlb-decompose یا بستههای .deb برای Debian/Ubuntu و یا با ساخت از روی سورس با استفاده از Cargo امکانپذیر است. این ابزار سه فرمت خروجی متمایز ارائه میدهد:
--human(پیشفرض): خروجی ANSI در ترمینال با رنگها و نوارهای بصری برای بررسی سریع توسط مهندس.--json: خروجی ساختاریافته برای مصرف برنامهنویسی و خوانش توسط ماشین.--llm: فرمت Markdown فشرده که بهطور خاص برای بهرهوری از توکنها هنگام پرامپت دادن به مدلهای هوش مصنوعی طراحی شده است.
علاوه بر این، کاربران میتوانند با استفاده از دستور --top <N> تعداد الگوها را محدود کنند یا با --context <N> خطوط نمونه خاصی را برای هر الگو در خروجی بگنجانند.
همچنین برای کاربران Claude Code، یک پلاگین اختصاصی وجود دارد که اجازه میدهد لاگها با زبان طبیعی تحلیل شوند. بهجای دستورات دستی CLI، توسعهدهنده میتواند بهسادگی بپرسد: «این لاگها را خلاصه کن و ناهنجاریها را مشخص کن» یا «رایجترین الگوها در این فایل لاگ چیستند؟». این پلاگین تمامی مراحل نصب و اجرای تحلیل را بهطور خودکار مدیریت میکند.
این تغییر، تحلیل لاگ را از یک جستوجوی «سکه در انبار کاه» به یک بررسی ساختاری تبدیل میکند. با تبدیل لاگها به یک نقشه معنایی از الگوها، توسعهدهندگان دیگر نیازی ندارند حدس بزنند کدام خطوط مرتبط هستند. مدل زبانی تنها با ناهنجاریهای آماری و آبشارهای خطا مواجه میشود و این امر خطر توهم (Hallucination) — وقتی مدل با اطمینان چیزی میگوید که اصلاً وجود ندارد — را که ناشی از نویز دادههای نامربوط است، بهشدت کاهش میدهد.
گام بعدی شما
- اگر سیستمهای توزیعشده با ترافیک بالا مدیریت میکنید، خروجی syslog خود را به CLI این ابزار متصل کنید.
- روی جهشهای p99 که توسط پیادهسازی DDSketch شناسایی میشوند تمرکز کنید؛ این نقاط معمولاً سیگنالی از ریشه شکستهای زنجیرهای هستند.
- خروجی
--llmرا با Claude یا GPT-4o تست کنید تا تفاوت هزینه توکن را مشاهده کنید.
اما داستان سختافزاری این تحول حتی شگفتانگیزتر است — به تحلیل ما دربارهی تراشههای Blackwell مراجعه کنید.




گفتگو