सामग्री पर जाएं
वास्तुकला

वास्तुकला

Markdown के रूप में देखें

सेल्फ-होस्टेड Status200 इंस्टॉल कुछ ही कंटेनरों से बना होता है: एक ingress जिससे हर अनुरोध अंदर आता है, एक ऐप इमेज जो काम करती है, प्रोब जो आपके मॉनिटरों की जाँचें चलाते हैं, और तीन डेटा स्टोर। यह पृष्ठ दिखाता है कि ये आपस में कैसे जुड़ते हैं, हर एक क्या करता है, और कौन-से कनेक्शन आपके नेटवर्क की सीमा पार करते हैं।

flowchart TB People["लोग और ब्राउज़र"] Senders["टेलीमेट्री भेजने वाले:<br/>OpenTelemetry,<br/>Fluent Bit,<br/>syslog, एजेंट"] Targets["जिसकी आप निगरानी<br/>करते हैं:<br/>आंतरिक और सार्वजनिक"] subgraph Install["आपका नेटवर्क"] direction TB Ingress["Ingress<br/>(Nginx, TLS)"] App["ऐप<br/>डैशबोर्ड, स्टेटस पेज,<br/>API, इनजेस्ट,<br/>बैकग्राउंड जॉब"] Runner["Runner"] Probe["प्रोब"] subgraph Data["डेटा स्टोर"] direction LR Postgres[("PostgreSQL<br/>कॉन्फ़िगरेशन<br/>और स्थिति")] ClickHouse[("ClickHouse<br/>लॉग, मेट्रिक्स,<br/>ट्रेस")] Valkey[("Valkey<br/>कैश और<br/>कतारें")] end end People -->|"HTTPS"| Ingress Senders -->|"OTLP, HTTPS"| Ingress Ingress --> App Runner -->|"जॉब लेना,<br/>नतीजे भेजना"| App Probe -->|"काम लेना,<br/>नतीजे भेजना"| App Probe -->|"HTTP, TCP, ping,<br/>DNS, SNMP"| Targets App --> Postgres App --> ClickHouse App --> Valkey Targets ~~~ Probe

एक सेल्फ-होस्टेड Status200 इंस्टॉल

यह क्या दिखाता है

  • लोग ingress के ज़रिए Status200 तक पहुँचते हैं, जो TLS समाप्त करता है और हर अनुरोध को ऐप तक भेजता है: Dashboard, स्टेटस पेज, API, और हर वह इनजेस्ट एंडपॉइंट जिस पर टेलीमेट्री भेजी जाती है।
  • ऐप अपनी स्थिति PostgreSQL में पढ़ता और लिखता है, टेलीमेट्री ClickHouse में रखता है, और कैश के लिए तथा उन कतारों के लिए Valkey (Redis 7.2 का BSD-लाइसेंस वाला फ़ोर्क) का उपयोग करता है जिन पर उसके बैकग्राउंड जॉब काम करते हैं।
  • प्रोब आपके क्लस्टर के अंदर (अनुशंसित) और/या आपके नेटवर्क में कहीं और चल सकते हैं। वे इनकी निगरानी कर सकते हैं:
    • आपके फ़ायरवॉल के पीछे की आंतरिक/निजी सेवाएँ।
    • इंटरनेट पर बाहरी/सार्वजनिक संसाधन।
  • प्रोब के नतीजे ऐप को भेजे जाते हैं, Valkey में कतार में रखे जाते हैं, और बैकग्राउंड जॉब उन्हें प्रोसेस करके आपके डेटा स्टोर में लिखते हैं। आपके नेटवर्क में कहीं और रखा प्रोब ingress के ज़रिए, आपके Status200 URL पर, ऐप तक पहुँचता है।
  • टेलीमेट्री (मेट्रिक्स, ट्रेस, लॉग और भी बहुत कुछ) वही ऐप ग्रहण करता है और ClickHouse में संग्रहीत करता है।
नोट

अगर आप अंतर्निहित की जगह बाहरी PostgreSQL, Valkey (या Redis) या ClickHouse का उपयोग करते हैं, तो ऐप इसके बजाय आपके बाहरी एंडपॉइंट से जुड़ता है। तार्किक प्रवाह वही रहता है।

घटक

घटकDocker Compose सेवाHelm चार्टयह क्या करता है
IngressingressnginxTLS समाप्त करता है, आपके होस्टनाम और स्टेटस पेज डोमेन को सर्व करता है, और हर अनुरोध को ऐप तक भेजता है।
ऐपappappDashboard, स्टेटस पेज, API और इनजेस्ट एंडपॉइंट, और, जब तक आप उन्हें अलग न करें, बैकग्राउंड जॉब।
Workerapp का हिस्साworker (डिफ़ॉल्ट रूप से बंद)बैकग्राउंड जॉब, अपने अलग पॉड में, ताकि भारी कतार प्रोसेसिंग कभी API अनुरोधों से होड़ न करे।
Telemetry writerapp का हिस्साtelemetryWriter (डिफ़ॉल्ट रूप से बंद)एक निश्चित आकार की परत जो ClickHouse में हर इन्सर्ट करती है, ताकि worker चाहे जितने स्केल हों, इन्सर्ट सीमा में रहें।
प्रोबprobe-1probesमॉनिटर जाँचें चलाता है और नतीजे वापस भेजता है। हर साथ आने वाला प्रोब एक वैश्विक प्रोब है जिसे सभी प्रोजेक्ट उपयोग कर सकते हैं।
Runnerrunnerrunnerइंस्टेंस का अपना Runner, जो हर प्रोजेक्ट के लिए AI कोड सुधार चला सकता है। Runbook के चरण उन Runners पर चलते हैं जिन्हें आप वहाँ इंस्टॉल करते हैं जहाँ उन्हें चलना चाहिए।
ग्लोबल Runnerglobal-runnerglobalRunnerएक ग्लोबल Runner: यह हर उस प्रोजेक्ट के JavaScript चरण चलाता है जो अपना कोई Runner नहीं चुनता, हर एक ऐसे सैंडबॉक्स में जो केवल इंटरनेट तक पहुँचता है। इसके पास अपनी कुंजी होती है और सर्वर का और कुछ नहीं।
PostgreSQLpostgrespostgresql, या postgresOperator.cnpgप्रोजेक्ट, मॉनिटर, घटनाएँ, उपयोगकर्ता और बाकी हर सेटिंग और स्थिति।
ClickHouseclickhouseclickhouse, या clickhouseOperator.altinityलॉग, मेट्रिक्स, ट्रेस, अपवाद, प्रोफ़ाइल और मॉनिटर लॉग।
Valkeyvalkeyvalkeyकैश, जॉब कतारें और अल्पकालिक स्थिति, जैसे लंबित पुश रसीदें।

ऐप की सभी भूमिकाएँ एक ही इमेज हैं: Docker Compose उन्हें एक ही app कंटेनर में चलाता है, और Helm चार्ट worker और telemetry writer को अपने अलग डिप्लॉयमेंट के रूप में चला सकता है। हर परत का आकार तय करने के लिए आकार निर्धारण और क्षमता नियोजन देखें।

आपके नेटवर्क से बाहर जाने वाले कनेक्शन

जब तक आप कोई सेटिंग नहीं बदलते, तीन कनेक्शन बनते हैं:

  • दिन में एक बार ऐप GitHub के API (api.github.com) से पूछता है कि क्या कोई नई रिलीज़ आई है। इसे बंद करने के लिए Helm चार्ट में updateCheck.disabled: true सेट करें, या Docker Compose पर config.env में DISABLE_UPDATE_CHECK=true सेट करें।
  • “मुझे सुरक्षा पैच और नई रिलीज के बारे में सूचित करें” पर टिक लगाकर साइन अप करने पर, जैसा कि शुरू में लगा रहता है, उस व्यक्ति का नाम और ईमेल, उसकी दी हुई कोई भी कंपनी और फ़ोन नंबर, और आपके इंस्टॉल का पता और वर्शन status200.ru को भेजे जाते हैं। इंटरनेट एक्सेस के बिना वाले नेटवर्क पर इसका टिक हटा दें।
  • Kubernetes पर, प्रोब आपके क्लस्टर के अपने DNS के बाद सार्वजनिक रिज़ॉल्वर 8.8.8.8 और 1.1.1.1 का सहारा लेते हैं। हर लुकअप को अपने ही DNS पर रखने के लिए dnsConfig.nameservers को [] पर सेट करें।

बाकी सब कुछ तभी बाहर जुड़ता है जब आप उसे चालू करते हैं, और हर एक का एक पृष्ठ है जो अनुमति देने के लिए सटीक पते बताता है:

बाहर जाने वाला कनेक्शनकिसके लिएऔर पढ़ें
ईमेल (SMTP, या SendGrid का API)सूचनाएँ और आमंत्रणSMTP
TwilioSMS और फ़ोन कॉलTwilio इंटीग्रेशन
Status200 का पुश रिले, या Expoमोबाइल पुश सूचनाएँपुश सूचनाएँ
Slack और Microsoft Teamsवर्कस्पेस सूचनाएँ और कार्रवाइयाँSlack इंटीग्रेशन
कोई LLM प्रदाता, जैसे OpenAI, Anthropic, Microsoft Foundry, या कोई मॉडल जिसे आप स्वयं चलाते हैंStatus200 AILLM प्रदाता
status200.ruEnterprise लाइसेंस को ऑनलाइन सक्रिय करनाएंटरप्राइज़ संस्करण

दूसरी दिशा के कनेक्शन - SendGrid का आने वाला ईमेल पहुँचाना, Slack और Microsoft Teams का वापस कॉल करना - के लिए ingress का इंटरनेट से पहुँच योग्य होना ज़रूरी है। ऐप और प्रोब किन निजी पतों तक पहुँच सकते हैं, यह आप तय करते हैं: देखें निजी नेटवर्क पहुँच।

Status200 का लोगो उसके भेजे हर ईमेल के अंदर ही जाता है, इसलिए वह बिना इंटरनेट पहुँच वाले नेटवर्क पर भी दिखता है, और ईमेल खोलने पर किसी दूसरे होस्ट से कुछ नहीं माँगा जाता। आप खुद जो इमेज अपलोड करते हैं, जैसे आपका अपना लोगो या किसी स्थिति पृष्ठ का लोगो, वे आपके Status200 URL से दिखाई जाती हैं, इसलिए इन ईमेल को पढ़ने वालों का उस तक पहुँच पाना ज़रूरी है।

अगले कदम