الانتقال إلى المحتوى الرئيسي

title: “مراقبة الصحة” description: “وثائق مراقبة صحة AgentEye.”

اعرف متى يكون نشر AgentEye نفسه معطلاً أو متدهوراً، وليس فقط عندما تسيء وكلاؤك التصرف. الكشف أصلي في Kubernetes وبشكل حاسم، مستقل عن AgentEye: فهو يقرأ حالة الحاوية من مستوى تحكم Kubernetes ويفحص التبعيات الصعبة في AgentEye، لذا فإنه لا يزال ينطلق عندما يكون الخادم أو ClickHouse أو Postgres هو الذي تعطل. هناك طبقتان. الأولى مدمجة؛ الثانية اختيارية.

1. الجاهزية التي تدرك التبعيات (مدمجة)

يعرّض الخادم نقطتي مسبار بمهام مختلفة عن قصد:
النقطةالمسبارالفحوصاتالمصادقة
GET /healthlivenessالعملية حية ({"status":"ok"} دائماً)بدون
GET /readyreadinessيمكنها الخدمة فعلاً: Postgres + ClickHouse قابلة للوصولبدون
/ready تُرجع 200 مع "status":"ready" وكل فحص "ok" عندما تكون كلا التبعيات الصعبة قابلة للوصول، و503 مع "status":"not_ready" عندما تكون إحداهما غير قابلة للوصول. تحمل كلا الاستجابتين جسماً صغيراً:
Redis عبارة عن ذاكرة تخزين مؤقت اختيارية يتدهور الخادم بدونها، لذا يتم الإبلاغ عنها للمعلومات لكنها لا تفشل الجاهزية أبداً. تظهر "ok" عند تكوين ذاكرة تخزين مؤقت و"not_configured" بخلاف ذلك؛ لا تكون أبداً "down". في بيانات Kubernetes المدرجة، يشير مسبار الجاهزية إلى /ready وliveness يبقى على /health. التأثير: خادم يعمل لكن لا يمكنه الوصول إلى قاعدة البيانات الخاصة به يتم إزالته من الخدمة ويظهر كـ NotReady، وهي حالة يمكن لمراقبة العنقود الخاصة بك (أدناه) أن تنبه عليها، بينما يبقى liveness رخيصاً حتى لا يؤدي خلل التبعية المختصر أبداً إلى إعادة تشغيل الحاوية. يستخدم المسبار عتبة فشل سخية حتى لا يؤدي الخلل المؤقت إلى تذبذب النسخ المتطابقة خارج الدوران.

2. تنبيهات فشل الحاوية مع Robusta (اختيارية)

Robusta عبارة عن مراقب أصلي في Kubernetes يراقب خادم API وينشر فشل الحاويات (CrashLoopBackOff، OOMKilled، ImagePullBackOff، Pending/NotReady، Failed، الإخلاءات) إلى Slack. لأنه يراقب مستوى التحكم بدلاً من السؤال عن AgentEye، فإنه ينبه حتى عندما لا يستطيع AgentEye الخدمة على الإطلاق. يتم شحن Robusta كإضافة اختيارية في حزمة الإصدار. فعّلها باستخدام مخطط Robusta Helm القياسي وملف القيم الصغير الموضح أدناه:
  1. أضف مستودع المخطط واحصل على رمز الروبوت الخاص بـ Slack (xoxb-…) للقناة:
    لأن التكوين أدناه يحافظ على كل شيء داخل العنقود (disableCloudRouting: true)، يأتي الرمز من تطبيق Slack ذاتي الاستضافة: أنشئ تطبيقاً في https://api.slack.com/apps، أضف نطاق الروبوت chat:write، ثبّته على مساحة العمل الخاصة بك، انسخ Bot User OAuth Token (xoxb-…)، و ادعُ الروبوت إلى القناة (/invite @your-app).
  2. أنشئ values.yaml بعلامة لكل نشر (clusterName) وقناة Slack الخاصة بك، محدودة بـ namespace agenteye:
  3. ثبّت، مع تثبيت --version على إصدار مخطط Robusta معروف بأنه جيد (releases) حتى لا تثبّت مخطط لم يتم اختباره:

ما تبلغ عنه

  • حالة الحاوية في Kubernetes (حاوية AgentEye أي واحدة تفشل ولماذا) وعلامة الصورة لكل حاوية، أي الإصدار من المكون الذي يعمل.
  • لا بيانات حدث AgentEye ولا بيانات عملاء تغادر العنقود أبداً.
  • تقيّد القيم المدرجة التنبيهات بـ namespace agenteye، لذا لا يتم الإبلاغ عن الأحمال غير ذات الصلة في نفس العنقود.

مكان واحد لكل نشر

وجّه كل Robusta لكل نشر إلى قناة Slack مشتركة واحدة، لكل منها clusterName خاص به. يتم تحديد كل تنبيه بهذه العلامة، لذا تُظهر قناة واحدة صحة أسطول كامل الخاص بك، ويمكنك معرفة النشر الذي تأثر بنظرة واحدة.

انقطاعات العنقود الكامل

لا يمكن لمراقب داخل العنقود بحتة أن يبلغ عن انقطاع عنقود أو شبكة كاملة (ينقطع مع العنقود). إذا كنت بحاجة إلى ذلك، فعّل Robusta UI sink الاختيار: عيّن disableCloudRouting: false وأضف robusta_sink (برمز من robusta gen-config) إلى sinksConfig. فهي تضيف لوحة معلومات متعددة العناقيد مجمعة وتحدد أي عنقود يتوقف عن الفحص.

استكشاف الأخطاء

انظر قسم Health Monitoring في enterprise-docs/troubleshooting.md للحصول على “عدم وصول التنبيهات” و”الخادم يبقي يتذبذب NotReady”.