Skip to main content

Production Monitoring and Alerting: The Complete Setup Guide

Set up production monitoring and alerting with Prometheus, Grafana, and Sentry. Covers metrics, logs, traces, alert policies, and incident response workflows.

E
ECOSIRE Research and Development Team
|16 मार्च 20268 मिनट पढ़ें1.6k शब्द|

औसत उत्पादन घटना की लागत प्रति मिनट $5,600 है। परिपक्व निगरानी वाली कंपनियां 5 मिनट से कम समय में समस्याओं का पता लगा लेती हैं, जबकि बिना निगरानी वाली कंपनियों को पता लगाने में औसतन 197 मिनट लगते हैं --- एक मामूली चूक और ग्राहक खोने वाली आपदा के बीच का अंतर।

हमारी प्रदर्शन और स्केलेबिलिटी श्रृंखला का हिस्सा

पूरी गाइड पढ़ें

औसत उत्पादन घटना की लागत प्रति मिनट $5,600 है। परिपक्व निगरानी वाली कंपनियां 5 मिनट से कम समय में समस्याओं का पता लगा लेती हैं, जबकि बिना निगरानी वाली कंपनियों को पता लगाने में औसतन 197 मिनट लगते हैं --- एक मामूली चूक और ग्राहक खोने वाली आपदा के बीच का अंतर।

यह मार्गदर्शिका शुरू से अंत तक उत्पादन निगरानी सेटअप को कवर करती है: क्या मापना है, इसे कैसे एकत्र करना है, इसे कहां देखना है और कब सचेत करना है।

मुख्य बातें

  • अवलोकन के तीन स्तंभ (मेट्रिक्स, लॉग, ट्रेस) अलग-अलग उद्देश्यों की पूर्ति करते हैं और तीनों आवश्यक हैं
  • लक्षणों पर अलर्ट (त्रुटि दर, विलंबता) शोर को 80% तक कम करने का कारण नहीं बनता (सीपीयू उपयोग)
  • प्रत्येक अलर्ट से जुड़ी रनबुक, कॉल पर चाहे कोई भी हो, लगातार घटना प्रतिक्रिया सुनिश्चित करती है
  • 5 आवश्यक अलर्ट से शुरुआत करें और आधार रेखा समझने पर ही विस्तार करें

अवलोकनशीलता के तीन स्तंभ

मेट्रिक्स

समय के साथ संख्यात्मक माप का नमूना लिया गया। मेट्रिक्स उत्तर "अभी क्या हो रहा है?"

एप्लिकेशन मेट्रिक्स:

  • अनुरोध दर (प्रति सेकंड अनुरोध)
  • त्रुटि दर (प्रति सेकंड 5xx प्रतिक्रियाएँ)
  • विलंबता वितरण (P50, P95, P99)
  • सक्रिय सत्र/समवर्ती उपयोगकर्ता

इंफ्रास्ट्रक्चर मेट्रिक्स:

  • प्रति सेवा सीपीयू उपयोग
  • मेमोरी उपयोग और कचरा संग्रहण
  • डिस्क I/O और उपलब्ध स्थान
  • नेटवर्क थ्रूपुट

बिजनेस मेट्रिक्स:

  • प्रति मिनट ऑर्डर
  • कार्ट परित्याग दर
  • प्रति घंटा राजस्व
  • एपीआई एंडपॉइंट द्वारा कॉल करता है

लॉग

अलग-अलग घटनाओं के टाइमस्टैम्प्ड, संरचित रिकॉर्ड। लॉग उत्तर देते हैं "ऐसा क्यों हुआ?"

{
  "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 (2ms) से Next.js फ्रंटएंड (50ms) से NestJS API (120ms) से PostgreSQL (45ms) से स्ट्राइप API (800ms) से ईमेल सेवा (200ms)

ट्रेस किए बिना, आप देखते हैं "चेकआउट में 1.2 सेकंड लगते हैं।" ट्रेसिंग के साथ, आप देखते हैं "स्ट्राइप एपीआई चेकआउट विलंबता का 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 बजे सोचने की ज़रूरत नहीं होनी चाहिए
अलर्ट कार्रवाई योग्य होना चाहिएयदि कोई इस पर कार्यवाही नहीं कर सकता तो यह शोर है, चेतावनी नहीं
2 सप्ताह के बाद थ्रेशोल्ड ट्यून करेंप्रारंभिक सीमाएँ अनुमान हैं; आधारभूत आधार पर समायोजित करें
चेतावनी थकान की मासिक समीक्षा करेंयदि अलर्ट बिना किसी कार्रवाई के प्रतिदिन सक्रिय होते हैं, तो सीमाएँ बढ़ाएँ या उन्हें हटा दें

ग्राफाना डैशबोर्ड

डैशबोर्ड पदानुक्रम

  1. अवलोकन डैशबोर्ड: सभी सेवाओं में उच्च-स्तरीय स्वास्थ्य। यह पहली स्क्रीन है जिसे कोई भी किसी घटना के दौरान देखता है।
  2. सेवा डैशबोर्ड: प्रत्येक सेवा (एपीआई, वेब, कर्मचारी) के लिए विस्तृत मेट्रिक्स।
  3. इंफ्रास्ट्रक्चर डैशबोर्ड: नोड-स्तरीय मेट्रिक्स (सीपीयू, मेमोरी, डिस्क, नेटवर्क)।
  4. व्यावसायिक डैशबोर्ड: राजस्व, ऑर्डर, उपयोगकर्ता गतिविधि।

सेवा डैशबोर्ड के लिए लाल विधि

प्रत्येक सेवा के लिए, प्रदर्शित करें:

  • आरएट: अनुरोध प्रति सेकंड
  • ईत्रुटि: प्रतिशत के रूप में त्रुटि दर
  • डीउरेशन: विलंबता वितरण (पी50, पी95, पी99)

यह संज्ञानात्मक अधिभार के बिना सेवा स्वास्थ्य में तत्काल दृश्यता प्रदान करता है।


संतरी के साथ ट्रैकिंग में त्रुटि

// 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;
  },
});

संतरी प्रदान करता है:

  • स्वचालित त्रुटि समूहन और डिडुप्लीकेशन
  • स्रोत मानचित्रों के साथ ढेर के निशान
  • रिलीज़ ट्रैकिंग (जिस परिनियोजन से त्रुटि उत्पन्न हुई)
  • प्रदर्शन की निगरानी (लेन-देन के निशान)

अक्सर पूछे जाने वाले प्रश्न

एक निगरानी स्टैक की लागत कितनी है?

स्व-होस्टेड (प्रोमेथियस + ग्राफाना + लोकी): होस्टिंग संसाधनों के लिए लगभग $50-100/माह। प्रबंधित विकल्प: डेटाडॉग बुनियादी ढांचे के लिए $15/होस्ट/माह से शुरू होता है, साथ ही लॉग के लिए $0.10/जीबी से शुरू होता है। टीम योजना के लिए सेंट्री क्लाउड $26/माह है। एक छोटे व्यवसाय के लिए एक उचित प्रारंभिक बजट कुल $100-200/माह है।

निगरानी और अवलोकन के बीच क्या अंतर है?

मॉनिटरिंग आपको बताती है कि कब कुछ गलत है। अवलोकनशीलता आपको बताती है कि क्यों। मॉनिटरिंग ज्ञात विफलता मोड के लिए पूर्वनिर्धारित डैशबोर्ड और अलर्ट के बारे में है। अवलोकनशीलता मेट्रिक्स, लॉग और ट्रेस का उपयोग करके आपके सिस्टम के व्यवहार के बारे में मनमाने ढंग से प्रश्न पूछने की क्षमता के बारे में है। आपको दोनों की आवश्यकता है, लेकिन निगरानी इसका आधार है।

हम सतर्क थकान से कैसे बचें?

तीन नियम: (1) प्रत्येक अलर्ट के लिए मानवीय कार्रवाई की आवश्यकता होनी चाहिए, (2) सैद्धांतिक आदर्शों के बजाय वास्तविक आधार रेखाओं के आधार पर सीमाएँ निर्धारित करें, (3) अलर्ट की मासिक समीक्षा करें और ट्यून करें। यदि कोई अलर्ट बिना कार्रवाई की आवश्यकता के प्रति सप्ताह एक से अधिक बार सक्रिय होता है, तो या तो अंतर्निहित समस्या को ठीक करें या सीमा बढ़ाएँ। अलर्ट थकान से पीड़ित टीमें महत्वपूर्ण अलर्ट सहित सभी अलर्ट को नजरअंदाज कर देती हैं।

क्या हमें अपने ईआरपी सिस्टम की निगरानी अलग तरीके से करनी चाहिए?

ईआरपी सिस्टम की अद्वितीय निगरानी आवश्यकताएँ होती हैं। मानक वेब मेट्रिक्स से परे, मॉनिटर: डेटाबेस कनेक्शन पूल उपयोग, पृष्ठभूमि नौकरी कतार गहराई, एकीकरण सिंक स्थिति (शॉपिफाई, भुगतान गेटवे), निर्धारित रिपोर्ट निष्पादन समय, और मॉड्यूल द्वारा उपयोगकर्ता सत्र गणना। ECOSIRE हमारे समर्थन पैकेज के हिस्से के रूप में प्रबंधित ओडू मॉनिटरिंग प्रदान करता है।


आगे क्या आता है

निगरानी आपके उत्पादन बुनियादी ढांचे की आंखें और कान हैं। तैनाती के आत्मविश्वास के लिए इसे CI/CD स्वचालन और लचीलेपन के लिए आपदा पुनर्प्राप्ति योजना के साथ जोड़ें। व्यापक DevOps रोडमैप के लिए, हमारा छोटे व्यवसायों के लिए DevOps गाइड देखें।

सेटअप और प्रबंधित बुनियादी ढांचा सेवाओं की निगरानी के लिए ECOSIRE से संपर्क करें।


ECOSIRE द्वारा प्रकाशित - व्यवसायों को यह देखने में मदद करना कि उत्पादन में क्या मायने रखता है।

शेयर करें:
E

लेखक

ECOSIRE Team

तकनीकी लेखन

ECOSIRE की तकनीकी लेखन टीम Odoo ERP, Shopify ई-कॉमर्स, AI एजेंट, Power BI एनालिटिक्स, GoHighLevel ऑटोमेशन और एंटरप्राइज़ सॉफ़्टवेयर की सर्वोत्तम प्रथाओं पर लिखती है। हमारी गाइड व्यवसायों को सोच-समझकर तकनीकी निर्णय लेने में मदद करती हैं।

ECOSIRE

ECOSIRE के साथ अपना व्यवसाय बढ़ाएं

ईआरपी, ईकॉमर्स, एआई, एनालिटिक्स और ऑटोमेशन में एंटरप्राइज समाधान।

प्रदर्शन और स्केलेबिलिटी से और अधिक

वेबहुक डिबगिंग और मॉनिटरिंग: संपूर्ण समस्या निवारण मार्गदर्शिका

विफलता पैटर्न, डिबगिंग टूल, पुनः प्रयास रणनीतियाँ, मॉनिटरिंग डैशबोर्ड और सुरक्षा सर्वोत्तम प्रथाओं को कवर करने वाली इस संपूर्ण मार्गदर्शिका के साथ वेबहुक डिबगिंग में महारत हासिल करें।

k6 Load Testing: Stress-Test Your APIs Before Launch

Master k6 load testing for Node.js APIs. Covers virtual user ramp-ups, thresholds, scenarios, HTTP/2, WebSocket testing, Grafana dashboards, and CI integration patterns.

Nginx Production Configuration: SSL, Caching, and Security

Nginx production configuration guide: SSL termination, HTTP/2, caching headers, security headers, rate limiting, reverse proxy setup, and Cloudflare integration patterns.

Odoo Performance Tuning: PostgreSQL and Server Optimization

Expert guide to Odoo 19 performance tuning. Covers PostgreSQL configuration, indexing, query optimization, Nginx caching, and server sizing for enterprise deployments.

Testing and Monitoring AI Agents in Production

A complete guide to testing and monitoring AI agents in production environments. Covers evaluation frameworks, observability, drift detection, and incident response for OpenClaw deployments.

Compliance Monitoring Agents with OpenClaw

Deploy OpenClaw AI agents for continuous compliance monitoring. Automate regulatory checks, policy enforcement, audit trail generation, and compliance reporting.