> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-8c05c8a2.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# تنبيهات ClickStack

> تنبيهات ClickStack

export const Image = ({img, alt, size}) => {
  return <Frame>
      <img src={img} alt={alt} />
    </Frame>;
};

يتضمن ClickStack دعمًا مدمجًا للتنبيهات، ما يتيح للفرق اكتشاف المشكلات والاستجابة لها في الوقت الفعلي عبر السجلات والمقاييس والتتبعات.

يمكن إنشاء التنبيهات مباشرةً من واجهة HyperDX، كما أنها تتكامل مع أنظمة الإشعارات الشائعة مثل Slack وPagerDuty.

تعمل التنبيهات بسلاسة على مستوى بيانات ClickStack، مما يساعدك على تتبع حالة النظام، واكتشاف تراجعات الأداء، ومراقبة أحداث الأعمال الرئيسية.

<div id="types-of-alerts">
  ## أنواع التنبيهات
</div>

يدعم ClickStack طريقتين متكاملتين لإنشاء التنبيهات: **تنبيهات البحث** و**تنبيهات مخططات لوحة المعلومات**. بعد إنشاء التنبيه، يُرفَق إما بعملية البحث أو بالمخطط.

<div id="search-alerts">
  ### 1. تنبيهات البحث
</div>

تتيح لك تنبيهات البحث تشغيل الإشعارات استنادًا إلى نتائج بحث محفوظ. وهي تساعدك على اكتشاف الحالات التي تتكرر فيها أحداث أو أنماط معيّنة بمعدل أعلى (أو أقل) من المتوقع.

يتم تشغيل التنبيه عندما يتجاوز عدد النتائج المطابقة ضمن نافذة زمنية محددة عتبة معيّنة أو ينخفض عنه.

لإنشاء تنبيه بحث:

لكي تتمكن من إنشاء تنبيه لبحث ما، يجب أولًا حفظ هذا البحث. يمكنك إما إنشاء التنبيه لبحث محفوظ موجود، أو حفظ البحث أثناء عملية إنشاء التنبيه. في المثال أدناه، نفترض أن البحث غير محفوظ.

<Steps>
  <Step>
    #### فتح مربع حوار إنشاء التنبيه

    ابدأ بإدخال [بحث](/ar/clickstack/features/search) ثم انقر على زر `Alerts` في الزاوية العلوية اليمنى من صفحة `Search`.

    <Image img="https://mintcdn.com/private-7c7dfe99-mintlify-8c05c8a2/brNmKxVjpyGdH7Ao/images/use-cases/observability/alerts_search_view.png?fit=max&auto=format&n=brNmKxVjpyGdH7Ao&q=85&s=6e67390aa9cb5829b03f1a45af6a849f" alt="طريقة عرض البحث للتنبيهات" size="lg" width="3600" height="2026" data-path="images/use-cases/observability/alerts_search_view.png" />
  </Step>

  <Step>
    #### إنشاء التنبيه

    من لوحة إنشاء التنبيه، يمكنك:

    * تعيين اسم للبحث المحفوظ المرتبط بالتنبيه.
    * تحديد عتبة معيّنة وعدد المرات التي يجب بلوغها فيها خلال فترة محددة. ويمكن أيضًا استخدام الحدود كقيم عليا أو دنيا. كما تحدد هذه الفترة عدد مرات تشغيل التنبيه.
    * تحديد قيمة `grouped by`. يتيح ذلك إخضاع البحث لعملية تجميع، مثل `ServiceName`، مما يسمح بتشغيل عدة تنبيهات انطلاقًا من البحث نفسه.
    * اختيار وجهة webhook للإشعارات. يمكنك إضافة webhook جديد مباشرةً من هذه الواجهة. راجع [إضافة webhook](#add-webhook) لمزيد من التفاصيل.

    قبل الحفظ، يعرض ClickStack تمثيلًا مرئيًا لشرط العتبة حتى تتمكن من التأكد من أنه سيعمل كما هو متوقع.

    <Image img="https://mintcdn.com/private-7c7dfe99-mintlify-8c05c8a2/6-CMW43ytOARd9iS/images/use-cases/observability/search_alert.png?fit=max&auto=format&n=6-CMW43ytOARd9iS&q=85&s=ad379e83958ff03168b5dbc986526dd6" alt="تنبيهات البحث" size="lg" width="3600" height="1852" data-path="images/use-cases/observability/search_alert.png" />
  </Step>
</Steps>

لاحظ أنه يمكن إضافة عدة تنبيهات إلى بحث واحد. وإذا كررت العملية المذكورة أعلاه، فستظهر التنبيهات الحالية على شكل علامات تبويب في أعلى مربع حوار تعديل التنبيه، مع تخصيص رقم لكل تنبيه.

<Image img="https://mintcdn.com/private-7c7dfe99-mintlify-8c05c8a2/RhEK5rhPj_7m6pWY/images/use-cases/observability/multiple_search_alerts.png?fit=max&auto=format&n=RhEK5rhPj_7m6pWY&q=85&s=146a57dd223ba6a1bc8bf833cdd2e68a" alt="تنبيهات متعددة" size="md" width="1558" height="1408" data-path="images/use-cases/observability/multiple_search_alerts.png" />

<div id="dashboard-alerts">
  ### 2. تنبيهات مخططات لوحة المعلومات
</div>

توسّع تنبيهات لوحة المعلومات إمكانات التنبيه لتشمل المخططات.

يمكنك إنشاء تنبيه يستند إلى مخطط مباشرةً من لوحة معلومات محفوظة، بالاستفادة من عمليات التجميع الكاملة في SQL ودوال ClickHouse لإجراء حسابات متقدمة.

عندما يتجاوز مقياس حدًا محددًا، يتم تشغيل تنبيه تلقائيًا، مما يتيح لك مراقبة مؤشرات الأداء الرئيسية أو فترات الاستجابة أو غيرها من المقاييس المهمة بمرور الوقت.

<Note>
  لكي تتمكّن من إنشاء تنبيه لعرض مرئي على لوحة المعلومات، يجب أن تكون لوحة المعلومات محفوظة.
</Note>

لإضافة تنبيه إلى مخطط في لوحة المعلومات:

يمكن إنشاء التنبيهات أثناء عملية إنشاء المخطط، أو عند إضافة مخطط إلى لوحة معلومات، أو إضافتها إلى مخططات موجودة. في المثال أدناه، نفترض أن المخطط موجود بالفعل على لوحة المعلومات.

<Steps>
  <Step>
    #### افتح مربع حوار تحرير المخطط

    افتح قائمة إعدادات المخطط وحدد زر التنبيه. سيؤدي ذلك إلى عرض مربع حوار تحرير المخطط.

    <Image img="https://mintcdn.com/private-7c7dfe99-mintlify-8c05c8a2/brNmKxVjpyGdH7Ao/images/use-cases/observability/edit_chart_alert.png?fit=max&auto=format&n=brNmKxVjpyGdH7Ao&q=85&s=5d07c2024cceab9b6c28b13f30d8e23e" alt="تحرير تنبيه المخطط" size="lg" width="3600" height="1618" data-path="images/use-cases/observability/edit_chart_alert.png" />
  </Step>

  <Step>
    #### أضف التنبيه

    حدد **إضافة تنبيه**.

    <Image img="https://mintcdn.com/private-7c7dfe99-mintlify-8c05c8a2/brNmKxVjpyGdH7Ao/images/use-cases/observability/add_chart_alert.png?fit=max&auto=format&n=brNmKxVjpyGdH7Ao&q=85&s=8f987aa78b83ed31980193cf18dcbf67" alt="إضافة تنبيه إلى المخطط" size="lg" width="3600" height="2026" data-path="images/use-cases/observability/add_chart_alert.png" />
  </Step>

  <Step>
    #### حدّد شروط التنبيه

    حدّد الشرط (`>=`, `>`, `<=`, `<`, `=`, `!=`, `<= x >=`, `> or <`) والعتبة والمدة وwebhook. كما تحدد المدة هنا أيضًا عدد مرات تشغيل التنبيه.

    <Image img="https://mintcdn.com/private-7c7dfe99-mintlify-8c05c8a2/brNmKxVjpyGdH7Ao/images/use-cases/observability/create_chart_alert.png?fit=max&auto=format&n=brNmKxVjpyGdH7Ao&q=85&s=fa73a5cbca7bed63dd02d34829db77a4" alt="إنشاء تنبيه للمخطط" size="lg" width="3600" height="2026" data-path="images/use-cases/observability/create_chart_alert.png" />

    يمكنك إضافة webhook جديد مباشرةً من هذه الواجهة. راجع [إضافة webhook](#add-webhook) لمزيد من التفاصيل.
  </Step>
</Steps>

<div id="add-webhook">
  ## إضافة webhook
</div>

أثناء إنشاء تنبيه، يمكنك إما استخدام webhook موجود أو إنشاء webhook جديد. وبمجرد إنشائه، سيكون webhook متاحًا لإعادة الاستخدام في تنبيهات أخرى.

يمكن إنشاء webhook لأنواع خدمة مختلفة، بما في ذلك Slack وPagerDuty، بالإضافة إلى الوجهات العامة.

على سبيل المثال، لنلقِ نظرة على إنشاء تنبيه لمخطط مخطط أدناه. قبل تحديد webhook، يمكن للمستخدم اختيار `Add New Webhook`.

<Image img="https://mintcdn.com/private-7c7dfe99-mintlify-8c05c8a2/brNmKxVjpyGdH7Ao/images/use-cases/observability/add_new_webhook.png?fit=max&auto=format&n=brNmKxVjpyGdH7Ao&q=85&s=e1498e28a924249c21b81e96e302b6ba" alt="إضافة webhook جديد" size="lg" width="3600" height="2026" data-path="images/use-cases/observability/add_new_webhook.png" />

يؤدي ذلك إلى فتح مربع حوار إنشاء webhook، حيث يمكنك إنشاء webhook جديد:

<Image img="https://mintcdn.com/private-7c7dfe99-mintlify-8c05c8a2/brNmKxVjpyGdH7Ao/images/use-cases/observability/add_webhook_dialog.png?fit=max&auto=format&n=brNmKxVjpyGdH7Ao&q=85&s=d5fae8110dbae4a95e325c5ed8e61982" alt="إنشاء webhook" size="md" width="1244" height="936" data-path="images/use-cases/observability/add_webhook_dialog.png" />

اسم webhook مطلوب، بينما يكون الوصف اختياريًا. أما Settings الأخرى المطلوب إكمالها فتعتمد على نوع الخدمة.

لاحظ أن أنواع الخدمات المتاحة تختلف بين ClickStack Open Source وClickStack Cloud. راجع [تكاملات أنواع الخدمات](#integrations).

<div id="integrations">
  ### تكاملات أنواع الخدمات
</div>

تتكامل تنبيهات ClickStack تلقائيًا مع أنواع الخدمات التالية:

* **Slack**: أرسل الإشعارات مباشرةً إلى قناة عبر webhook أو API.
* **PagerDuty**: وجّه الحوادث إلى فرق المناوبة عبر PagerDuty API.
* **Webhook**: اربط التنبيهات بأي نظام أو سير عمل مخصص عبر webhook عام.

<Info>
  **تكاملات ClickHouse Cloud فقط**

  لا يتوفر تكاملا Slack API وPagerDuty إلا في ClickHouse Cloud.
</Info>

بحسب نوع الخدمة، ستحتاج إلى تقديم تفاصيل مختلفة، وتحديدًا:

**Slack (Webhook URL)**

* عنوان URL الخاص بـ Webhook. على سبيل المثال: `https://hooks.slack.com/services/<unique_path>`. راجع [وثائق Slack](https://docs.slack.dev/messaging/sending-messages-using-incoming-webhooks/) لمزيد من التفاصيل.

**Slack (API)**

* رمز bot الخاص بـ Slack. راجع [وثائق Slack](https://docs.slack.dev/authentication/tokens/#bot/) لمزيد من التفاصيل.

**PagerDuty API**

* مفتاح التكامل الخاص بـ PagerDuty. راجع [وثائق PagerDuty](https://support.pagerduty.com/main/docs/api-access-keys) لمزيد من التفاصيل.

**Generic**

* عنوان URL الخاص بـ Webhook
* رؤوس Webhook (اختياري)
* محتوى Webhook (اختياري). يدعم المحتوى حاليًا متغيرات القالب `{{title}}` و`{{body}}` و`{{link}}`.

<div id="managing-alerts">
  ## إدارة التنبيهات
</div>

يمكن إدارة التنبيهات مركزيًا من خلال لوحة التنبيهات على الجانب الأيسر من HyperDX.

<Image img="https://mintcdn.com/private-7c7dfe99-mintlify-8c05c8a2/RhEK5rhPj_7m6pWY/images/use-cases/observability/manage_alerts.png?fit=max&auto=format&n=RhEK5rhPj_7m6pWY&q=85&s=99522599e7ef9792354839269088fe38" alt="إدارة التنبيهات" size="lg" width="3600" height="2026" data-path="images/use-cases/observability/manage_alerts.png" />

من هذا العرض، يمكنك رؤية جميع التنبيهات التي تم إنشاؤها والمفعّلة حاليًا في ClickStack.

<Image img="https://mintcdn.com/private-7c7dfe99-mintlify-8c05c8a2/brNmKxVjpyGdH7Ao/images/use-cases/observability/alerts_view.png?fit=max&auto=format&n=brNmKxVjpyGdH7Ao&q=85&s=a0728c16422790998e282b15aac3fcb0" alt="عرض التنبيهات" size="lg" width="3600" height="2026" data-path="images/use-cases/observability/alerts_view.png" />

يعرض هذا العرض أيضًا سجل تقييم التنبيهات. تُقيَّم التنبيهات على فاصل زمني متكرر (يُحدَّد بحسب الفترة/المدة التي ضُبطت عند إنشاء التنبيه). وأثناء كل تقييم، يستعلم HyperDX عن بياناتك للتحقق مما إذا كان شرط التنبيه قد تحقق:

* **الشريط الأحمر**: تحقق شرط العتبة خلال هذا التقييم وتم تفعيل التنبيه (أُرسل الإشعار)
* **الشريط الأخضر**: تم تقييم التنبيه، لكن شرط العتبة لم يتحقق (لم يُرسل أي إشعار)

كل تقييم مستقل؛ إذ يفحص التنبيه البيانات ضمن تلك النافذة الزمنية، ولا يتم تفعيله إلا إذا كان الشرط `true` في تلك اللحظة.

في المثال أعلاه، تم تفعيل التنبيه الأول في كل تقييم، ما يشير إلى وجود مشكلة مستمرة. أما التنبيه الثاني فيُظهر مشكلة جرى حلها؛ إذ تم تفعيله مرتين في البداية (أشرطة حمراء)، ثم في التقييمات اللاحقة لم يعد شرط العتبة متحققًا (أشرطة خضراء).

يؤدي النقر على تنبيه إلى نقلك إلى المخطط أو صفحة Search المرتبط بها التنبيه.

<div id="deleting-alerts">
  ### حذف تنبيه
</div>

لإزالة تنبيه، افتح مربع حوار التعديل لصفحة البحث أو المخطط المرتبط، ثم اختر **إزالة التنبيه**.
في المثال أدناه، سيؤدي الزر `Remove Alert` إلى إزالة التنبيه من المخطط.

<Image img="https://mintcdn.com/private-7c7dfe99-mintlify-8c05c8a2/6-CMW43ytOARd9iS/images/use-cases/observability/remove_chart_alert.png?fit=max&auto=format&n=6-CMW43ytOARd9iS&q=85&s=5554a17c2ff4c4631a735a0f1be66e25" alt="إزالة تنبيه من المخطط" size="lg" width="3600" height="2026" data-path="images/use-cases/observability/remove_chart_alert.png" />

<div id="sql-based-alerts">
  ## تنبيهات المخططات المستندة إلى SQL
</div>

تتيح لك تنبيهات المخططات المستندة إلى SQL كتابة استعلامات ClickHouse SQL مخصّصة لتحديد شروط التنبيه. ويمنحك ذلك تحكمًا كاملًا في التصفية والتجميع والعمليات الحسابية — فأي شيء يمكنك التعبير عنه في SQL يمكن أن يتحول إلى تنبيه.

<div id="supported-chart-types">
  ### أنواع المخططات المدعومة
</div>

تدعم التنبيهات المستندة إلى SQL ثلاثة أنواع من عرض المخططات:

| نوع المخطط      | السلوك                                                                                                                      |
| --------------- | --------------------------------------------------------------------------------------------------------------------------- |
| **خطي**         | تنبيه سلسلة زمنية. يجب أن يُنتج الاستعلام صفوفًا مُجمَّعة ضمن فترات زمنية. ويُقيَّم كل جزء زمني بشكل مستقل مقارنةً بالعتبة. |
| **شريط متراكم** | تنبيه سلسلة زمنية. له السلوك نفسه كما في المخطط الخطي.                                                                      |
| **رقم**         | تنبيه لقيمة واحدة. يُرجع الاستعلام نتيجة رقمية واحدة تُقارَن بالعتبة مرة واحدة في كل عملية تقييم.                           |

أما أنواع المخططات الأخرى المستندة إلى SQL (جدول، مخطط دائري، خريطة حرارية، إلخ) فلا تدعم التنبيهات.

<div id="create-sql-based-alert">
  ### إنشاء تنبيه SQL
</div>

لإنشاء تنبيه لمخطط يستند إلى SQL:

<Steps>
  <Step>
    #### أنشئ مخططًا يستند إلى SQL على لوحة معلومات أو افتحه

    من لوحة معلومات محفوظة، يمكنك إما [إنشاء مخطط جديد باستخدام وضع مخطط **SQL**](/ar/clickstack/features/dashboards/sql-visualizations)، أو فتح مخطط حالي يستند إلى SQL لتحريره.

    اختر **Line** أو **Stacked Bar** أو **Number** كنوع العرض.

    <Image img="https://mintcdn.com/private-7c7dfe99-mintlify-8c05c8a2/6-CMW43ytOARd9iS/images/use-cases/observability/open_sql_chart_mode.png?fit=max&auto=format&n=6-CMW43ytOARd9iS&q=85&s=f1bef624ac54ef761c0ba64a602e3d09" alt="إنشاء مخطط SQL" size="lg" width="2082" height="1036" data-path="images/use-cases/observability/open_sql_chart_mode.png" />
  </Step>

  <Step>
    #### أضف التنبيه

    حدِّد **Add Alert** من قسم التنبيه في محرر المخطط. اضبط ما يلي:

    * **نوع العتبة**: `>=` (أكبر من أو يساوي)، `>` (أكبر من)، `<=` (أقل من أو يساوي)، `<` (أقل من)، `=` (يساوي)، `!=` (لا يساوي)، `<= x >=` (بين)، أو `> or <` (خارج النطاق)
    * **قيمة العتبة**: القيمة الرقمية المطلوب المقارنة بها
    * **Interval**: عدد مرات تقييم التنبيه (1m أو 5m أو 15m أو 30m أو 1h أو 6h أو 12h أو 1d). ويحدِّد هذا أيضًا النافذة الزمنية لكل تقييم.
    * **Webhook**: قناة الإشعارات التي تُستخدم عند إطلاق التنبيه. راجع [إضافة webhook](#add-webhook).

    <Image img="https://mintcdn.com/private-7c7dfe99-mintlify-8c05c8a2/brNmKxVjpyGdH7Ao/images/use-cases/observability/add_raw_sql_alert.png?fit=max&auto=format&n=brNmKxVjpyGdH7Ao&q=85&s=d94dd08aba7b4fc1283452f5a45ebae6" alt="تحرير تنبيه المخطط" size="lg" width="2081" height="1175" data-path="images/use-cases/observability/add_raw_sql_alert.png" />

    <Warning>
      **النطاق الزمني للتنبيه**

      عادةً ما تُنفَّذ استعلامات التنبيه مرة واحدة لكل فاصل زمني. ومع ذلك، إذا تم تخطي فاصل زمني واحد أو أكثر بسبب أخطاء أو بطء الاستعلامات، فسيستخدم التنفيذ التالي نطاقًا زمنيًا يشمل الفواصل الزمنية الفائتة. في هذه الحالة، ستظل معلمات الفاصل الزمني للاستعلام مضبوطة على الفترة المكوَّنة للتنبيه، لكن معلمات النطاق الزمني ستعكس النطاق الزمني الأطول.
    </Warning>
  </Step>

  <Step>
    #### احفظ لوحة المعلومات

    احفظ لوحة المعلومات لتفعيل التنبيه. سيبدأ التنبيه بالتقييم وفقًا للفاصل الزمني المُعدّ.
  </Step>
</Steps>

<div id="sql-result-interpretation">
  ### كيفية تفسير نتائج الاستعلام
</div>

يفحص نظام التنبيهات الأعمدة التي يعيدها استعلام SQL لتحديد ما يجب مقارنته بالعتبة.

* **عمود القيمة**: يُستخدم **آخر عمود رقمي** في عبارة `SELECT` باعتباره قيمة التنبيه. إذا أعاد استعلامك عدة أعمدة رقمية (مثلًا، `count, avg_latency, p99_latency`)، فلن تُقارَن بالعتبة إلا الأخيرة منها (`p99_latency`).
* **عمود الطابع الزمني**: بالنسبة إلى مخططات السلاسل الزمنية (Line وStacked Bar)، يحدِّد النظام عمود Date/DateTime في النتائج باعتباره الفترة الزمنية (أي المحور x في مخطط السلاسل الزمنية). وتُقيَّم قيمة كل فترة زمنية في عمود القيمة مقابل العتبة بشكل مستقل، وإذا تجاوزت قيمة أي فترة زمنية العتبة المُعدَّة، فسيتم إطلاق التنبيه.
* **أعمدة التجميع**: تُعامَل أي أعمدة غير رقمية وغير خاصة بالطابع الزمني (مثلًا، `ServiceName` و`Environment`) على أنها أبعاد تجميع. وعند وجود مجموعات، يُتتبَّع كل تركيب فريد من قيم المجموعات ويُرسَل له تنبيه بشكل منفصل. سيرسل ClickStack تنبيهًا لكل مجموعة تحتوي على قيمة تتجاوز العتبة المُعدَّة. لا تتوفر المجموعات إلا لمخططات السلاسل الزمنية.

<div id="query-params">
  ### معلمات الاستعلام ووحدات الماكرو
</div>

تدعم استعلامات تنبيهات SQL معلمات القوالب ووحدات الماكرو التي تُستبدل تلقائيًا عند التقييم. وهذه هي نفس المعلمات ووحدات الماكرو المتاحة عند [إنشاء مخطط مستند إلى SQL](/ar/clickstack/features/dashboards/sql-visualizations).

<div id="required-alert-parameters">
  #### المعلمات المطلوبة والموصى بها
</div>

الاستعلامات المستخدمة لتنبيهات المخططات الخطية أو مخططات الأعمدة المتراكمة **يجب** أن تتضمن معلمة الفاصل الزمني أو macro (`{intervalSeconds:Int64}` أو `{intervalMilliseconds:Int64}` أو `$__timeInterval(col)` أو `$__timeInterval_ms(col)`). أثناء تنفيذ التنبيه، سيُستبدل بها الفترة المُعدّة للتنبيه.

الاستعلامات المستخدمة للتنبيهات **ينبغي** أن تتضمن عامل تصفية للنطاق الزمني (`{startDateMilliseconds:Int64}` و`{endDateMilliseconds:Int64}`، أو `$__timeFilter(col)`، وما إلى ذلك). وبغض النظر عمّا إذا كان عامل تصفية للنطاق الزمني موجودًا في الاستعلام أم لا، فسيُشغَّل استعلام التنبيه وفقًا للفترة المُعدّة للتنبيه. وإذا لم يكن هناك عامل تصفية للنطاق الزمني، فسيقرأ الاستعلام كامل النطاق الزمني المتاح في الجدول المصدر عند كل تنفيذ.

<Warning>
  **النطاق الزمني للتنبيه**

  عادةً ما تُنفَّذ استعلامات التنبيه مرة واحدة لكل فاصل زمني. ومع ذلك، إذا تم تخطي فاصل زمني واحد أو أكثر بسبب أخطاء أو بطء الاستعلامات، فسيستخدم التنفيذ التالي نطاقًا زمنيًا يشمل الـ intervals الفائتة. في هذه الحالة، ستظل معلمات الفاصل الزمني في الاستعلام مضبوطة على الفترة المُعدّة للتنبيه، لكن معلمات النطاق الزمني ستعكس النطاق الزمني الأطول.
</Warning>

<div id="example-queries">
  ### أمثلة على استعلامات التنبيهات
</div>

<div id="example-error-rate">
  #### معدل الأخطاء لكل خدمة (زمنيًا)
</div>

أرسل تنبيهًا إذا تجاوز معدل الأخطاء في أي خدمة 5%، بشرط وجود ما لا يقل عن 10 طلبات خلال فترة التنبيه لتفادي التنبيهات المزعجة للخدمات منخفضة الزيارات.

```sql theme={null}
WITH error_rates AS (
  SELECT
    $__timeInterval(Timestamp) as ts,
    ServiceName,
    countIf (SpanKind = 'Server') as request_count,
    countIf (
      SpanKind = 'Server'
      and StatusCode = 'Error'
    ) as error_count,
    error_count / request_count * 100 AS error_percent
  FROM $__sourceTable
  WHERE $__timeFilter(Timestamp)
  GROUP BY ts, ServiceName
)
SELECT ts, ServiceName, error_percent
FROM error_rates
WHERE request_count > 10
```

**نوع العرض**: خطي أو شريط مكدّس
**العتبة**: `>= 5` (يُطلق التنبيه عند وصول معدل الأخطاء إلى 5%)

في هذا الاستعلام، يُعدّ `ServiceName` عمودًا غير رقمي وليس عمود طابع زمني، لذا تُتَابَع كل خدمة بوصفها مجموعة تنبيه منفصلة. ويُطلق التنبيه بشكل مستقل لكل خدمة.

<div id="example-anomaly-detection">
  #### كشف الشذوذ باستخدام المتوسط المتأخر (السلاسل الزمنية)
</div>

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

```sql theme={null}
WITH buckets AS (
  SELECT
    $__timeInterval(Timestamp) AS ts,
    count() AS bucket_count
  FROM $__sourceTable
  WHERE TimestampTime >= fromUnixTimestamp64Milli({startDateMilliseconds:Int64})
        - toIntervalSecond($__interval_s * 30) -- Fetch 30 intervals back
    AND TimestampTime < fromUnixTimestamp64Milli({endDateMilliseconds:Int64})
    AND SeverityText = 'error'
  GROUP BY ts
  ORDER BY ts
  WITH FILL
    FROM toDateTime(fromUnixTimestamp64Milli({startDateMilliseconds:Int64}))
    TO toDateTime(fromUnixTimestamp64Milli({endDateMilliseconds:Int64}))
    STEP toIntervalSecond($__interval_s)
),

anomaly_detection AS (
  SELECT
    ts,
    bucket_count,
    avg(bucket_count) OVER (
      ORDER BY ts ROWS BETWEEN 30 PRECEDING AND 1 PRECEDING
    ) AS previous_30_avg,
    stddevPop(bucket_count) OVER (
      ORDER BY ts ROWS BETWEEN 30 PRECEDING AND 1 PRECEDING
    ) AS previous_30_stddev,
    greatest(
      bucket_count - (previous_30_avg + 2 * previous_30_stddev), 0
    ) AS excess_error_count
  FROM buckets
)

SELECT ts, excess_error_count
FROM anomaly_detection
WHERE ts >= fromUnixTimestamp64Milli({startDateMilliseconds:Int64})
  AND ts < fromUnixTimestamp64Milli({endDateMilliseconds:Int64})
```

**نوع العرض**: خطّي
**العتبة**: `> 0` (يُفعَّل التنبيه عند رصد أخطاء تتجاوز خط الأساس المتحرك)

لاحظ أن الاستعلام يجلب 30 فترة *قبل* بداية نطاق التاريخ لتهيئة حسابات النافذة المتحركة، ثم يُصفّي الناتج النهائي ليقتصر على نافذة التقييم.

<div id="common-alert-scenarios">
  ## سيناريوهات التنبيهات الشائعة
</div>

فيما يلي بعض سيناريوهات التنبيهات الشائعة التي يمكنك استخدام HyperDX فيها:

**الأخطاء:** نوصي بإعداد تنبيهات لعمليتَي البحث المحفوظتين الافتراضيتين
`All Error Events` و`HTTP Status >= 400` لتتلقى إشعارًا عند
ارتفاع عدد الأخطاء بشكل مفرط.

**العمليات البطيئة:** يمكنك إعداد بحث عن العمليات البطيئة (على سبيل المثال،
`duration:>5000`) ثم إنشاء تنبيه عند حدوث عدد كبير جدًا من العمليات البطيئة.

**أحداث المستخدمين:** يمكنك أيضًا إعداد تنبيهات للفرق التي تتعامل مباشرةً مع العملاء
لتتلقى إشعارًا عند تسجيل مستخدمين جدد أو عند تنفيذ إجراء حرج من إجراءات المستخدم.
