مراقبة الإنتاج والتنبيه: دليل الإعداد الكامل

قم بإعداد مراقبة الإنتاج والتنبيه باستخدام Prometheus وGrafana وSentry. يغطي المقاييس والسجلات والتتبعات وسياسات التنبيه وسير عمل الاستجابة للحوادث.

E
ECOSIRE Research and Development Team
|16 مارس 20267 دقائق قراءة1.5k كلمات|

جزء من سلسلة Performance & Scalability

اقرأ الدليل الكامل

مراقبة الإنتاج والتنبيه: دليل الإعداد الكامل

يكلف متوسط ​​حادث الإنتاج 5,600 دولار لكل دقيقة من وقت التوقف عن العمل. تكتشف الشركات التي تتمتع بمراقبة ناضجة المشكلات في أقل من 5 دقائق، في حين أن الشركات التي لا تتمتع بالمراقبة تستغرق في المتوسط ​​197 دقيقة للكشف --- وهو الفرق بين خطأ بسيط وكارثة خسارة العميل.

يغطي هذا الدليل إعداد مراقبة الإنتاج الشامل: ما يجب قياسه، وكيفية جمعه، ومكان تصوره، ومتى يتم التنبيه.

الوجبات الرئيسية

  • تخدم الركائز الثلاث لقابلية الملاحظة (المقاييس والسجلات والآثار) أغراضًا مختلفة وجميعها ضرورية
  • التنبيه على الأعراض (معدل الخطأ، الكمون) وليس الأسباب (استخدام وحدة المعالجة المركزية) لتقليل الضوضاء بنسبة 80%
  • تضمن سجلات التشغيل المرفقة بكل تنبيه الاستجابة المتسقة للحوادث بغض النظر عن الشخص المتصل
  • ابدأ بـ 5 تنبيهات أساسية وقم بالتوسيع فقط عندما تفهم خط الأساس

الركائز الثلاث لقابلية الملاحظة

المقاييس

القياسات الرقمية أخذ عينات مع مرور الوقت. تجيب المقاييس على "ما الذي يحدث الآن؟"

مقاييس التطبيق:

  • معدل الطلب (الطلبات في الثانية)
  • معدل الخطأ (ردود 5xx في الثانية)
  • توزيع الكمون (P50، P95، P99)
  • الجلسات النشطة / المستخدمين المتزامنين

مقاييس البنية التحتية:

  • استخدام وحدة المعالجة المركزية لكل خدمة
  • استخدام الذاكرة وجمع القمامة
  • القرص الإدخال / الإخراج والمساحة المتوفرة
  • سرعة نقل الشبكة

مقاييس الأعمال:

  • أوامر في الدقيقة
  • معدل التخلي عن سلة التسوق
  • الإيرادات في الساعة
  • مكالمات API عن طريق نقطة النهاية

السجلات

سجلات زمنية منظمة للأحداث المنفصلة. تجيب السجلات "لماذا حدث ذلك؟"

{
  "timestamp": "2026-03-16T14:32:01.234Z",
  "level": "error",
  "service": "api",
  "requestId": "req_abc123",
  "userId": "usr_456",
  "message": "Payment processing failed",
  "error": "Stripe API timeout after 30000ms",
  "endpoint": "POST /billing/checkout",
  "duration": 30142
}

تسجيل أفضل الممارسات:

  • استخدم تسجيل JSON المنظم، وليس النص العادي
  • تضمين معرفات الارتباط (requestId) عبر الخدمات
  • سجل بالمستويات المناسبة (خطأ في حالات الفشل، تحذير من التدهور، معلومات عن الأحداث الرئيسية)
  • لا تقم مطلقًا بتسجيل البيانات الحساسة (كلمات المرور والرموز المميزة وأرقام بطاقات الائتمان الكاملة)

آثار

مسارات الطلب الشاملة من خلال الأنظمة الموزعة. آثار الإجابة "أين هو عنق الزجاجة؟"

قد يلمس طلب مستخدم واحد إلى الخروج من التجارة الإلكترونية ما يلي:

  1. Nginx (2 مللي ثانية) إلى الواجهة الأمامية Next.js (50 مللي ثانية) إلى NestJS API (120 مللي ثانية) إلى PostgreSQL (45 مللي ثانية) إلى Stripe API (800 مللي ثانية) إلى خدمة البريد الإلكتروني (200 مللي ثانية)

وبدون التتبع، ستشاهد عبارة "يستغرق الخروج 1.2 ثانية". من خلال التتبع، ستشاهد "حسابات Stripe API لـ 67% من زمن الوصول للدفع."


مراقبة إعداد المكدس

بروميثيوس + جرافانا (استضافة ذاتية)

# docker-compose.monitoring.yml
services:
  prometheus:
    image: prom/prometheus:v2.50.0
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
      - prometheus-data:/prometheus
    ports:
      - "9090:9090"
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
      - '--storage.tsdb.retention.time=30d'
      - '--web.enable-lifecycle'

  grafana:
    image: grafana/grafana:10.3.0
    volumes:
      - grafana-data:/var/lib/grafana
    ports:
      - "3030:3000"
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_PASSWORD}
      - GF_USERS_ALLOW_SIGN_UP=false

  loki:
    image: grafana/loki:2.9.0
    volumes:
      - loki-data:/loki
    ports:
      - "3100:3100"

  alertmanager:
    image: prom/alertmanager:v0.27.0
    volumes:
      - ./alertmanager.yml:/etc/alertmanager/alertmanager.yml
    ports:
      - "9093:9093"

volumes:
  prometheus-data:
  grafana-data:
  loki-data:

تكوين بروميثيوس

# prometheus.yml
global:
  scrape_interval: 15s
  evaluation_interval: 15s

rule_files:
  - "alerts/*.yml"

alerting:
  alertmanagers:
    - static_configs:
        - targets: ["alertmanager:9093"]

scrape_configs:
  - job_name: "api"
    metrics_path: /metrics
    static_configs:
      - targets: ["api:3001"]

  - job_name: "node-exporter"
    static_configs:
      - targets: ["node-exporter:9100"]

  - job_name: "postgres"
    static_configs:
      - targets: ["postgres-exporter:9187"]

  - job_name: "redis"
    static_configs:
      - targets: ["redis-exporter:9121"]

مقاييس تطبيق NestJS

الكشف عن مقاييس بروميثيوس

// metrics.module.ts
import { Module } from '@nestjs/common';
import { PrometheusModule } from '@willsoto/nestjs-prometheus';
import {
  makeCounterProvider,
  makeHistogramProvider,
  makeGaugeProvider,
} from '@willsoto/nestjs-prometheus';

@Module({
  imports: [
    PrometheusModule.register({
      path: '/metrics',
      defaultMetrics: { enabled: true },
    }),
  ],
  providers: [
    makeCounterProvider({
      name: 'http_requests_total',
      help: 'Total HTTP requests',
      labelNames: ['method', 'path', 'status'],
    }),
    makeHistogramProvider({
      name: 'http_request_duration_seconds',
      help: 'HTTP request duration in seconds',
      labelNames: ['method', 'path'],
      buckets: [0.01, 0.05, 0.1, 0.25, 0.5, 1, 2.5, 5, 10],
    }),
    makeGaugeProvider({
      name: 'active_connections',
      help: 'Number of active connections',
    }),
  ],
  exports: [PrometheusModule],
})
export class MetricsModule {}

تكوين التنبيه

التنبيهات الخمسة الأساسية

يحتاج كل نظام إنتاج إلى هذه التنبيهات منذ اليوم الأول:

# alerts/essential.yml
groups:
  - name: essential
    rules:
      - alert: ServiceDown
        expr: up == 0
        for: 1m
        labels:
          severity: critical
        annotations:
          summary: "Service {{ $labels.job }} is down"
          runbook: "https://wiki.example.com/runbooks/service-down"

      - alert: HighErrorRate
        expr: |
          rate(http_requests_total{status=~"5.."}[5m])
          / rate(http_requests_total[5m]) > 0.01
        for: 5m
        labels:
          severity: critical
        annotations:
          summary: "Error rate above 1% for 5 minutes"
          runbook: "https://wiki.example.com/runbooks/high-error-rate"

      - alert: HighLatency
        expr: |
          histogram_quantile(0.95,
            rate(http_request_duration_seconds_bucket[5m])
          ) > 2
        for: 5m
        labels:
          severity: warning
        annotations:
          summary: "P95 latency above 2 seconds"

      - alert: DiskSpaceLow
        expr: |
          node_filesystem_avail_bytes{mountpoint="/"}
          / node_filesystem_size_bytes{mountpoint="/"} < 0.2
        for: 10m
        labels:
          severity: warning
        annotations:
          summary: "Disk space below 20% on {{ $labels.instance }}"

      - alert: SSLCertExpiringSoon
        expr: |
          probe_ssl_earliest_cert_expiry - time() < 14 * 24 * 3600
        labels:
          severity: warning
        annotations:
          summary: "SSL certificate expires within 14 days"

توجيه التنبيه

# alertmanager.yml
global:
  slack_api_url: "${SLACK_WEBHOOK_URL}"

route:
  group_by: ['alertname', 'severity']
  group_wait: 30s
  group_interval: 5m
  repeat_interval: 4h
  receiver: 'default'
  routes:
    - match:
        severity: critical
      receiver: 'pagerduty'
      repeat_interval: 15m
    - match:
        severity: warning
      receiver: 'slack'

receivers:
  - name: 'default'
    slack_configs:
      - channel: '#alerts'
        title: '{{ .GroupLabels.alertname }}'
        text: '{{ .CommonAnnotations.summary }}'

  - name: 'pagerduty'
    pagerduty_configs:
      - routing_key: "${PAGERDUTY_KEY}"
        severity: '{{ .GroupLabels.severity }}'

  - name: 'slack'
    slack_configs:
      - channel: '#alerts-warnings'
        title: '{{ .GroupLabels.alertname }}'

قواعد جودة التنبيه

ممارسةلماذا
التنبيه على الأعراض وليس الأسباب"معدل الخطأ مرتفع" قابل للتنفيذ؛ "وحدة المعالجة المركزية عند 80%" قد لا تكون
كل تنبيه له دليل تشغيللا ينبغي للمهندسين تحت الطلب أن يفكروا في الساعة 3 صباحًا
يجب أن تكون التنبيهات قابلة للتنفيذإذا لم يتمكن أحد من التصرف بناءً على ذلك، فهذا ضجيج وليس تنبيهًا
ضبط العتبات بعد أسبوعينالعتبات الأولية هي التخمينات. ضبط على أساس خطوط الأساس
مراجعة تنبيه التعب شهرياإذا تم إطلاق التنبيهات يوميًا دون اتخاذ إجراء، فارفع الحدود أو قم بإزالتها

لوحات معلومات جرافانا

التسلسل الهرمي للوحة المعلومات

  1. لوحة معلومات عامة: صحة عالية المستوى في جميع الخدمات. هذه هي الشاشة الأولى التي ينظر إليها أي شخص أثناء وقوع حادث ما.
  2. لوحات معلومات الخدمة: مقاييس تفصيلية لكل خدمة (واجهة برمجة التطبيقات، الويب، العاملين).
  3. لوحات معلومات البنية التحتية: مقاييس على مستوى العقدة (وحدة المعالجة المركزية، الذاكرة، القرص، الشبكة).
  4. لوحات معلومات الأعمال: الإيرادات، الطلبات، نشاط المستخدم.

الطريقة الحمراء للوحات معلومات الخدمة

لكل خدمة، قم بعرض:

  • Rate: الطلبات في الثانية
  • E الأخطاء: معدل الخطأ كنسبة مئوية
  • المدة: توزيع زمن الوصول (P50، P95، P99)

وهذا يوفر رؤية فورية لسلامة الخدمة دون التحميل الزائد المعرفي.


تتبع الأخطاء باستخدام Sentry

// sentry.config.ts
import * as Sentry from '@sentry/nestjs';

Sentry.init({
  dsn: process.env.SENTRY_DSN,
  environment: process.env.NODE_ENV,
  tracesSampleRate: 0.1,
  profilesSampleRate: 0.1,
  integrations: [
    Sentry.postgresIntegration(),
  ],
  beforeSend(event) {
    // Strip sensitive data
    if (event.request?.headers) {
      delete event.request.headers['authorization'];
      delete event.request.headers['cookie'];
    }
    return event;
  },
});

سنتري يوفر:

  • تجميع الأخطاء تلقائيًا وإلغاء البيانات المكررة
  • آثار المكدس مع خرائط المصدر
  • تتبع الإصدار (الذي أدى إلى نشر الخطأ)
  • مراقبة الأداء (تتبع المعاملات)

الأسئلة المتداولة

ما هي تكلفة مكدس المراقبة؟

الاستضافة الذاتية (Prometheus + Grafana + Loki): حوالي 50-100 دولار شهريًا لموارد الاستضافة. البدائل المُدارة: يبدأ سعر Datadog بـ 15 دولارًا أمريكيًا للمضيف شهريًا للبنية التحتية، بالإضافة إلى 0.10 دولارًا أمريكيًا للجيجابايت للسجلات. تبلغ تكلفة Sentry Cloud 26 دولارًا شهريًا لخطة الفريق. تتراوح الميزانية المبدئية المعقولة للأعمال التجارية الصغيرة بين 100 و200 دولار شهريًا.

ما الفرق بين المراقبة وإمكانية الملاحظة؟

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

كيف نتجنب إرهاق التنبيه؟

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

هل يجب علينا مراقبة نظام تخطيط موارد المؤسسات لدينا بشكل مختلف؟

تتمتع أنظمة تخطيط موارد المؤسسات (ERP) بمتطلبات مراقبة فريدة. بالإضافة إلى مقاييس الويب القياسية، قم بمراقبة: استخدام مجمع اتصال قاعدة البيانات، وعمق قائمة انتظار المهام في الخلفية، وحالة مزامنة التكامل (Shopify، وبوابات الدفع)، ووقت تنفيذ التقرير المجدول، وعدد جلسات المستخدم حسب الوحدة. توفر ECOSIRE مراقبة Odoo المُدارة كجزء من حزم الدعم الخاصة بنا.


ما يأتي بعد ذلك

المراقبة هي أعين وآذان البنية التحتية للإنتاج لديك. قم بإقرانه مع أتمتة CI/CD للحصول على ثقة النشر والتخطيط للتعافي من الكوارث من أجل المرونة. للحصول على خريطة طريق DevOps شاملة، راجع دليل DevOps للشركات الصغيرة.

اتصل بـ ECOSIRE لمراقبة الإعداد وخدمات البنية التحتية المُدارة.


تم النشر بواسطة ECOSIRE - لمساعدة الشركات على معرفة ما يهم في الإنتاج.

E

بقلم

ECOSIRE Research and Development Team

بناء منتجات رقمية بمستوى المؤسسات في ECOSIRE. مشاركة رؤى حول تكاملات Odoo وأتمتة التجارة الإلكترونية وحلول الأعمال المدعومة بالذكاء الاصطناعي.

المزيد من Performance & Scalability

تحسين أداء Power BI: DAX والنماذج والاستعلامات

قم بتحسين أداء تقرير Power BI من خلال تحليل DAX Studio، وإصلاحات أنماط DAX البطيئة، وتقليل حجم النموذج، وجداول التجميع، وضبط السعة.

تحسين أداء وكيل الذكاء الاصطناعي: السرعة والدقة وكفاءة التكلفة

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

اختبار ومراقبة وكلاء الذكاء الاصطناعي: هندسة الموثوقية للأنظمة المستقلة

الدليل الكامل لاختبار ومراقبة عوامل الذكاء الاصطناعي التي تغطي اختبار الوحدة، واختبار التكامل، والاختبار السلوكي، وقابلية الملاحظة، واستراتيجيات مراقبة الإنتاج.

تحسين أداء CDN: الدليل الكامل للتسليم العالمي الأسرع

قم بتحسين أداء CDN من خلال إستراتيجيات التخزين المؤقت وحوسبة الحافة وتحسين الصورة وبنيات CDN المتعددة لتوصيل المحتوى العالمي بشكل أسرع.

تحميل استراتيجيات الاختبار لتطبيقات الويب: ابحث عن نقاط التوقف قبل قيام المستخدمين بذلك

قم بتحميل تطبيقات الويب التجريبية باستخدام k6 وArtillery وLocust. يغطي تصميم الاختبار، ونمذجة حركة المرور، وخطوط الأساس للأداء، واستراتيجيات تفسير النتائج.

تحسين محركات البحث للجوال للتجارة الإلكترونية: دليل التحسين الكامل لعام 2026

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

الدردشة على الواتساب