
CPRA एक उच्च-प्रदर्शन बुनियादी ढांचा निगरानी प्रणाली है जो बड़े पैमाने पर माइक्रोसर्विस आर्किटेक्चर का प्रबंधन करने वाली प्लेटफ़ॉर्म टीमों के लिए डिज़ाइन की गई है। Entity-Component-System (ECS) आर्किटेक्चर और कतारबद्ध सिद्धांतों पर निर्मित, CPRA SLO लक्ष्यों को पूरा करने के लिए स्वचालित वर्कर पूल स्केलिंग के साथ 1,000,000+ समवर्ती स्वास्थ्य जांच संभालता है।
स्वचालित सुधार और गतिशील कार्यकर्ता स्केलिंग के साथ लाखों सेवाओं की समवर्ती निगरानी करें।
CPRA एक उच्च-प्रदर्शन बुनियादी ढांचा निगरानी प्रणाली है जो बड़े पैमाने पर माइक्रोसर्विस आर्किटेक्चर का प्रबंधन करने वाली प्लेटफॉर्म टीमों के लिए डिज़ाइन की गई है। एंटिटी-कॉम्पोनेंट-सिस्टम (ECS) आर्किटेक्चर और कतारबद्ध सिद्धांतों पर निर्मित, CPRA SLO लक्ष्यों को पूरा करने के लिए स्वचालित कार्यकर्ता पूल स्केलिंग के साथ 1,000,000+ समवर्ती स्वास्थ्य जांचों को संभालता है।
CPRA का उपयोग करें जब आपको आवश्यकता हो:
| मीट्रिक | मान |
|---|---|
| अधिकतम समवर्ती मॉनिटर | 1,000,000+ |
| थ्रूपुट | 10,000+ जांच/सेकंड/पाइपलाइन |
| विलंबता (P95) | < 100ms (SLO के माध्यम से कॉन्फ़िगर करने योग्य) |
| प्रति मॉनिटर मेमोरी | ~100 बाइट्स |
| कुल मेमोरी (1M मॉनिटर) | ~100 MB + कार्यकर्ता पूल ओवरहेड |
| कार्यकर्ता स्केलिंग | गतिशील (M/M/c आधारित) |
विस्तृत बेंचमार्क और विश्लेषण के लिए आर्किटेक्चर अवलोकन देखें।
CPRA एंटिटी-कॉम्पोनेंट-सिस्टम सिद्धांतों पर निर्मित तीन-पाइपलाइन आर्किटेक्चर का उपयोग करता है:


प्रत्येक पाइपलाइन अपनी स्वयं की कतार और गतिशील रूप से स्केल किए गए कार्यकर्ता पूल के साथ स्वतंत्र रूप से संचालित होती है, जो सक्षम करती है:

कतार कार्यान्वयन:
गतिशील कार्यकर्ता पूल:
व्यापक आर्किटेक्चर स्पष्टीकरण के लिए, आर्किटेक्चर अवलोकन देखें।
# आवश्यक शर्तें: Go 1.25 या बाद का
go version # go1.25 या उच्चतर दिखाना चाहिए
# स्रोत से बनाएं
git clone https://github.com/ziad/cpra.git
cd cpra
go build .
# उदाहरण कॉन्फ़िगरेशन के साथ चलाएं
./cpra --yaml mock-servers/test_10k.yaml
अपेक्षित आउटपुट:
Starting CPRA Optimized Controller for 1M Monitors
Profiling server listening at http://localhost:6060/debug/pprof/
Loading monitors from mock-servers/test_10k.yaml...
Monitor loading completed in 1.2s
[INFO] Controller started successfully
[INFO] Pulse pipeline processing 10,000 monitors
[INFO] Worker pool scaled to 143 workers (target SLO: 100ms)
रिपॉजिटरी क्लोन करें:
git clone https://github.com/ziad/cpra.git
cd cpra
निर्भरताएं डाउनलोड करें:
go mod download
एप्लिकेशन बनाएं:
go build .
स्थापना सत्यापित करें:
./cpra --help
Docker इमेज बनाएं:
docker build -f docker/Dockerfile -t cpra:latest .
कंटेनर चलाएं:
docker run -it --rm \
-v $(pwd)/my-monitors.yaml:/app/monitors.yaml \
cpra:latest \
./cpra --yaml monitors.yaml
स्वास्थ्य जांच को परिभाषित करने के लिए एक monitors.yaml फ़ाइल बनाएं:
monitors:
- name: "my-service-health-check"
pulse_check:
type: http
interval: 30s
timeout: 5s
max_failures: 3
config:
method: GET
url: http://my-service.example.com/health
retries: 2
intervention:
action: docker
config:
container: my-service-container
action: restart
codes:
red:
dispatch: true
notify: pagerduty
config:
url: https://events.pagerduty.com/v2/enqueue
yellow:
dispatch: true
notify: log
config:
file: /var/log/cpra-alerts.log
परीक्षण कॉन्फ़िगरेशन जनरेट करना:
किसी भी संख्या में मॉनिटर के साथ परीक्षण कॉन्फ़िगरेशन जनरेट करने के लिए mock-servers/generate_monitors.py का उपयोग करें।
CPRA व्यवहार को प्रोग्रामेटिक रूप से कॉन्फ़िगर करें:
package main
import (
"cpra/internal/controller"
)
func main() {
config := controller.DefaultConfig()
// डिबग मोड
config.Debug = true
// कार्यकर्ता पूल सेटिंग्स (तीनों पाइपलाइनों पर लागू होती हैं)
config.WorkerConfig.MinWorkers = 10
config.WorkerConfig.MaxWorkers = 500
// कतार सेटिंग्स
config.QueueCapacity = 131072 // 2 की घात होनी चाहिए
// प्रदर्शन ट्यूनिंग
config.BatchSize = 2000
config.SizingServiceTime = 20 * time.Millisecond // औसत कार्य अवधि
config.SizingSLO = 100 * time.Millisecond // लक्ष्य विलंबता
config.SizingHeadroomPct = 0.15 // 15% सुरक्षा बफर
ctrl := controller.NewController(config)
// ... बाकी आरंभीकरण
}
पूर्ण कॉन्फ़िगरेशन विकल्पों के लिए API संदर्भ देखें।
./cpra [OPTIONS]
| विकल्प | प्रकार | डिफ़ॉल्ट | विवरण |
|---|---|---|---|
--yaml | string | internal/loader/replicated_test.yaml | मॉनिटर YAML फ़ाइल का पथ |
--config | string | - | कॉन्फ़िगरेशन फ़ाइल पथ (वैकल्पिक) |
--debug | bool | false | डिबग-स्तर लॉगिंग सक्षम करें |
--pprof | bool | true | pprof प्रोफाइलिंग सर्वर सक्षम करें |
--pprof.addr | string | localhost:6060 | Pprof सर्वर सुनने का पता |
उदाहरण:
# डिबग लॉगिंग के साथ चलाएं
./cpra --yaml monitors.yaml --debug
# कस्टम pprof पोर्ट के साथ चलाएं
./cpra --yaml monitors.yaml --pprof.addr localhost:8080
# प्रोफाइलिंग अक्षम करें
./cpra --yaml monitors.yaml --pprof=false
समस्या: YAML file not found
चेतावनी: YAML फ़ाइल monitors.yaml नहीं मिली, मॉनिटर लोड किए बिना शुरू हो रहा है
समाधान: फ़ाइल पथ सही है सत्यापित करें। निरपेक्ष पथ या उस निर्देशिका के सापेक्ष पथ का उपयोग करें जहाँ से आप बाइनरी चलाते हैं:
./cpra --yaml $(pwd)/monitors.yaml
समस्या: Go संस्करण त्रुटि के साथ निर्माण विफल
go.mod के लिए go >= 1.25 आवश्यक है
समाधान: Go को संस्करण 1.25 या बाद में अपग्रेड करें:
go version # वर्तमान संस्करण जांचें
# https://go.dev/dl/ से Go 1.25+ डाउनलोड करें
समस्या: उच्च मेमोरी उपयोग
समाधान: pprof के साथ मेमोरी उपयोग जांचें:
# CPRA चल रहा है, pprof तक पहुंचें
go tool pprof http://localhost:6060/debug/pprof/heap
# शीर्ष मेमोरी उपभोक्ता देखें
(pprof) top
कॉन्फ़िगरेशन में मेमोरी सीमाएं समायोजित करें:
config.WorkerConfig.MaxWorkers = 200 // अधिकतम कार्यकर्ता कम करें
config.QueueCapacity = 65536 // कतार आकार कम करें
समस्या: कार्यकर्ता पूल स्केल नहीं हो रहा
समाधान: स्केलिंग निर्णय देखने के लिए डिबग लॉगिंग सक्षम करें:
./cpra --yaml monitors.yaml --debug
कतारबद्ध सिद्धांत पैरामीटर जांचें:
config.SizingServiceTime = 50 * time.Millisecond // कार्यों में अधिक समय लगने पर बढ़ाएं
config.SizingSLO = 200 * time.Millisecond // आवश्यकतानुसार SLO शिथिल करें
समस्या: मॉनिटर निष्पादित नहीं हो रहे
समाधान: मॉनिटर कॉन्फ़िगरेशन प्रारूप सत्यापित करें और लॉग जांचें:
./cpra --yaml monitors.yaml --debug 2>&1 | grep ERROR
YAML सिंटैक्स मान्य करें:
# YAML वैलिडेटर का उपयोग करें
python -m yaml monitors.yaml
--debug फ़्लैग का उपयोग करें)हम समुदाय से योगदान का स्वागत करते हैं! CPRA एक ओपन-सोर्स प्रोजेक्ट है और हम सराहना करते हैं:
आरंभ करना:
good first issue लेबल वाली समस्याएं देखेंविकास संसाधन:
यह प्रोजेक्ट MIT लाइसेंस के तहत लाइसेंस प्राप्त है - विवरण के लिए LICENSE फ़ाइल देखें।
CPRA उत्कृष्ट ओपन-सोर्स लाइब्रेरीज़ पर बनाया गया है:
दस्तावेज़ीकरण • आर्किटेक्चर • समस्याएं
बड़े पैमाने के बुनियादी ढांचे का प्रबंधन करने वाली प्लेटफॉर्म टीमों के लिए ❤️ के साथ बनाया गया