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

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

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

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

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

جزء من سلسلة الأداء وقابلية التوسع

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

يكلف متوسط ​​حادث الإنتاج 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 Team

الكتابة التقنية

يغطي فريق الكتابة التقنية في ECOSIRE موضوعات Odoo ERP والتجارة الإلكترونية عبر Shopify ووكلاء الذكاء الاصطناعي وتحليلات Power BI والأتمتة عبر GoHighLevel وأفضل ممارسات برمجيات المؤسسات. تساعد أدلتنا الشركات على اتخاذ قرارات تقنية مدروسة.

ECOSIRE

قم بتنمية أعمالك مع ECOSIRE

حلول المؤسسات عبر تخطيط موارد المؤسسات (ERP) والتجارة الإلكترونية والذكاء الاصطناعي والتحليلات والأتمتة.

المزيد من الأداء وقابلية التوسع

تصحيح أخطاء Webhook ومراقبتها: الدليل الكامل لاستكشاف الأخطاء وإصلاحها

أتقن تصحيح أخطاء خطاف الويب باستخدام هذا الدليل الكامل الذي يغطي أنماط الفشل وأدوات تصحيح الأخطاء وإستراتيجيات إعادة المحاولة ومراقبة لوحات المعلومات وأفضل ممارسات الأمان.

اختبار التحميل k6: اختبار الضغط على واجهات برمجة التطبيقات الخاصة بك قبل الإطلاق

اختبار التحميل الرئيسي لـ k6 لواجهات برمجة تطبيقات Node.js. يغطي عمليات تكثيف المستخدم الافتراضي، والعتبات، والسيناريوهات، وHTTP/2، واختبار WebSocket، ولوحات معلومات Grafana، وأنماط تكامل CI.

تكوين إنتاج Nginx: SSL والتخزين المؤقت والأمان

دليل تكوين إنتاج Nginx: إنهاء SSL، HTTP/2، رؤوس التخزين المؤقت، رؤوس الأمان، تحديد المعدل، إعداد الوكيل العكسي، وأنماط تكامل Cloudflare.

ضبط أداء Odoo: تحسين PostgreSQL والخادم

دليل الخبراء لضبط أداء Odoo 19. يغطي تكوين PostgreSQL، والفهرسة، وتحسين الاستعلام، والتخزين المؤقت لـ Nginx، وحجم الخادم لعمليات النشر المؤسسية.

اختبار ومراقبة وكلاء الذكاء الاصطناعي في الإنتاج

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

وكلاء مراقبة الامتثال مع OpenClaw

قم بنشر وكلاء OpenClaw AI لمراقبة الامتثال المستمر. أتمتة عمليات الفحص التنظيمي، وإنفاذ السياسات، وإنشاء سجلات التدقيق، وإعداد تقارير الامتثال.