چیت‌شیت

‏SRE، حوادث و گزارش‌های پس از حادثه (Postmortem) برای هوش مصنوعی

SRE, Incidents and Postmortems for AI

تریاژ حوادث LLM با ایجنت‌ها، ایجاد دروازه‌ی تأییدیه برای هر اصلاح، نگارش گزارش‌های پس از حادثه با شواهد مستند و فشرده‌سازی لاگ‌ها برای دستیار هوشمند.

  • ۱۱ بخش
  • ۳ درس مرتبط
  • کد و دستورها عیناً از دوره‌ی اصلی
فهرست مطالب
  1. علائم حادثه
  2. تریاژ چندایجنت
  3. ایجنت عیب‌یابی K8s
  4. دامنه‌ی اصلاح و بازیابی
  5. امتیاز فرضیه
  6. اجرای تمرین‌ها
  7. محدودیت‌ها در کد
  8. قواعد بسته‌ی پستمورتم
  9. رشته‌های خطا
  10. پرسش و پاسخ
  11. نکات کلیدی

علائم حادثه

عیب‌یابی
  • نرخ خطای بالا در بخش checkout

    علت
    خطای OOM در vLLM ناشی از جهش ناگهانی KV cache
    راه‌حل
    راه‌اندازی مجدد پاد. کاهش --gpu-memory-utilization به 0.85
  • حافظه GPU روی 98٪ قبل از جهش ناگهانی

    علت
    خطای OOM در KV cache تحت بار همزمانی ناگهانی
    راه‌حل
    اجرای ران‌بوک RB-017
  • اختلاف‌نظر دو مدل درباره‌ی علت ریشه‌ای

    علت
    احتمال توهم در تشخیص علت ریشه‌ای
    راه‌حل
    ارجاع به سطوح بالاتر با نمایش هر دو فرضیه
  • پاد در 10 دقیقه دوبار OOMKilled شده است

    علت
    میزان حافظه‌ی درخواستی (256Mi) بیش از حد کم است
    راه‌حل
    درخواست 512Mi، سقف 1Gi
  • وضعیت CrashLoopBackOff در auth-svc

    علت
    مسیر آزمون ارزیابی به ready/ تغییر کرده است
    راه‌حل
    بازگرداندن مسیر آزمون ارزیابی به healthz/
  • ایمیج checkout-api:v2.41 در بررسی healthz/ شکست می‌خورد

    علت
    استقرار ناموفق در 14 دقیقه پیش
    راه‌حل
    بازگشت به عقب به نسخه v2.40 پس از تأیید
  • blocked: no slack approval

    علت
    ابزار مخرب بدون وجود تأییدکننده
    راه‌حل
    دریافت تأییدیه‌ی کارت اسلک
  • حذف سطر نادر disk-full از زمینه‌ی متنی

    علت
    نمونه‌برداری یکنواخت با بودجه‌ی 8
    راه‌حل
    استفاده از خط‌مشی rarity

تریاژ چندایجنت

گام‌به‌گام
  1. سرپرستتفکیک حادثه به زیرپرس‌وجوها.
  2. ایجنت لاگجستجوی لاگ. یافتن متداول‌ترین الگوی خطا.
  3. ایجنت متریکپرس‌وجوی PromQL. یافتن جهش ناگهانی حافظه GPU قبل از بروز خطاها.
  4. ایجنت ران‌بوکبازیابی مستندات. تطبیق با یک ران‌بوک شناخته‌شده.
  5. سرپرستدسته‌بندی علل ریشه‌ای. توافق دو یا چند ایجنت به‌معنای اطمینان بالاست.
  6. انسانتأیید فرضیه و شواهد یا هدایت مجدد آن‌ها.
  7. اقدامفقط یک اقدام ایمن و محدود، برای مثال راه‌اندازی مجدد پاد.

ایجنت عیب‌یابی K8s

معماری
وبهوکهشدارپیمایش15 دقیقه‌ی گذشتهفرضیه‌های رتبه‌بندی‌شدهتأییدشدهالحاقوبهوک هشدار‏PagerDuty یا Alertmanagerدریافت‌کننده‌ی FastAPIآبجکت آسیب‌دیده، نقض SLOایجنت علت ریشه‌اینمونه‌برداری، پیمایش، فرضیه‌سازیگراف دانش K8sمالکیت، زمان‌بندیبرش‌های تله‌متری‏Prometheus، Loki، Tempoخلاصه‌ی اسلک3 مورد برتر، دکمه‌های تأییدهوک بازگشت به عقب در ArgoCDپس از تأییدلاگ بازرسیبررسی‌شده در برابر اجراشده

دامنه‌ی اصلاح و بازیابی

مقایسه
فاکتورایمن، محدودناایمن، گسترده
پادها و کدراه‌اندازی مجدد پاداستقرار کد جدید
استقرارهابازگردانی یک استقرار خاصتغییر توپولوژی سرویس
ظرفیتمقیاس‌بندی در محدوده‌های از پیش تأییدشدهتغییر محدودیت‌های منابع
پیکربندی و دسترسیفعال‌سازی یک فیچر فلگ از پیش تأییدشدهتغییر IAM، اصلاح پایگاه‌های داده
افعال RBAC‏get، list، describe‏delete، exec، scale
ابزارهای پروژه‌ی پایانیkubectl_get، promql، logqlkubectl_delete، argocd_rollback
دروازهاجرای فورینیازمند تأیید در اسلک

امتیاز فرضیه

کد
python
def score(self) -> float:
    recency_w = max(0.0, 1.0 - self.recency_mins / 60.0)  # 0 پس از 60 دقیقه
    path_w = 1.0 / (1 + self.path_len)                    # مسیر کوتاه‌تر در گراف برنده است
    return (recency_w * 0.35 +
            self.specificity * 0.35 +  # 0..1
            min(len(self.citations), 5) / 5 * 0.2 +       # حداکثر 5 ارجاع
            path_w * 0.1)

اجرای تمرین‌ها

کار و کد
وظیفهکد
شبیه‌ساز تریاژ چندایجنت، درس 23code/main.py
ایجنت گراف K8s با دروازه‌ی تأییدیهpython main.py
بررسی اولیه‌ی اسکلت ساختاری اسلک، سپس اجرای تست‌ها`npm start` and `npm test`
سرور تعاملی اسلکnpm run serve
بسته‌ی پستمورتم برگرفته از مثال‌هاgo run . --events ../examples/events.jsonl --review ../examples/review.json --out /tmp/incident-packet
ساخت ابزار زمینه‌ی متنی لاگrustc --edition 2021 main.rs -o /tmp/log-context
فشرده‌سازی لاگ‌ها، بودجه‌ی 8، نادر بودن (rarity)/tmp/log-context fixtures/burst.log 8 rarity /tmp/context.jsonl
گزارش پوشش الگوهای نادرpython3 main.py fixtures/burst.log /tmp/context.jsonl --out /tmp/coverage.json

محدودیت‌ها در کد

پیش‌فرض‌ها
تنظیمپیش‌فرضیادداشت
REPLAY_WINDOW_SECONDS60 * 5درخواست‌های قدیمی‌تر اسلک باطل هستند
SIGNATURE_VERSIONv0هش HMAC sha256 روی v0:ts:body
rare_max2تکرار الگوی نادر
Log input size1_048_576بایت، یک MiB
Log records10_000سطر به ازای هر ورودی
Log line length4096بایت به ازای هر سطر
Event JSONL size2<<20رویدادهای پستمورتم
Claims and actions100هر مورد، در هر بازنگری

قواعد بسته‌ی پستمورتم

مفهوم‌ها
رویداد
یک ردیف JSONL شامل id، second، kind و message.
خط زمانی
مرتب‌سازی بر اساس ثانیه. در صورت تساوی، مرتب‌سازی با ID.
ادعا
متن غیرخالی و حداقل یک شناسه رویداد معتبر و متمایز.
نقل‌قول
هر شناسه شواهد باید زیررشته‌ای دقیق از پیام رویداد خود باشد.
تأییدیه
وضعیت approved نیازمند sourceSHA256 منطبق و یک بازبین است.
اقدام
وضعیت‌های open، doing یا done. فقط حالت open می‌تواند بدون مسئول باشد.
خروجی
فیل‌های index.html، packet.json و packet.txt که با مجوز 0600 ذخیره شده‌اند.

رشته‌های خطا

دستورها
دستورکارکرد
review source changedهش بازنگری با فایل رویدادها مطابقت ندارد
approval requires matching source and reviewerادعای تأییدشده بدون هش یا بازبین
quote for <id>نقل‌قول خالی است یا در متن پیام وجود ندارد
budget exceededتعداد بیش از حد رویدادها، ادعاها یا بایت‌ها
conflictشناسه‌ی تکراری برای رویداد یا شواهد
expected LEVEL<TAB>messageسطر لاگ فاقد کاراکتر تب است
group count mismatchتعداد زمینه‌ی متنی با منبع تفاوت دارد
invalid locatorمقدار firstLine یا lastLine خارج از محدوده است

پرسش و پاسخ

پرسش و پاسخ
لاگ بازرسی چه چیزی را ثبت می‌کند؟
تمام دستورات بررسی‌شده، اجراشده یا تأییدشده، به همراه مشخصات فرد تأییدکننده.
معیار قبولی پروژه‌ی پایانی چیست؟
حداقل 80٪ تشخیص درست علت ریشه‌ای در 20 حادثه‌ی شبیه‌سازی‌شده.
تولید فرضیه چقدر زمان می‌برد؟
شاخص p50 کمتر از 5 دقیقه از زمان هشدار تا ارسال خلاصه‌ی اسلک.
آیا پیش‌بینی به‌تنهایی کارساز است؟
خیر. پیش‌بینی بدون قابلیت اقدام عملی چیزی جز یک داشبورد نیست.
آیا این بسته علت را اثبات می‌کند؟
خیر. منشأ و سندیت بررسی می‌شود؛ اثبات علیت نیازمند بازنگری است.
نمونه‌برداری یکنواخت یا مبتنی بر نادر بودن؟
مبتنی بر نادر بودن. نمونه‌برداری یکنواخت با بودجه‌ی 8، سطر 138 را از دست می‌دهد.

نکات کلیدی

نکته‌ها
  • ران‌بوک‌ها را با بخش‌های علامت، فرضیه، راستی‌آزمایی و اقدام بنویسید.
  • ران‌بوک‌ها و پستمورتم‌ها را برای بازیابی در پایگاه داده‌ی برداری ذخیره کنید.
  • پیش از آزمون‌های آشوب، موارد SLI/SLO، مشاهده‌پذیری، بازگشت به عقب خودکار، ران‌بوک‌ها و نوبت پاسخگویی (آنکال) را مستقر کنید.
  • ماهانه یک روز مانور برگزار کنید. آن را با یک جلسه‌ی پس از حادثه پایان دهید.
  • پیش از ارسال زمینه‌ی متنی به دستیار هوشمند، داده‌های حساس لاگ‌ها را پاک‌سازی کنید.