> ## Documentation Index
> Fetch the complete documentation index at: https://docs.befailproof.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Health monitoring

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

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

هناك طبقتان. الأولى مدمجة؛ الثانية اختيارية.

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

يعرّض الخادم نقطتي مسبار بمهام مختلفة عن قصد:

| النقطة        | المسبار   | الفحوصات                                                    | المصادقة |
| ------------- | --------- | ----------------------------------------------------------- | -------- |
| `GET /health` | liveness  | العملية حية (`{"status":"ok"}` دائماً)                      | بدون     |
| `GET /ready`  | readiness | يمكنها الخدمة فعلاً: **Postgres + ClickHouse** قابلة للوصول | بدون     |

`/ready` تُرجع `200` مع `"status":"ready"` وكل فحص `"ok"` عندما تكون كلا التبعيات الصعبة قابلة للوصول، و`503` مع `"status":"not_ready"` عندما تكون إحداهما غير قابلة للوصول. تحمل كلا الاستجابتين جسماً صغيراً:

```json theme={null}
{ "status": "not_ready",
  "checks": { "postgres": "ok", "clickhouse": "down", "redis": "not_configured" } }
```

Redis عبارة عن ذاكرة تخزين مؤقت اختيارية يتدهور الخادم بدونها، لذا يتم الإبلاغ عنها للمعلومات لكنها **لا تفشل** الجاهزية **أبداً**. تظهر `"ok"` عند تكوين ذاكرة تخزين مؤقت و`"not_configured"` بخلاف ذلك؛ لا تكون **أبداً** `"down"`.

في بيانات Kubernetes المدرجة، يشير مسبار **الجاهزية** إلى `/ready` و**liveness** يبقى على `/health`. التأثير: خادم *يعمل لكن لا يمكنه الوصول إلى قاعدة البيانات الخاصة به* يتم إزالته من الخدمة ويظهر كـ `NotReady`، وهي حالة يمكن لمراقبة العنقود الخاصة بك (أدناه) أن تنبه عليها، بينما يبقى liveness رخيصاً حتى لا يؤدي خلل التبعية المختصر أبداً إلى إعادة تشغيل الحاوية. يستخدم المسبار عتبة فشل سخية حتى لا يؤدي الخلل المؤقت إلى تذبذب النسخ المتطابقة خارج الدوران.

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

[Robusta](https://github.com/robusta-dev/robusta) عبارة عن مراقب أصلي في Kubernetes
يراقب خادم API وينشر فشل الحاويات (`CrashLoopBackOff`،
`OOMKilled`، `ImagePullBackOff`، `Pending`/`NotReady`، `Failed`، الإخلاءات) إلى
Slack. لأنه يراقب مستوى التحكم بدلاً من السؤال عن AgentEye، فإنه ينبه حتى عندما لا يستطيع AgentEye الخدمة على الإطلاق.

يتم شحن Robusta كإضافة اختيارية في حزمة الإصدار. فعّلها باستخدام مخطط Robusta Helm القياسي وملف القيم الصغير الموضح أدناه:

1. أضف مستودع المخطط واحصل على **رمز الروبوت** الخاص بـ Slack (`xoxb-…`) للقناة:

   ```bash theme={null}
   helm repo add robusta https://robusta-charts.storage.googleapis.com
   helm repo update
   ```

   لأن التكوين أدناه يحافظ على كل شيء داخل العنقود
   (`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`:

   ```yaml theme={null}
   clusterName: "acme-prod"            # علامة لكل نشر؛ تظهر على كل تنبيه
   enablePrometheusStack: false        # تنبيهات انهيار الحاوية فقط؛ لا مكدس متري
   disableCloudRouting: true           # التسليم إلى Slack مباشرة، داخل العنقود
   sinksConfig:
     - slack_sink:
         name: vendor_slack
         slack_channel: "agenteye-fleet-health"
         api_key: "REPLACE_WITH_SLACK_BOT_TOKEN"   # xoxb-… (فضّل --set أو سر)
         scope:
           include:
             - namespace: [agenteye]   # تنبيهات namespace AgentEye فقط؛ احذف للتوسيع
   ```

3. ثبّت، مع تثبيت `--version` على إصدار مخطط Robusta معروف بأنه جيد
   ([releases](https://github.com/robusta-dev/robusta/releases)) حتى لا تثبّت
   مخطط لم يتم اختباره:

   ```bash theme={null}
   helm install robusta robusta/robusta \
     --namespace robusta --create-namespace \
     --version <pin-a-known-good-version> \
     -f values.yaml \
     --set sinksConfig[0].slack_sink.api_key=$ROBUSTA_SLACK_TOKEN
   ```

### ما تبلغ عنه

* **حالة الحاوية** في 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](/ar/agenteye/troubleshooting) للحصول على "عدم وصول التنبيهات" و"الخادم يبقي يتذبذب `NotReady`".
