प्रोमेथियस मॉनिटरिंग: पूर्ण सेटअप और सर्वोत्तम प्रथाएँ

प्रोमेथियस के साथ मजबूत इन्फ्रास्ट्रक्चर मॉनिटरिंग सेटअप करें

Page content

Prometheus क्लाउड-नेटिव एप्लिकेशन्स और इन्फ्रास्ट्रक्चर के लिए मॉनिटरिंग का डी फैक्टो मानक बन गया है, जो मेट्रिक्स कलेक्शन, क्वेरी, और विज़ुअलाइज़ेशन टूल्स के साथ इंटीग्रेशन प्रदान करता है।

technical-diagram

Prometheus क्या है?

Prometheus एक ओपन-सोर्स मॉनिटरिंग और अलर्टिंग टूलकिट है जिसे 2012 में SoundCloud में विकसित किया गया था और अब यह Cloud Native Computing Foundation (CNCF) का एक ग्रेजुएटेड प्रोजेक्ट है। यह विशेष रूप से डायनामिक क्लाउड एन्वायर्नमेंट्स में रिलायबिलिटी और स्केलेबिलिटी के लिए डिज़ाइन किया गया है, जिससे यह माइक्रोसर्विसेज, कंटेनर्स, और क्यूबर्नेट्स क्लस्टर्स के लिए मॉनिटरिंग का गो-टू सॉल्यूशन बन गया है।

मुख्य विशेषताएँ

टाइम-सिरीज़ डेटाबेस: Prometheus सभी डेटा को टाइम-सिरीज़ के रूप में स्टोर करता है, जिन्हें मेट्रिक्स नाम और की-वैल्यू पेयर्स (लेबल) द्वारा पहचाना जाता है, जिससे फ्लेक्सिबल और पावरफुल क्वेरीिंग क्षमता मिलती है।

पुल-बेस्ड मॉडल: पारंपरिक पुश-बेस्ड सिस्टम्स के विपरीत, Prometheus कॉन्फ़िगर्ड टार्गेट्स से मेट्रिक्स को सक्रिय रूप से स्क्रैप करता है, जो इसे अधिक रिलायबिल और आसान कॉन्फ़िगरेशन बनाता है।

PromQL क्वेरी लैंग्वेज: एक पावरफुल फंक्शनल क्वेरी लैंग्वेज आपको अपने मेट्रिक्स डेटा को रियल-टाइम में स्लाइस और डाइस करने की अनुमति देती है, जिसमें एग्रीगेशन्स, ट्रांसफॉर्मेशन्स, और कॉम्प्लेक्स कैलकुलेशन्स शामिल हैं।

सर्विस डिस्कवरी: मॉनिटरिंग टार्गेट्स की ऑटोमैटिक डिस्कवरी विभिन्न मेकेनिज्म्स के माध्यम से, जिसमें क्यूबर्नेट्स, कंसुल, EC2, और स्टैटिक कॉन्फ़िगरेशन्स शामिल हैं।

नो एक्सटर्नल डिपेंडेंसिज: Prometheus एक सिंगल बाइनरी के रूप में ऑपरेट करता है जिसमें कोई आवश्यक एक्सटर्नल डिपेंडेंसिज नहीं हैं, जिससे डिप्लॉयमेंट सरल हो जाता है और ऑपरेशनल कॉम्प्लेक्सिटी कम होती है।

बिल्ट-इन अलर्टिंग: AlertManager Prometheus से अलर्ट्स हैंडल करता है, जिसमें डिडुप्लिकेशन, ग्रुपिंग, और नोटिफिकेशन चैनल्स जैसे ईमेल, PagerDuty, या Slack तक रूटिंग प्रदान करता है।

आर्किटेक्चर ओवरव्यू

Prometheus आर्किटेक्चर को समझना प्रभावी डिप्लॉयमेंट के लिए महत्वपूर्ण है। मुख्य घटकों में शामिल हैं:

  • Prometheus सर्वर: मेट्रिक्स को स्क्रैप और स्टोर करता है, रूल्स का मूल्यांकन करता है, और क्वेरीज़ सर्व करता है
  • क्लाइंट लाइब्रेरीज़: एप्लिकेशन कोड को इंस्ट्रुमेंट करने के लिए मेट्रिक्स एक्सपोज करने के लिए
  • एक्सपोर्टर्स: थर्ड-पार्टी सिस्टम्स को Prometheus फॉर्मेट में ब्रिज करने के लिए
  • AlertManager: अलर्ट्स और नोटिफिकेशन्स हैंडल करता है
  • Pushgateway: शॉर्ट-लाइव्ड जॉब्स के लिए मेट्रिक्स स्वीकार करता है जिन्हें स्क्रैप नहीं किया जा सकता

टिपिकल डेटा फ्लो: एप्लिकेशन्स मेट्रिक्स एंडपॉइंट्स एक्सपोज करते हैं → Prometheus इन एंडपॉइंट्स को स्क्रैप करता है → डेटा टाइम-सिरीज़ डेटाबेस में स्टोर किया जाता है → PromQL क्वेरीज़ डेटा को रिट्रीव और एनालाइज़ करते हैं → रूल्स के आधार पर अलर्ट्स जनरेट किए जाते हैं → AlertManager नोटिफिकेशन्स को प्रोसेस और रूट करता है।

Ubuntu 24.04 पर इन्फ्रास्ट्रक्चर डिप्लॉय करने के दौरान, Prometheus व्यापक मॉनिटरिंग के लिए एक उत्कृष्ट फाउंडेशन प्रदान करता है।

Ubuntu पर Prometheus का इंस्टॉलेशन

चलो एक लिनक्स सिस्टम पर Prometheus का इंस्टॉलेशन करने की प्रक्रिया देखते हैं। हम Ubuntu का उदाहरण लेंगे, लेकिन यह प्रक्रिया अन्य डिस्ट्रिब्यूशन्स के लिए भी समान है।

डाउनलोड और इंस्टॉलेशन

सबसे पहले, Prometheus के लिए एक डेडिकेटेड यूजर बनाएं:

sudo useradd --no-create-home --shell /bin/false prometheus

लेटेस्ट Prometheus रिलीज़ डाउनलोड करें:

cd /tmp
wget https://github.com/prometheus/prometheus/releases/download/v2.48.0/prometheus-2.48.0.linux-amd64.tar.gz
tar xvf prometheus-2.48.0.linux-amd64.tar.gz
cd prometheus-2.48.0.linux-amd64

बाइनरीज़ को कॉपी करें और डायरेक्टरीज़ बनाएं:

sudo cp prometheus /usr/local/bin/
sudo cp promtool /usr/local/bin/
sudo chown prometheus:prometheus /usr/local/bin/prometheus
sudo chown prometheus:prometheus /usr/local/bin/promtool

sudo mkdir /etc/prometheus
sudo mkdir /var/lib/prometheus
sudo chown prometheus:prometheus /etc/prometheus
sudo chown prometheus:prometheus /var/lib/prometheus

sudo cp -r consoles /etc/prometheus
sudo cp -r console_libraries /etc/prometheus
sudo cp prometheus.yml /etc/prometheus/prometheus.yml
sudo chown -R prometheus:prometheus /etc/prometheus

Ubuntu पर पैकेज मैनेजमेंट के लिए, हमारी व्यापक Ubuntu पैकेज मैनेजमेंट गाइड देखें।

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

/etc/prometheus/prometheus.yml संपादित करें:

global:
  scrape_interval: 15s
  evaluation_interval: 15s

alerting:
  alertmanagers:
    - static_configs:
        - targets: ['localhost:9093']

rule_files:
  - 'alert_rules.yml'

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']

  - job_name: 'node_exporter'
    static_configs:
      - targets: ['localhost:9100']

सिस्टमडी सर्विस बनाएं

/etc/systemd/system/prometheus.service बनाएं:

[Unit]
Description=Prometheus
Wants=network-online.target
After=network-online.target

[Service]
User=prometheus
Group=prometheus
Type=simple
ExecStart=/usr/local/bin/prometheus \
  --config.file=/etc/prometheus/prometheus.yml \
  --storage.tsdb.path=/var/lib/prometheus/ \
  --web.console.templates=/etc/prometheus/consoles \
  --web.console.libraries=/etc/prometheus/console_libraries \
  --storage.tsdb.retention.time=30d

[Install]
WantedBy=multi-user.target

Prometheus को स्टार्ट और इनेबल करें:

sudo systemctl daemon-reload
sudo systemctl start prometheus
sudo systemctl enable prometheus
sudo systemctl status prometheus

Prometheus वेब इंटरफेस तक http://localhost:9090 पर पहुंचें।

Node Exporter सेटअप

Node Exporter लिनक्स सिस्टम्स के लिए हार्डवेयर और OS मेट्रिक्स एक्सपोज करता है। अपने सर्वर्स की मॉनिटरिंग के लिए इसे इंस्टॉल करें:

cd /tmp
wget https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz
tar xvf node_exporter-1.7.0.linux-amd64.tar.gz
sudo cp node_exporter-1.7.0.linux-amd64/node_exporter /usr/local/bin/
sudo chown prometheus:prometheus /usr/local/bin/node_exporter

सिस्टमडी सर्विस /etc/systemd/system/node_exporter.service बनाएं:

[Unit]
Description=Node Exporter
After=network.target

[Service]
User=prometheus
Group=prometheus
Type=simple
ExecStart=/usr/local/bin/node_exporter

[Install]
WantedBy=multi-user.target

Node Exporter को स्टार्ट करें:

sudo systemctl daemon-reload
sudo systemctl start node_exporter
sudo systemctl enable node_exporter

Node Exporter अब पोर्ट 9100 पर मेट्रिक्स एक्सपोज करता है।

PromQL को समझना

PromQL (Prometheus Query Language) Prometheus डेटा को क्वेरी करने का हृदय है। यहाँ आवश्यक क्वेरी पैटर्न हैं:

बेसिक क्वेरीज़

एक मेट्रिक के लिए सभी टाइम-सिरीज़ सिलेक्ट करें:

node_cpu_seconds_total

लेबल द्वारा फिल्टर करें:

node_cpu_seconds_total{mode="idle"}

मल्टीपल लेबल फिल्टर:

node_cpu_seconds_total{mode="idle",cpu="0"}

रेंज वेक्टर्स और एग्रीगेशन्स

समय पर दर कैलकुलेट करें:

rate(node_cpu_seconds_total{mode="idle"}[5m])

सभी CPUs पर सम:

sum(rate(node_cpu_seconds_total{mode="idle"}[5m]))

लेबल द्वारा ग्रुप करें:

sum by (mode) (rate(node_cpu_seconds_total[5m]))

प्रैक्टिकल उदाहरण

CPU उपयोग प्रतिशत:

100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)

मेमोरी उपयोग:

(node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes) / node_memory_MemTotal_bytes * 100

डिस्क उपयोग:

(node_filesystem_size_bytes - node_filesystem_avail_bytes) / node_filesystem_size_bytes * 100

नेटवर्क ट्रैफिक दर:

rate(node_network_receive_bytes_total[5m])

Docker डिप्लॉयमेंट

Docker कंटेनर्स में Prometheus चलाना फ्लेक्सिबिलिटी और आसान मैनेजमेंट प्रदान करता है:

docker-compose.yml बनाएं:

version: '3.8'

services:
  prometheus:
    image: prom/prometheus:latest
    container_name: prometheus
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
      - prometheus_data:/prometheus
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
      - '--storage.tsdb.path=/prometheus'
      - '--storage.tsdb.retention.time=30d'
    ports:
      - "9090:9090"
    restart: unless-stopped

  node_exporter:
    image: prom/node-exporter:latest
    container_name: node_exporter
    command:
      - '--path.rootfs=/host'
    volumes:
      - '/:/host:ro,rslave'
    ports:
      - "9100:9100"
    restart: unless-stopped

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

volumes:
  prometheus_data:
  alertmanager_data:

स्टैक स्टार्ट करें:

docker-compose up -d

Kubernetes मॉनिटरिंग

Prometheus Kubernetes क्लस्टर्स की मॉनिटरिंग में उत्कृष्ट है। kube-prometheus-stack Helm चार्ट एक पूर्ण मॉनिटरिंग सॉल्यूशन प्रदान करता है।

Helm का उपयोग करके इंस्टॉल करें:

helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
helm install prometheus prometheus-community/kube-prometheus-stack

यह इंस्टॉल करता है:

  • Prometheus ऑपरेटर
  • Prometheus इंस्टांस
  • AlertManager
  • Grafana
  • Node Exporter
  • kube-state-metrics
  • प्री-कॉन्फ़िगर्ड डैशबोर्ड्स और अलर्ट्स

Grafana तक पहुंचें:

kubectl port-forward svc/prometheus-grafana 3000:80

डिफ़ॉल्ट क्रेडेंशियल्स: admin/prom-operator

विभिन्न Kubernetes डिस्ट्रिब्यूशन्स के लिए, डिप्लॉयमेंट प्रक्रिया समान है जिसमें प्लेटफॉर्म-स्पेसिफिक फीचर्स के लिए छोटे समायोजनों की आवश्यकता होती है।

अलर्ट सेटअप

AlertManager Prometheus द्वारा भेजे गए अलर्ट्स को संभालता है। अलर्ट नियमों और सूचना चैनलों का कॉन्फ़िगरेशन करें।

अलर्ट नियम

/etc/prometheus/alert_rules.yml फाइल बनाएं:

groups:
  - name: system_alerts
    interval: 30s
    rules:
      - alert: HighCPUUsage
        expr: 100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80
        for: 5m
        labels:
          severity: warning
        annotations:
          summary: "{{ $labels.instance }} पर उच्च सीपीयू उपयोग"
          description: "सीपीयू उपयोग 80% से अधिक है (वर्तमान मान: {{ $value }}%)"

      - alert: HighMemoryUsage
        expr: (node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes) / node_memory_MemTotal_bytes * 100 > 85
        for: 5m
        labels:
          severity: warning
        annotations:
          summary: "{{ $labels.instance }} पर उच्च मेमोरी उपयोग"
          description: "मेमोरी उपयोग 85% से अधिक है (वर्तमान मान: {{ $value }}%)"

      - alert: DiskSpaceLow
        expr: (node_filesystem_avail_bytes / node_filesystem_size_bytes) * 100 < 15
        for: 10m
        labels:
          severity: critical
        annotations:
          summary: "{{ $labels.instance }} पर कम डिस्क स्पेस"
          description: "{{ $labels.mountpoint }} पर उपलब्ध डिस्क स्पेस 15% से कम है"

      - alert: InstanceDown
        expr: up == 0
        for: 2m
        labels:
          severity: critical
        annotations:
          summary: "इंस्टेंस {{ $labels.instance }} डाउन है"
          description: "{{ $labels.job }} इंस्टेंस {{ $labels.instance }} 2 मिनट से अधिक समय से डाउन है"

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

/etc/prometheus/alertmanager.yml फाइल बनाएं:

global:
  resolve_timeout: 5m
  smtp_smarthost: 'smtp.gmail.com:587'
  smtp_from: 'alerts@example.com'
  smtp_auth_username: 'alerts@example.com'
  smtp_auth_password: 'your-password'

route:
  group_by: ['alertname', 'cluster', 'service']
  group_wait: 10s
  group_interval: 10s
  repeat_interval: 12h
  receiver: 'team-email'
  routes:
    - match:
        severity: critical
      receiver: 'team-pagerduty'
    - match:
        severity: warning
      receiver: 'team-slack'

receivers:
  - name: 'team-email'
    email_configs:
      - to: 'team@example.com'
        headers:
          Subject: '{{ .GroupLabels.alertname }}: {{ .Status | toUpper }}'

  - name: 'team-slack'
    slack_configs:
      - api_url: 'https://hooks.slack.com/services/YOUR/SLACK/WEBHOOK'
        channel: '#alerts'
        title: 'अलर्ट: {{ .GroupLabels.alertname }}'
        text: '{{ range .Alerts }}{{ .Annotations.description }}{{ end }}'

  - name: 'team-pagerduty'
    pagerduty_configs:
      - service_key: 'your-pagerduty-key'

ग्राफाना के साथ इंटीग्रेशन

हालांकि Prometheus के पास बेसिक वेब इंटरफेस है, ग्राफाना बेहतर विज़ुअलाइज़ेशन क्षमताएं प्रदान करता है

प्रोमेथियस को डेटा स्रोत के रूप में जोड़ें

  1. ग्राफाना खोलें और कॉन्फ़िगरेशन → डेटा स्रोत्स पर जाएं
  2. “डेटा स्रोत जोड़ें” पर क्लिक करें
  3. “प्रोमेथियस” चुनें
  4. URL को http://localhost:9090 (या आपका प्रोमेथियस सर्वर) सेट करें
  5. “सेव और टेस्ट” पर क्लिक करें

लोकप्रिय डैशबोर्ड आईडी

grafana.com से प्री-बिल्ट डैशबोर्ड इम्पोर्ट करें:

  • Node Exporter Full (ID: 1860): व्यापक लिनक्स मेट्रिक्स
  • Kubernetes Cluster Monitoring (ID: 7249): K8s ओवरव्यू
  • Docker Container Monitoring (ID: 193): कंटेनर मेट्रिक्स
  • Prometheus Stats (ID: 2): प्रोमेथियस इंटरनल मेट्रिक्स

कस्टम डैशबोर्ड बनाना

PromQL क्वेरीज़ का उपयोग करके पैनल बनाएं:

{
  "title": "सीपीयू उपयोग",
  "targets": [{
    "expr": "100 - (avg(rate(node_cpu_seconds_total{mode=\"idle\"}[5m])) * 100)"
  }]
}

लोकप्रिय एक्सपोर्टर्स

प्रोमेथियस मॉनिटरिंग को विशेषज्ञ एक्सपोर्टर्स के साथ बढ़ाएं:

ब्लैकबॉक्स एक्सपोर्टर

HTTP, HTTPS, DNS, TCP, और ICMP के माध्यम से एंडपॉइंट्स को प्रोब करें:

scrape_configs:
  - job_name: 'blackbox'
    metrics_path: /probe
    params:
      module: [http_2xx]
    static_configs:
      - targets:
          - https://example.com
          - https://api.example.com
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: localhost:9115

डेटाबेस एक्सपोर्टर्स

  • mysqld_exporter: MySQL/MariaDB मेट्रिक्स
  • postgres_exporter: PostgreSQL मेट्रिक्स
  • mongodb_exporter: MongoDB मेट्रिक्स
  • redis_exporter: Redis मेट्रिक्स

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

  • nginx_exporter: NGINX वेब सर्वर मेट्रिक्स
  • apache_exporter: Apache HTTP सर्वर मेट्रिक्स
  • haproxy_exporter: HAProxy लोड बैलेंसर मेट्रिक्स

क्लाउड एक्सपोर्टर्स

  • cloudwatch_exporter: AWS CloudWatch मेट्रिक्स
  • stackdriver_exporter: Google Cloud मेट्रिक्स
  • azure_exporter: Azure Monitor मेट्रिक्स

सर्वोत्तम प्रथाएं

डेटा रिटेंशन

अपने आवश्यकताओं के अनुसार उपयुक्त रिटेंशन कॉन्फ़िगर करें:

--storage.tsdb.retention.time=30d
--storage.tsdb.retention.size=50GB

रिकॉर्डिंग नियम

अक्सर क्वेरी किए जाने वाले एक्सप्रेशन को पूर्व-कैलकुलेट करें:

groups:
  - name: example_rules
    interval: 30s
    rules:
      - record: job:node_cpu_utilization:avg
        expr: 100 - (avg by (job) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)

लेबल प्रबंधन

  • लेबल कार्डिनालिटी को कम रखें
  • सुसंगत नामकरण परंपराओं का उपयोग करें
  • उच्च-कार्डिनालिटी लेबल (यूजर आईडी, टाइमस्टैम्प) से बचें

सुरक्षा

  • ऑथेंटिकेशन और HTTPS को सक्रिय करें
  • प्रोमेथियस API तक पहुंच को सीमित करें
  • क्यूबर्नेट्स में नेटवर्क पॉलिसी का उपयोग करें
  • संवेदनशील मेट्रिक्स के लिए RBAC लागू करें

हाई अवेलेबिलिटी

  • कई प्रोमेथियस इंस्टेंस चलाएं
  • लंबे समय तक स्टोरेज के लिए Thanos या Cortex का उपयोग करें
  • हायरार्किकल सेटअप के लिए फेडरेशन लागू करें

सामान्य समस्याओं का समाधान

उच्च मेमोरी उपयोग

  • स्क्रैप फ्रीक्वेंसी कम करें
  • रिटेंशन अवधि कम करें
  • PromQL क्वेरीज़ को ऑप्टिमाइज़ करें
  • रिकॉर्डिंग नियम लागू करें

गायब मेट्रिक्स

  • /targets में टारगेट स्टेटस की जांच करें
  • नेटवर्क कनेक्टिविटी की पुष्टि करें
  • स्क्रैप कॉन्फ़िगरेशन की जांच करें
  • एक्सपोर्टर लॉग्स की जांच करें

धीमी क्वेरीज़

  • जटिल एग्रीगेशन के लिए रिकॉर्डिंग नियम का उपयोग करें
  • लेबल फिल्टर को ऑप्टिमाइज़ करें
  • टाइम रेंज को कम करें
  • रिमोट स्टोरेज का उपयोग करने के लिए इंडेक्स जोड़ें

प्रदर्शन ऑप्टिमाइज़ेशन

क्वेरी ऑप्टिमाइज़ेशन

# बुरा: उच्च कार्डिनालिटी
sum(rate(http_requests_total[5m]))

# अच्छा: प्रासंगिक लेबल द्वारा समूह बनाएं
sum by (status, method) (rate(http_requests_total[5m]))

रिसोर्स लिमिट्स

क्यूबर्नेट्स डिप्लॉयमेंट के लिए:

resources:
  requests:
    memory: "2Gi"
    cpu: "1000m"
  limits:
    memory: "4Gi"
    cpu: "2000m"

निष्कर्ष

प्रोमेथियस आधुनिक इन्फ्रास्ट्रक्चर के लिए एक मजबूत, स्केलेबल मॉनिटरिंग समाधान प्रदान करता है। इसकी पुल-आधारित आर्किटेक्चर, शक्तिशाली क्वेरी लैंग्वेज, और एक्सपोर्टर्स का विस्तृत पारिस्थितिकी इसे बेर-मेटल सर्वर से लेकर जटिल क्यूबर्नेट्स क्लस्टर तक सब कुछ मॉनिटर करने के लिए आदर्श बनाता है।

प्रोमेथियस को विज़ुअलाइज़ेशन के लिए ग्राफाना और सूचनाओं के लिए AlertManager के साथ मिलाकर, आप एक व्यापक ऑब्ज़र्वेबिलिटी प्लेटफॉर्म बनाते हैं जो एंटरप्राइज़-स्केल मॉनिटरिंग आवश्यकताओं को संभालने में सक्षम है। सक्रिय समुदाय और CNCF का समर्थन निरंतर विकास और समर्थन सुनिश्चित करता है।

बुनियादी मेट्रिक्स संग्रह से शुरू करें, धीरे-धीरे अपने विशिष्ट सेवाओं के लिए एक्सपोर्टर्स जोड़ें, और वास्तविक अनुभव के आधार पर अपने अलर्ट नियमों को परिष्कृत करें। प्रोमेथियस आपकी इन्फ्रास्ट्रक्चर के साथ स्केल होता है, सिंगल-सर्वर डिप्लॉयमेंट से लेकर मल्टी-डेटासेंटर मॉनिटरिंग आर्किटेक्चर तक।

संबंधित संसाधन

बाहरी संदर्भ