Monitoring और alerting

Service down हो तो immediately पता चल जाना चाहिए — users से message आने का wait मत करो।

Monitoring optional नहीं है

Service चल तो रहा है पर सब ठीक है, ये तुम नहीं जान सकते। CPU full हो सकता है तुम्हें खबर नहीं, memory leak हो सकता है, disk fill हो सकता है — जब user कहे "use नहीं कर सकते" तब पता चले तो बहुत late होगा।

एक monitoring और alerting system set up कर दो, problem होने पर तुम users से पहले जान जाओ, यही सही operational approach है।

😰 आधी रात server down हो गया, कोई जानता ही नहीं

शुक्रवार को ऑफ़िस के बाद सर्वर चुपके से डाउन हो जाता है, सोमवार सुबह को भीड़ मिस्टर "काम नहीं कर रहा" के साथ आते हैं। तुम सर्वर देखो —— डिस्क भर गई, लॉग फ़ाइलें जंगली तरीके से बढ़ गईं, स्पेस ख़त्म। मॉनिटरिंग अलर्ट्स होते तो शुक्रवार को ही नोटिफ़िकेशन मिल जाती, पाँच मिनट में ठीक हो जाता।

Prometheus + Grafana + अलर्ट सूचना

Prometheus से metrics collect कर सकते हो, Grafana से visualization dashboard बना सकते हो, alert rules के साथ, CPU high हो, memory short हो, service down हो सब कुछ instant notification आएगा phone या email पर। Full solution open source free है, Docker से one-click deploy।

वन-क्लिक मॉनिटरिंग स्टैक डिप्लॉयमेंट

docker-compose से Prometheus, Grafana, Node Exporter सब एक साथ चला दें:

Deploy करो monitoring stack
# निगरानी निर्देशिका बनाएं
docker-compose.yml — मॉनिटरिंग स्टैक
services:
  prometheus:
    image: prom/prometheus:latest
    container_name: prometheus
    restart: always
    ports:
      - "9090:9090"
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
      - ./alert_rules.yml:/etc/prometheus/alert_rules.yml
      - prometheus_data:/prometheus
    command:
      - "--config.file=/etc/prometheus/prometheus.yml"
      - "--storage.tsdb.retention.time=30d"

  grafana:
    image: grafana/grafana:latest
    container_name: grafana
    restart: always
    ports:
      - "3001:3000"
    volumes:
      - grafana_data:/var/lib/grafana
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=your_secure_password

  node-exporter:
    image: prom/node-exporter:latest
    container_name: node-exporter
    restart: always
    ports:
      - "9100:9100"
    volumes:
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /:/rootfs:ro
    command:
      - "--path.procfs=/host/proc"
      - "--path.sysfs=/host/sys"
      - "--path.rootfs=/rootfs"

  alertmanager:
    image: prom/alertmanager:latest
    container_name: alertmanager
    restart: always
    ports:
      - "9093:9093"
    volumes:
      - ./alertmanager.yml:/etc/alertmanager/alertmanager.yml

volumes:
  prometheus_data:
  grafana_data:

Prometheus कॉन्फ़िगरेशन

prometheus.yml
global:

अलर्ट रूल्स

alert_rules.yml — अलर्ट नियम
groups:

अलर्ट नोटिफ़िकेशन कॉन्फ़िगरेशन

अलर्ट ट्रिगर होने के बाद तुम्हें कैसे नोटिफ़ाई करें? ईमेल भेज सकते हैं, या Ding Talk/Lark/Slack पर पुश करो:

alertmanager.yml — सूचना कॉन्फ़िगरेशन
global:
क्या यह tutorial तुम्हारे लिए useful रहा?