تحلیل خودکار حوادث با n8n، OpenAI و Slack

تحلیل خودکار حوادث با n8n، OpenAI و Slack

10 دقیقه مطالعه · منتشر شده ۱۴۰۵/۴/۲۹

دانلود workflow

فایل JSON آماده import در n8n — credentialها باید در n8n شما تنظیم شوند.

  1. فایل JSON را دانلود کنید.
  2. در n8n: Workflows → Import from File.
  3. Credentialهای هر node را متصل کنید.
  4. workflow را فعال کنید.

شناسه workflow: 14044 · منبع: کاتالوگ Axeto

تحلیل لاگ‌ها و همبستگی حوادث با OpenAI و Slack

این گردش کار، بررسی حوادث را با پردازش رویدادهای حادثه دریافتی از طریق یک وب‌هوک n8n خودکار می‌کند. این گردش کار زمینه عملیاتی را از APIهای مختلف جمع‌آوری کرده، لاگ‌های مرتبط را فیلتر و ساختاربندی می‌کند، از OpenAI برای خوشه‌بندی شکست و تولید فرضیه‌های علت ریشه‌ای استفاده می‌کند و در نهایت خلاصه‌ای مختصر از حادثه را در Slack منتشر می‌کند.

موارد استفاده کلیدی:

  • تریاژ خودکار حوادث تولید.
  • همبستگی سریع لاگ‌ها با استقرارهای اخیر و تغییرات پرچم ویژگی (feature flag).
  • پیشنهادات علت ریشه‌ای با کمک هوش مصنوعی برای مهندسان در حال آماده‌باش (on-call).
  • هشدار متمرکز حوادث در Slack.

نمای کلی گردش کار

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

۱. دریافت حادثه

این بلوک اولیه یک نقطه پایانی HTTP را برای دریافت payload های حوادث از سیستم‌های نظارت یا هشدار خارجی راه‌اندازی می‌کند. این payload عمدتاً متادیتای مانند شناسه حادثه و شدت آن را فراهم می‌کند.

۲. پیکربندی زمان اجرا

یک گره Set پارامترهای خاص محیط را متمرکز می‌کند، از جمله نقاط پایانی API برای لاگ‌ها، متریک‌ها، استقرارها و پرچم‌های ویژگی (feature flags)، همراه با پنجره زمانی تجزیه و تحلیل و شناسه کانال Slack هدف. این بلوک پیکربندی امکان انطباق آسان گردش کار را بدون تغییر عبارات پایین‌دستی فراهم می‌کند.

۳. جمع‌آوری زمینه حادثه

این بلوک داده‌های عملیاتی ضروری را به صورت موازی از سیستم‌های خارجی پیکربندی شده بازیابی می‌کند:

  • لاگ‌های اخیر: از یک API لاگ‌ها دریافت می‌شود.
  • متریک‌ها: از یک API متریک‌ها بازیابی می‌شود.
  • استقرارهای اخیر: از یک API استقرارها به دست می‌آید.
  • پرچم‌های ویژگی: وضعیت یا تغییرات از یک API پرچم‌های ویژگی دریافت می‌شود.

این جمع‌آوری جامع داده، زمینه لازم را برای همبستگی بعدی و تجزیه و تحلیل مبتنی بر هوش مصنوعی فراهم می‌کند.

۴. نرمال‌سازی و حذف نویز لاگ‌ها

داده‌های خام لاگ برای حذف ورودی‌های کم‌ارزش (مانند debug، info، trace) پردازش می‌شوند. لاگ‌های هشدار و خطا باقی‌مانده به یک ساختار سازگار نرمال‌سازی شده و بر اساس شناسه‌های جلسه یا درخواست گروه‌بندی می‌شوند. این مرحله تجزیه و تحلیل را بر روی رویدادهای حیاتی متمرکز می‌کند.

۵. تجمیع زمینه و خوشه‌بندی شکست

تمام زمینه جمع‌آوری شده، از جمله لاگ‌های نرمال‌سازی شده، تجمیع می‌شود. سپس لاگ‌های خطا با استفاده از Embeddings OpenAI جاسازی شده و در یک فروشگاه برداری در حافظه (in-memory vector store) ذخیره می‌شوند. یک گره کد بعدی این داده‌های برداری شده را برای شناسایی الگوهای غالب شکست تجزیه و تحلیل می‌کند.

۶. همبستگی رویداد

گردش کار تلاش می‌کند تا الگوهای شکست شناسایی شده را با رویدادهایی مانند استقرارها، تغییرات پیکربندی و افزایش ترافیک همبسته کند تا روابط علی بالقوه را استنباط کند.

۷. تجزیه و تحلیل علت ریشه‌ای با هوش مصنوعی

یک عامل LangChain که توسط یک مدل چت OpenAI و یک تجزیه‌کننده خروجی ساختاریافته تغذیه می‌شود، فرضیه‌های رتبه‌بندی شده برای علت ریشه‌ای، همراه با شواهد پشتیبان و اقدامات پیشنهادی را تولید می‌کند.

۸. تیکت‌نویسی حوادث در Slack

در نهایت، تجزیه و تحلیل تولید شده توسط هوش مصنوعی در یک پیام کاربرپسند Slack قالب‌بندی شده و به کانال از پیش پیکربندی شده ارسال می‌شود.

---

تحلیل گره‌های دقیق

۱. دریافت حادثه

  • هدف: به عنوان نقطه ورود گردش کار عمل می‌کند و یک نقطه پایانی HTTP برای دریافت رویدادهای حادثه در دسترس قرار می‌دهد.
  • گره‌ها:

* Trigger حادثه (n8n-nodes-base.webhook):

* پیکربندی:

* مسیر: incident-trigger

* متد: POST

* حالت پاسخ: lastNode (منتظر تکمیل گردش کار قبل از پاسخ‌دهی می‌ماند)

* عبارات کلیدی: گره‌های پایین‌دستی به $('Incident Trigger').first().json.body.incidentId و $('Incident Trigger').first().json.body.severity ارجاع می‌دهند.

* ورودی/خروجی: ورودی ندارد؛ به بلوک پیکربندی خروجی می‌دهد.

* نسخه: 2.1

* مشکلات احتمالی: بدنه درخواست گم‌شده می‌تواند منجر به متغیرهای تعریف نشده شود؛ حالت پاسخ lastNode می‌تواند باعث طولانی شدن زمان درخواست webhook شود اگر مراحل پایین‌دستی کند باشند؛ خطرات مهلت زمانی به پیکربندی‌های استقرار بستگی دارد.

۲. پیکربندی زمان اجرا

  • هدف: تمام پارامترهای قابل پیکربندی برای گردش کار را متمرکز می‌کند.
  • گره‌ها:

* پیکربندی گردش کار (n8n-nodes-base.set):

* پیکربندی:

* includeOtherFields برای حفظ payload حادثه ورودی فعال شده است.

* فیلدهای اختصاص داده شده: logsApiUrl, metricsApiUrl, deploymentsApiUrl, featureFlagsApiUrl, timeWindowMinutes (پیش‌فرض: ۳۰)، slackChannel.

* عبارات کلیدی: گره‌های پایین‌دستی با استفاده از $('Workflow Configuration').first().json.<fieldName> به این فیلدها ارجاع می‌دهند.

* ورودی/خروجی: ورودی را از "دریافت حادثه" دریافت می‌کند؛ به گره‌های جمع‌آوری زمینه خروجی می‌دهد.

* نسخه: 3.4

* مشکلات احتمالی: مقادیر جایگزین باید جایگزین شوند؛ URLهای نامعتبر باعث شکست درخواست‌های HTTP می‌شوند؛ یک slackChannel نامعتبر منجر به شکست ارسال می‌شود.

۳. جمع‌آوری زمینه حادثه

  • هدف: داده‌های عملیاتی را به صورت موازی از سیستم‌های خارجی بازیابی می‌کند.
  • گره‌ها:

* بازیابی لاگ‌ها (n8n-nodes-base.httpRequest):

* پیکربندی:

* URL: ={{ $('Workflow Configuration').first().json.logsApiUrl }}

* پارامتر پرس و جو minutes: ={{ $('Workflow Configuration').first().json.timeWindowMinutes }}

* فرمت پاسخ: JSON

* ورودی/خروجی: ورودی از "پیکربندی گردش کار"؛ خروجی به "نرمال‌سازی و حذف نویز لاگ‌ها".

* نسخه: 4.3

* مشکلات احتمالی: پاسخ‌های غیر JSON؛ احراز هویت گم‌شده (هدرها/اعتبارنامه‌ها)؛ تودرتویی غیرمنتظره آرایه لاگ.

* بازیابی متریک‌ها (n8n-nodes-base.httpRequest):

* پیکربندی: مشابه بازیابی لاگ‌ها، با استفاده از metricsApiUrl و timeWindowMinutes.

* ورودی/خروجی: ورودی از "پیکربندی گردش کار"؛ خروجی به "ادغام داده‌های زمینه".

* نسخه: 4.3

* مشکلات احتمالی: احراز هویت گم‌شده؛ طرح‌بندی (schema) غیرمنتظره ممکن است پردازش پایین‌دستی را مختل کند اگر انواع رویداد خاص (مانند traffic_spike) مورد انتظار باشند.

* بازیابی استقرارهای اخیر (n8n-nodes-base.httpRequest):

* پیکربندی: مشابه بازیابی لاگ‌ها، با استفاده از deploymentsApiUrl و timeWindowMinutes.

* ورودی/خروجی: ورودی از "پیکربندی گردش کار"؛ خروجی به "ادغام داده‌های زمینه".

* نسخه: 4.3

* مشکلات احتمالی: احراز هویت گم‌شده؛ همبستگی پایین‌دستی انتظار رویدادهایی با ساختار type: deployment و مُهر زمانی را دارد.

* بازیابی پرچم‌های ویژگی (n8n-nodes-base.httpRequest):

* پیکربندی:

* URL: ={{ $('Workflow Configuration').first().json.featureFlagsApiUrl }}

* فرمت پاسخ: JSON

* پارامتر پرس و جو minutes پیکربندی نشده است.

* ورودی/خروجی: ورودی از "پیکربندی گردش کار"؛ خروجی به "ادغام داده‌های زمینه".

* نسخه: 4.3

* مشکلات احتمالی: احراز هویت گم‌شده؛ اگر API به جای رویدادهای تغییر، وضعیت فعلی پرچم‌ها را برگرداند، همبستگی مستقیم رویداد ممکن است محدود باشد.

۴. نرمال‌سازی و حذف نویز لاگ‌ها

  • هدف: داده‌های لاگ را پاکسازی و ساختاربندی می‌کند و بر خطاها و هشدارها تمرکز دارد.
  • گره‌ها:

* نرمال‌سازی و حذف نویز لاگ‌ها (n8n-nodes-base.code):

* پیکربندی: کد سفارشی جاوا اسکریپت انجام می‌دهد:

* فیلتر کردن سطوح لاگ: debug, info, trace, verbose.

* نرمال‌سازی فیلدها: timestamp/time/@timestamp, level/severity, message/msg/text, sessionId/session_id/requestId/request_id/traceId, service/serviceName/app, error/exception/stack.

* نگه داشتن سطوح لاگ: error, warn, warning, fatal, critical.

* گروه‌بندی لاگ‌ها بر اساس sessionId.

* مرتب‌سازی لاگ‌های گروه‌بندی شده بر اساس مُهر زمانی.

* خروجی یک مورد در هر جلسه حاوی sessionId, logCount, firstError, lastError, service, و errors[].

* در صورت باقی نماندن لاگ‌های خطا، یک پیام جایگزین برمی‌گرداند.

* عبارات کلیدی: از $input.all() به صورت داخلی استفاده می‌کند.

* ورودی/خروجی: ورودی از "بازیابی لاگ‌ها"؛ خروجی به "ادغام داده‌های زمینه".

* نسخه: 2

* مشکلات احتمالی: API لاگ یک مورد واحد با یک آرایه برمی‌گرداند؛ مُهر زمانی گم‌شده (به زمان فعلی پیش‌فرض می‌شود)؛ شناسه جلسه گم‌شده (به 'unknown' پیش‌فرض می‌شود)؛ همه لاگ‌ها فیلتر شده‌اند.

۵. تجمیع زمینه و خوشه‌بندی شکست

  • هدف: تمام زمینه را ترکیب می‌کند، لاگ‌های خطا را جاسازی می‌کند و الگوهای غالب شکست را شناسایی می‌کند.
  • گره‌ها:

* ادغام داده‌های زمینه (n8n-nodes-base.aggregate):

* پیکربندی: تمام موارد ورودی را در یک جریان خروجی واحد تجمیع می‌کند.

* ورودی/خروجی: ورودی را از "نرمال‌سازی و حذف نویز لاگ‌ها"، "بازیابی متریک‌ها"، "بازیابی استقرار‌های اخیر"، و "بازیابی پرچم‌های ویژگی" دریافت می‌کند؛ به "بارگذار سند" خروجی می‌دهد.

* نسخه: 3.1

* بارگذار سند (@n8n/n8n-nodes-langchain.documentLoader):

* پیکربندی: داده‌ها را از زمینه تجمیع شده بارگذاری می‌کند.

* ورودی/خروجی: ورودی از "ادغام داده‌های زمینه"؛ خروجی به "Embeddings OpenAI".

* نسخه: 1.0.0

* Embeddings OpenAI (@n8n/n8n-nodes-langchain.embeddingsOpenAi):

* پیکربندی: Embeddings را برای اسناد بارگذاری شده با استفاده از OpenAI تولید می‌کند. نیاز به کلید API OpenAI دارد.

* ورودی/خروجی: ورودی از "بارگذار سند"؛ خروجی به "Vector Store In Memory".

* نسخه: 1.0.0

* مشکلات احتمالی: نیاز به کلید API معتبر OpenAI دارد؛ ممکن است محدودیت‌های نرخ اعمال شود.

* Vector Store In Memory (@n8n/n8n-nodes-langchain.vectorStoreInMemory):

* پیکربندی: اسناد جاسازی شده را در یک پایگاه داده برداری در حافظه ذخیره می‌کند.

* ورودی/خروجی: ورودی از "Embeddings OpenAI"؛ خروجی به "شناسایی الگوهای شکست".

* نسخه: 1.0.0

* شناسایی الگوهای شکست (n8n-nodes-base.code):

* پیکربندی: کد سفارشی جاوا اسکریپت برای تجزیه و تحلیل داده‌های خطای خوشه‌بندی شده یا برداری شده و استنتاج الگوهای غالب شکست.

* ورودی/خروجی: ورودی از "Vector Store In Memory"؛ خروجی به "همبستگی رویداد".

* نسخه: 2

* مشکلات احتمالی: منطق ممکن است بر اساس ماهیت داده‌های خطا نیاز به تنظیم داشته باشد.

۶. همبستگی رویداد

  • هدف: الگوهای شکست شناسایی شده را با سایر رویدادهای عملیاتی همبسته می‌کند.
  • گره‌ها:

* همبستگی رویداد (n8n-nodes-base.code):

* پیکربندی: کد سفارشی جاوا اسکریپت برای هم‌ترازی الگوهای شکست با استقرارها، تغییرات پیکربندی و جهش‌های ترافیکی برای پیشنهاد پیوندهای سببی.

* ورودی/خروجی: ورودی از "شناسایی الگوهای شکست"؛ خروجی به "تحلیل ریشه علت AI".

* نسخه: 2

* مشکلات احتمالی: دقت به کیفیت و ساختار داده‌های ورودی بستگی دارد؛ منطق همبستگی ممکن است نیاز به اصلاح داشته باشد.

۷. تحلیل ریشه علت AI

  • هدف: فرضیه‌های ریشه علت مبتنی بر هوش مصنوعی را تولید می‌کند.
  • گره‌ها:

* تحلیل ریشه علت AI (@n8n/n8n-nodes-langchain.agent):

* پیکربندی: از یک عامل LangChain با یک مدل چت OpenAI و یک تجزیه‌کننده خروجی ساختاریافته برای تولید فرضیه‌های ریشه علت رتبه‌بندی شده، شواهد و اقدامات پیشنهادی استفاده می‌کند. نیاز به کلید API OpenAI دارد.

* ورودی/خروجی: ورودی از "همبستگی رویداد"؛ خروجی به "تیکت‌نویسی حادثه Slack".

* نسخه: 1.0.0

* مشکلات احتمالی: نیاز به کلید API معتبر OpenAI دارد؛ کیفیت خروجی AI می‌تواند متفاوت باشد؛ مهندسی پرامپت ممکن است برای نتایج بهینه لازم باشد.

* تجزیه‌کننده خروجی ساختاریافته (@n8n/n8n-nodes-langchain.outputParserStructured):

* پیکربندی: ساختار خروجی AI را تعریف می‌کند و سازگاری را تضمین می‌کند.

* ورودی/خروجی: به صورت داخلی توسط عامل LangChain استفاده می‌شود.

* نسخه: 1.0.0

* مدل چت OpenAI (@n8n/n8n-nodes-langchain.lmChatOpenAi):

* پیکربندی: مدل چت OpenAI که توسط عامل استفاده می‌شود. نیاز به کلید API OpenAI دارد.

* ورودی/خروجی: به صورت داخلی توسط عامل LangChain استفاده می‌شود.

* نسخه: 1.0.0

۸. تیکت‌نویسی حادثه Slack

  • هدف: خلاصه حادثه را قالب‌بندی کرده و به Slack ارسال می‌کند.
  • گره‌ها:

* تیکت‌نویسی حادثه Slack (n8n-nodes-base.slack):

* پیکربندی:

* اقدام: sendMessage

* شناسه کانال: ={{ $('Workflow Configuration').first().json.slackChannel }}

* پیام: نتایج تحلیل AI را به یک پیام قابل خواندن قالب‌بندی می‌کند.

* ورودی/خروجی: ورودی از "تحلیل ریشه علت AI"؛ خروجی به عنوان نتیجه نهایی گردش کار (که توسط webhook برگردانده می‌شود).

* نسخه: 4.0

* مشکلات احتمالی: شناسه کانال Slack نامعتبر؛ خطاهای پیکربندی توکن API Slack.

---

اجرای گردش کار

1. یک سیستم خارجی رویداد حادثه را به Webhook incident-trigger ارسال می‌کند.

2. گره Workflow Configuration پارامترها را تنظیم می‌کند.

3. داده‌های زمینه (لاگ‌ها، متریک‌ها، استقرارها، پرچم‌های ویژگی) به صورت موازی واکشی می‌شوند.

4. لاگ‌ها نرمال‌سازی و نویزگیری می‌شوند.

5. تمام زمینه ادغام شده، لاگ‌ها جاسازی شده و الگوهای شکست شناسایی می‌شوند.

6. الگوهای شکست با رویدادهای دیگر همبسته می‌شوند.

7. یک عامل OpenAI فرضیه‌های علت ریشه‌ای تولید می‌کند.

8. خلاصه نهایی در Slack ارسال می‌شود و Webhook با خروجی گردش کار پاسخ می‌دهد.

---

شروع کار

1. راه‌اندازی n8n: اطمینان حاصل کنید که یک نمونه n8n در حال اجرا دارید. می‌توانید اطلاعات بیشتر و گزینه‌های استقرار را در Axeto.ai n8n بیابید.

2. وارد کردن گردش کار: این گردش کار را در نمونه n8n خود وارد کنید.

3. پیکربندی گره‌ها:

* پیکربندی گردش کار: logsApiUrl، metricsApiUrl، deploymentsApiUrl، featureFlagsApiUrl و slackChannel را با نقاط پایانی واقعی و شناسه کانال Slack خود به‌روز کنید.

* گره‌های OpenAI: کلید API OpenAI خود را در پیکربندی‌های گره مربوطه ارائه دهید.

* گره Slack: توکن API Slack خود را پیکربندی کنید یا از ادغام داخلی Slack در n8n استفاده کنید.

4. راه‌اندازی وب‌هوک: سیستم نظارت خارجی خود را برای ارسال رویدادهای حادثه به URL وب‌هوک n8n پیکربندی کنید.

5. اجرا و نظارت: یک حادثه را برای تست گردش کار و نظارت بر اجرای آن در n8n راه‌اندازی کنید.

Nodeهای استفاده‌شده

سوالات متداول

این گردش کار n8n چگونه به خودکارسازی تحلیل حوادث کمک می‌کند؟

این گردش کار با جمع‌آوری خودکار زمینه عملیاتی، استفاده از OpenAI برای تحلیل لاگ‌ها و شناسایی الگوهای شکست، و سپس ارسال خلاصه‌های قابل فهم به Slack، فرآیند تحلیل حوادث را خودکار می‌کند.

نقش OpenAI در این گردش کار چیست؟

OpenAI برای خوشه‌بندی شکست‌ها بر اساس لاگ‌های جمع‌آوری شده و تولید فرضیه‌های علت ریشه‌ای با شواهد پشتیبان استفاده می‌شود. این امر به تسریع فرآیند شناسایی ریشه مشکل کمک می‌کند.

چگونه این گردش کار با Slack ادغام می‌شود؟

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

چه نوع داده‌هایی برای تحلیل جمع‌آوری می‌شود؟

این گردش کار لاگ‌های اخیر، متریک‌ها، اطلاعات استقرارها و وضعیت پرچم‌های ویژگی (feature flags) را از سیستم‌های مختلف جمع‌آوری می‌کند تا زمینه کاملی برای تحلیل فراهم شود.

workflowهای مرتبط

این workflow در کاتالوگ Axeto.ai بایگانی شده است. لایسنس اصلی متعلق به سازنده workflow است.

    تحلیل خودکار حوادث با n8n، OpenAI و Slack | Axeto.ai