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 है।
शुक्रवार को ऑफ़िस के बाद सर्वर चुपके से डाउन हो जाता है, सोमवार सुबह को भीड़ मिस्टर "काम नहीं कर रहा" के साथ आते हैं। तुम सर्वर देखो —— डिस्क भर गई, लॉग फ़ाइलें जंगली तरीके से बढ़ गईं, स्पेस ख़त्म। मॉनिटरिंग अलर्ट्स होते तो शुक्रवार को ही नोटिफ़िकेशन मिल जाती, पाँच मिनट में ठीक हो जाता।
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 सब एक साथ चला दें:
# निगरानी निर्देशिका बनाएं
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 कॉन्फ़िगरेशन
global:
अलर्ट रूल्स
groups:
अलर्ट नोटिफ़िकेशन कॉन्फ़िगरेशन
अलर्ट ट्रिगर होने के बाद तुम्हें कैसे नोटिफ़ाई करें? ईमेल भेज सकते हैं, या Ding Talk/Lark/Slack पर पुश करो:
global: