
CPRA एक उच्च-प्रदर्शन बुनियादी ढांचा निगरानी प्रणाली है जो बड़े पैमाने पर माइक्रोसर्विस आर्किटेक्चर का प्रबंधन करने वाली प्लेटफ़ॉर्म टीमों के लिए डिज़ाइन की गई है। Entity-Component-System (ECS) आर्किटेक्चर और कतारबद्ध सिद्धांतों पर निर्मित, CPRA SLO लक्ष्यों को पूरा करने के लिए स्वचालित वर्कर पूल स्केलिंग के साथ 1,000,000+ समवर्ती स्वास्थ्य जांच संभालता है।
Continuous Pulse and Recovery Agent
सेवाओं की जाँच करता है, अलर्ट भेजता है, और आपके द्वारा कॉन्फ़िगर की गई रिकवरी क्रियाएँ चलाता है।
CPRa एक स्व-होस्टेड मॉनिटरिंग और रिकवरी एजेंट है जो Go में लिखा गया है। यह एक शेड्यूल पर आपकी सेवाओं के विरुद्ध हेल्थ चेक चलाता है, कॉन्फ़िगर करने योग्य थ्रेशोल्ड के आधार पर इंसिडेंट खोलता और बंद करता है, सूचनाएँ भेजता है, और जब कोई सेवा विफल होती है तो एक रिकवरी क्रिया निष्पादित करता है — कंटेनर को रीस्टार्ट करना, वेबहुक कॉल करना, Kubernetes वर्कलोड को रीस्टार्ट या स्केल करना, EC2 इंस्टेंस को रीबूट करना, systemd यूनिट को रीस्टार्ट करना। यह एक एम्बेडेड रीड-ओनली डैशबोर्ड, एक HTTP API, और cpractl कमांड-लाइन क्लाइंट के साथ एक एकल सर्वर बाइनरी के रूप में आता है। यह MIT-लाइसेंस प्राप्त है।
दस्तावेज़ीकरण: ziad-hsn.github.io/cpra — क्विकस्टार्ट · मॉनिटर कॉन्फ़िगरेशन · ड्राइवर · HTTP API · डिप्लॉयमेंट · FAQ
दस्तावेज़ीकरण स्रोत में वर्तमान विकास संदर्भ और पहले के संशोधनों के लिए स्पष्ट रूप से दिनांकित गाइड शामिल हैं। प्रकाशित साइट अलग से अपडेट की जाती है। संस्करण और उपलब्धता उन सीमाओं की पहचान करता है:
410fbfb
संशोधन का वर्णन करते हैं और इस विकास शाखा के लिए रिलीज़ योग्यता नहीं हैं।शिपिंग योजना प्रकाशन को नियंत्रित करती है। स्रोत की उपलब्धता पूर्ण प्रदाता या सहनशक्ति सत्यापन स्थापित नहीं करती है।
नीचे दिए गए स्रोत वर्कस्पेस के लिए Go 1.25 या बाद का संस्करण, Make, और Python 3 आवश्यक है। रिपॉज़िटरी में पहले से ही बिल्ट डैशबोर्ड एसेट्स शामिल हैं।
Make एप्लिकेशन और उसके स्थानीय SDK मॉड्यूल के लिए एक अनदेखा किया गया bin/cpra-sdk.work बनाता है, ताकि अप्रकाशित SDK उम्मीदवार इस चेकआउट से बनाया जा सके।
इंटीग्रेशन उदाहरण मॉड्यूल ऑप्ट-इन बना हुआ है। एक स्पष्ट GOWORK पथ या GOWORK=off प्राथमिकता लेता है; Make कभी भी चयनित बाहरी वर्कस्पेस को नहीं बदलता है।
make
cp examples/monitors.yaml monitors.yaml
# Set the service address in monitors.yaml.
./bin/cpra -yaml monitors.yaml
सीधे Go कमांड के लिए, make dev-workspace के बाद वर्कस्पेस को स्पष्ट रूप से चुनें:
GOWORK="$PWD/bin/cpra-sdk.work" go test ./internal/cpractl/cli
आधिकारिक रिलीज़ बिल्ड GOWORK=off बनाए रखते हैं और अलग से योग्यता प्राप्त मॉड्यूल निर्भरताओं की आवश्यकता होती है। स्थानीय वर्कस्पेस बिल्ड सार्वजनिक मॉड्यूल उपलब्धता या रिलीज़ तैयारी स्थापित नहीं करते हैं।
State डिफ़ॉल्ट रूप से प्लेटफ़ॉर्म की उपयोगकर्ता state डायरेक्टरी में टिकाऊ होती है (cpractl local paths); Linux सिस्टम सेवाएँ स्पष्ट रूप से /var/lib/cpra का उपयोग करती हैं। रीस्टार्ट के दौरान उस डायरेक्टरी को बनाए रखें। एक स्पष्ट -data-dir रनटाइम कॉन्फ़िगरेशन और प्लेटफ़ॉर्म डिफ़ॉल्ट को ओवरराइड करता है। एक लेगेसी ./cpra-data के लिए एक स्पष्ट पथ या एक रोका गया माइग्रेशन आवश्यक है। एक डिस्पोज़ेबल रन के लिए -runtime-config examples/runtime-memory.yaml का उपयोग करें। पर्सिस्टेंस और रिकवरी पहचान, अज्ञात परिणाम और पूर्ण बैकअप का वर्णन करता है।
कॉन्फ़िगर किए गए API क्रेडेंशियल्स का उपयोग करके http://localhost:8060 खोलें।
प्रबंधन सेटअप वर्तमान SDK कमांड जैसे ./bin/cpractl get monitors को सक्षम करता है; वे कमांड स्थिर संसाधन ID का उपयोग करते हैं। अनुपस्थित या विकृत कॉन्फ़िगरेशन स्टार्टअप को रोक देता है। खाली कॉन्फ़िगरेशन के लिए -allow-empty आवश्यक है।
उदाहरण एक HTTP एंडपॉइंट की जाँच करता है और इंसिडेंट ट्रांज़िशन को alerts.jsonl में लिखता है। प्रत्येक मॉनिटर एक चेक इंटरवल, टाइमआउट, विफलता थ्रेशोल्ड, रिकवरी थ्रेशोल्ड, नोटिफिकेशन गंतव्य, और एक रिकवरी क्रिया निर्दिष्ट कर सकता है। मेंटेनेंस विंडो चेक जारी रहने के दौरान अलर्ट और रिकवरी को दबा देती हैं; वे पाँच-फ़ील्ड cron एक्सप्रेशन, एक अवधि, और एक IANA टाइमज़ोन का उपयोग करती हैं।
| फ़ंक्शन | डिफ़ॉल्ट बिल्ड | वैकल्पिक बिल्ड टैग |
|---|---|---|
| चेक | HTTP, TCP, ICMP, DNS, UDP, TLS, Docker, gRPC पोर्ट रीचेबिलिटी | redis postgres mysql mongo rabbitmq kafka |
| रिकवरी | Docker, HTTP webhook | kubernetes aws systemd |
| अलर्ट | Log, Slack, PagerDuty, email, webhook, Telegram, Discord, Opsgenie, Mattermost, VictorOps, Pushover, Datadog | teams twilio |
make BUILD_TAGS='redis postgres kubernetes'
grpc चेक TCP पोर्ट का परीक्षण करता है; यह gRPC हेल्थ सेवा को कॉल नहीं करता है। UDP चेक के लिए एक पेलोड और एक रिप्लाई आवश्यक है। PagerDuty के लिए एक Events API v2 रूटिंग key आवश्यक है। Email STARTTLS के साथ एक SMTP रिले का उपयोग करता है; SMTP username/password प्रमाणीकरण लागू नहीं है।
TLS warn_days रिकवरी शुरू किए बिना एक पीला अलर्ट और एक डिग्रेडेड मॉनिटर स्थिति उत्पन्न करता है; critical_days चेक को विफल करता है और सामान्य रिकवरी नीति का पालन करता है। Pushover इमरजेंसी प्राथमिकता सेकंड में retry और expire स्वीकार करती है, डिफ़ॉल्ट रूप से 60 और 1800। Docker रिकवरी अपने टाइमआउट छोड़े जाने पर डेमन के stop grace को संरक्षित करती है।
MongoDB चेक के लिए एक सीधा mongodb:// URI आवश्यक है। चयनित ड्राइवर चेक डेडलाइन द्वारा प्रारंभिक mongodb+srv:// डिस्कवरी को सीमित नहीं कर सकता, इसलिए CPRa उस मोड को अस्वीकार करता है। Kubernetes रिकवरी token, certificate, और in-cluster क्रेडेंशियल्स का समर्थन करती है; kubeconfig exec credential प्लगइन्स अस्वीकार किए जाते हैं क्योंकि वे रिकवरी डेडलाइन से अधिक समय तक जीवित रह सकते हैं।
सर्वर डिफ़ॉल्ट रूप से loopback पर सुनता है। अन्य bind पते के लिए एक प्रमाणीकरण token आवश्यक है। token को सेवा खाते द्वारा पढ़ने योग्य फ़ाइल में रखें:
./bin/cpra -yaml monitors.yaml -web.addr 0.0.0.0:8060 -web.auth-file /run/secrets/cpra-token
./bin/cpractl --server https://monitor.example.com --token-file /run/secrets/cpra-token get monitors