حل RTO و RPO - العوامل الأساسية في الاستعداد للكوارث

مع وجود تمويل كافٍ والبنية التحتية، يمكن لنظام أي نظام الحصول على وقت تشغيل ثابت تقريبًا في أي حالة من الحالات نظريًا. لكن الواقع يفرض رؤية أكثر حذرًا. لوضع ميزانية قابلة للتطبيق وبرنامج عملي، يجب عليك تحديد حدودك التنظيمية للاعتراف بالانقطاعات والخسائر. في هذه المقالة، يتم فحص المصطلحات والإجراءات ذات الصلة.

15/12/2023 SintelSedat Akfidan 7 دقيقة قراءة
حل RTO و RPO - العوامل الأساسية في الاستعداد للكوارث

الأدوات

يمكنك استدعاء وظائف واحدة أو أكثر لمساعدتك في استعلام المستخدم.

تم تقديم توقيعات الوظائف داخل علامات XML : {"type": "function", "function": {"name": "google-surf__search", "description": "بحث جوجل فردي -> عنوان / رابط / نص ملخص لكل نتيجة. يتم تخزين النتائج لـ 24 ساعة، لذا فإن تكرار الاستعلام مجاني -- يُفضل إعادة التحقق بدلاً من تخزين النتائج بشكل خاص. للاستعلامات الحالية / اليومية / الكسرية ضع SURF_CACHE_TTL_SEARCH_MS=0 لتجاوز التخزين المؤقت. الحد الافتراضي 10 (الحد الأقصى 20). المكالمة الأولى ~4 ثوانٍ (تسخين كروم)، ثم ~2 ثانية. في حالة وجود رمز CAPTCHA يفتح شروط متصفح جوجل لحله (حماية IP مشتركة); SURF_CLOUD_MODE=true يجعله يفشل بسرعة.", "parameters": {"$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "properties": {"query": {"type": "string", "minLength": 1, "maxLength": 400, "description": "استعلام بحث جوجل. استخدم ترشيحات site: واقتباسات للتطابق الدقيق."}, "limit": {"default": 10, "description": "الحد الأقصى للنتائج (الافتراضي 10).", "type": "integer", "minimum": 1, "maximum": 20}}, "required": ["query"]}}} {"type": "function", "function": {"name": "google-surf__search_parallel", "description": "تشغيل 2-10 بحث جوجل في وقت واحد. استخدم هذا لمقارنة زوايا متعددة في مكالمة واحدة. كل استعلام يحسب ضد الحد الداخلي (~10/ دقيقة) -- لا تكرّر هذا للحفر الجماعي. المكالمة الأولى تضيف 5-10 ثوانٍ من دفعة الدفء. فشل كل استعلام مفصولة في مصفوفة النتائج. معطل في الوضع السحابي.", "parameters": {"$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "properties": {"queries": {"minItems": 1, "maxItems": 10, "type": "array", "items": {"type": "string", "description": ""}, "description": "2-10 استعلامات لتشغيلها في وقت واحد."}, "limit": {"default": 10, "description": "الحد الأقصى للنتائج لكل استعلام.", "type": "integer", "minimum": 1, "maximum": 20}}, "required": ["queries"]}}} {"type": "function", "function": {"name": "google-surf__extract", "description": "الحصول على عنوان URL العام -> نص مقالة نظيف. HTML عبر Mozilla Readability؛ يتم اكتشاف PDF الأكاديمية (arxiv/biorxiv/Nature/OpenReview/NeurIPS/JMLR/PMLR/Springer/PubMed-via-PMC) تلقائيًا عبر Content-Type، %PDF سحر، ميتا citation_pdf_url، وقواعد URL لكل مجال. عمق الدرجة: mode=\"abstract\" يعود ~1500 حرف (صفحة PDF 1 أو وصف HTML) - مسح رخيص لفحص الصلة قبل دفع كامل الجسم. mode=\"full\" (الافتراضي) يعود الجسم بأكمله. محاولة أقصى حد: تفشل العودة بـ errorInfo بدلًا من رميها.", "parameters": {"$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "properties": {"url": {"type": "string", "description": "عنوان URL العام. يتم حظر الـ Loopback/IP الخاصة ما لم يكن SURF_ALLOW_PRIVATE=true."}, "max_chars": {"default": 8000, "description": "تقصير الجسم إلى هذا العدد من الأحرف (الافتراضي 8000، يُحدد عبر SURF_EXTRACT_MAX_CHARS).", "type": "integer", "minimum": 200, "maximum": 50000}, "mode": {"default": "full", "description": "عمق الاستخراج. full = الجسم بأكمله (الافتراضي؛ يستخدم Playwright إذا لزم الأمر). abstract = مسح رخيص: صفحة PDF 1 أو وصف HTML (~1500 حرف)؛ استخدم لفحص الصلة قبل دفع النص الكامل. metadata = عدد الصفحات فقط (PDF). يتم اكتشاف الأكاديمية PDF تلقائيًا (arxiv/biorxiv/Nature/OpenReview/NeurIPS/JMLR/PMLR/Springer/PubMed-via-PMC)؛ الوضع المجرد يتجاوز Playwright لها.", "type": "string", "enum": ["full", "abstract", "metadata"]}}, "required": ["url"]}}} {"type": "function", "function": {"name": "google-surf__search_extract", "description": "بحث جوجل سريع + استخراج متوازي للنتائج العليا. الوضع الافتراضي mode=\"abstract\" يعود SERP مع تلخيص ~1500 حرف لكل نتيجة - مسح رخيص لما يحتويه أفضل النتائج، أقل عدد من الرموز من تحميل جميع الأجسام. انتقل إلى mode=\"full\" فقط عندما تحتاج إلى النصوص الفعلية للمقالات (أبطأ، عدد الرموز كبير جداً). فشل الاستخراج لكل صفحة مفصولة. معطل في الوضع السحابي.", "parameters": {"$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "properties": {"query": {"type": "string", "minLength": 1, "maxLength": 400, "description": "استعلام البحث."}, "limit": {"default": 5, "description": "عدد النتائج للاستخراج (الافتراضي 5، الحد الأقصى 10).", "type": "integer", "minimum": 1, "maximum": 10}, "max_chars": {"description": "تقصير كل جسم نتيجة. الافتراضي يعتمد على الوضع: ~1500 لـ abstract، 8000 لـ full (SURF_EXTRACT_MAX_CHARS، محدود هنا بحد أقصى 20000).", "type": "integer", "minimum": 200, "maximum": 20000}, "mode": {"default": "abstract", "description": "عمق الاستخراج لكل نتيجة. abstract (الافتراضي) = مسح رخيص، ~1500 حرف لكل نتيجة، مناسب لفحص الصلة. full = الجسم الكامل لكل نتيجة، أبطأ وعدد الرموز كبير جداً؛ فقط عندما تحتاج فعلاً إلى نصوص المقالات.", "type": "string", "enum": ["full", "abstract"]}}, "required": ["query"]}}} {"type": "function", "function": {"name": "google-surf__health", "description": "حالة خادم MCP: الوضع المترابط + الانتقالات، استخدام محدد الحد من التكرار، حجم التخزين المؤقت، الإعدادات. اتصل بهذا إذا بدأت عمليات البحث في الفشل أو العودة فارغة -- تحقق من cascade.totalCaptchas و queueSize لمحدد الحد من التكرار، وتقليل حجم البحث إذا كانت عالية.", "parameters": {"$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "properties": {}}}} {"type": "function", "function": {"name": "semgrep__semgrep_rule_schema", "description": "\nالحصول على نموذج قاعدة Semgrep\n\nاستخدم هذا الأداة عندما تحتاج إلى:\n - الحصول على نموذج المطلوب لكتابة قاعدة Semgrep\n - تحتاج إلى معرفة ما هي الحقول المتاحة لقاعدة Semgrep\n - التحقق من ما هي الحقول المتاحة لقاعدة Semgrep\n - التحقق من صحة تركيب قاعدة Semgrep\n", "parameters": {"properties": {}, "title": "semgrep_rule_schemaArguments", "type": "object"}}} {"type": "function", "function": {"name": "semgrep__get_supported_languages", "description": "\nيعيد قائمة اللغات المدعومة من قبل Semgrep\n\nاستخدم هذا الأداة فقط إذا كنت لا تعرف ما هي اللغات التي يدعمها Semgrep.\n", "parameters": {"properties": {}, "title": "get_supported_languagesArguments", "type": "object"}}} {"type": "function", "function": {"name": "semgrep__semgrep_findings", "description": "\nتسترد النتائج من واجهة API Semgrep AppSec Findings.\n\nهذه الوظيفة تستعيد الاكتشافات الأمنية، ونوعية الشفرة، والسلسلة التوريد التي تم تحديدها بالفعل\nمن قبل عمليات مسح سابقة من Semgrep وتم رفعها إلى منصة Semgrep AppSec. لا تقوم\nبإجراء مسح جديد أو تحليل الشفرة مباشرة. بدلًا من ذلك، تقوم بالاستعلام\nواجهة API Semgrep للوصول إلى نتائج المسح السابقة لمستودع معين أو مجموعة من المستودعات.\n\nالسلوك الافتراضي: بصفة افتراضية، يجب أن تفلتر هذه الأداة حسب المستودع الحالي. يجب أن يحدد النموذج\nاسم المستودع الحالي ويمرره في معلمة 'repos' لضمان أن تكون الاكتشافات مرتبطة بالمشروع الصحيح. ومع ذلك، يمكن للمستخدمين طلب بشكل صريح الاكتشافات من مستودعات أخرى، وفي هذه الحالة يجب أن يحترم النموذج هذا الطلب.\n\nاستخدم هذه الوظيفة عندما يطلب المقطع ملخصًا، قائمة، أو تحليلًا لنتائج سابقة، مثل:\n - "يرجى قائمة 10 أهم الاكتشافات الأمنية واقتراح حلول لها."\n - "أظهر جميع الثغرات الحرجة المفتوحة في هذا المستودع."\n - "ملخص آخر نتائج مسح Semgrep."\n - "احصل على نتائج من المستودع X" (طلب صريح لمستودع مختلف)\n\nهذه الوظيفة مثالية لل:\n- مراجعة، قائمة، أو تلخيص الاكتشافات من عمليات مسح سابقة.\n- تقديم رؤى قابلة للتنفيذ أو نصائح لتصحيح بناءً على بيانات المسح السابقة.\n\nلا تستخدم هذه الوظيفة لإجراء مسح جديد أو فحص كود لم يتم تحليله بعد\nمن قبل Semgrep. لمسح جديد، استخدم الوظيفة المناسبة للمسح.\n", "parameters": {"properties": {"issue_type": {"default": "ISSUE_TYPE_SAST", "description": "نوع المشكلة للفiltration.", "enum": ["ISSUE_TYPE_SAST", "ISSUE_TYPE_SCA"], "title": "Issue Type", "type": "string"}, "repos": {"default": [], "description": "قائمة أسماء المستودعات للفiltration. اشمل المالك وأسماء المستودعات، مثال: 'owner/repository'", "items": {"type": "string", "description": ""}, "title": "Repos", "type": "array"}, "status": {"default": "ISSUE_TAB_OPEN", "description": "حالة المشكلة للفiltration.", "enum": ["ISSUE_TAB_OPEN", "ISSUE_TAB_CLOSED", "ISSUE_TAB_IGNORED", "ISSUE_TAB_REVIEWING", "ISSUE_TAB_FIXING"], "title": "Status", "type": "string"}, "severities": {"anyOf": [{"items": {"enum": ["SEVERITY_CRITICAL", "SEVERITY_HIGH", "SEVERITY_MEDIUM", "SEVERITY_LOW"], "type": "string", "description": ""}, "type": "array", "description": ""}, {"type": "null", "description": ""}], "default": null, "description": "degrees of the issues to filter by.", "title": "Severities"}, "confidence": {"anyOf": [{"items": {"enum": ["CONFIDENCE_HIGH", "CONFIDENCE_MEDIUM", "CONFIDENCE_LOW"], "type": "string", "description": ""}, "type": "array", "description": ""}, {"type": "null", "description": ""}], "default": null, "description": "degrees of the issues to filter by.", "title": "Confidence"}, "autotriage_verdict": {"anyOf": [{"enum": ["VERDICT_TRUE_POSITIVE", "VERDICT_FALSE_POSITIVE"], "type": "string", "description": ""}, {"type": "null", "description": ""}], "default": null, "description": "Autotriage verdict of the issues to filter by. If not provided, findings with any verdict (including unrated) are returned.", "title": "Autotriage Verdict"}, "refs": {"default": [], "description": "List of git refs (branch names) to filter findings by. If not provided, only findings on the primary branch are returned.", "items": {"type": "string", "description": ""}, "title": "Refs", "type": "array"}, "limit": {"default": 10, "description": "Maximum number of findings to return", "title": "Limit", "type": "integer"}}, "title": "semgrep_findingsArguments", "type": "object"}}} {"type": "function", "function": {"name": "semgrep__semgrep_scan_with_custom_rule", "description": "\nيقوم بتشغيل مسح Semgrep باستخدام قاعدة مخصصة على المحتوى المقدم\nويعيد النتائج في التنسيق JSON\n\nاستخدم هذا الأداة عندما تحتاج إلى:\n - مسح ملفات الشفرة لفحص ثغرة أمنية معينة غير المغطاة من قبل القواعد الافتراضية لـ Semgrep\n - مسح ملفات الشفرة لفحص قضية معينة غير المغطاة من قبل القواعد الافتراضية لـ Semgrep\n", "parameters": {"$defs": {"CodeFile": {"properties": {"path": {"description": "مسار ملف الشفرة", "title": "Path", "type": "string"}, "content": {"description": "محتوى ملف الشفرة", "title": "Content", "type": "string"}}, "required": ["path", "content"], "title": "CodeFile", "type": "object"}}, "properties": {"code_files": {"description": "قائمة من القواميس بـ 'path' و 'content'", "items": {"$ref": "#/$defs/CodeFile", "description": ""}, "title": "Code Files", "type": "array"}, "rule": {"description": "نص قاعدة Semgrep YAML", "title": "Rule", "type": "string"}}, "required": ["code_files", "rule"], "title": "semgrep_scan_with_custom_ruleArguments", "type": "object"}}} {"type": "function", "function": {"name": "semgrep__semgrep_scan", "description": "\nيقوم بتشغيل مسح Semgrep محليًا على الملفات المقدمة ويعدّ النتائج في التنسيق JSON.\n\nيُفترض أن الملفات هي مسارات مطلقة إلى ملفات الشفرة.\n\nاستخدم هذا الأداة عندما تحتاج إلى:\n - مسح ملفات الشفرة لفحص ثغرات أمنية\n - مسح ملفات الشفرة لفحص قضايا أخرى\n", "parameters": {"$defs": {"CodePath": {"properties": {"path": {"description": "مسار مطلق لملف الشفرة", "title": "Path", "type": "string"}}, "required": ["path"], "title": "CodePath", "type": "object"}}, "properties": {"code_files": {"description": "قائمة من القواميس بـ 'path' يشير إلى مسار مطلق لملف الشفرة", "items": {"$ref": "#/$defs/CodePath", "description": ""}, "title": "Code Files", "type": "array"}}, "required": ["code_files"], "title": "semgrep_scanArguments", "type": "object"}}} {"type": "function", "function": {"name": "semgrep__get_abstract_syntax_tree", "description": "\nيعيد شجرة التمثيل المجرد (AST) لملف الشفرة المعطى في التنسيق JSON\n\nاستخدم هذا الأداة عندما تحتاج إلى:\n - الحصول على شجرة التمثيل المجرد (AST) لملف الشفرة المعطى\n - الحصول على AST لملف\n - فهم بنية الشفرة بشكل أكثر تفصيلًا\n - رؤية ما يراه المفسّر في الشفرة\n", "parameters": {"properties": {"code": {"description": "الشفرة التي تريد الحصول على AST لها", "title": "Code", "type": "string"}, "language": {"description": "لغة البرمجة للشفرة", "title": "Language", "type": "string"}}, "required": ["code", "language"], "title": "get_abstract_syntax_treeArguments", "type": "object"}}} {"type": "function", "function": {"name": "semgrep__semgrep_scan_supply_chain