معماری
یک نصب خودمیزبان Status200 از چند کانتینر تشکیل میشود: یک ingress که هر درخواستی از آن وارد میشود، یک ایمیج برنامه که کار را انجام میدهد، پرابهایی که بررسیهای مانیتورهای شما را اجرا میکنند، و سه مخزن داده. این صفحه نشان میدهد اینها چطور کنار هم قرار میگیرند، هر کدام چه میکند و کدام اتصالها از مرز شبکهٔ شما عبور میکنند.
یک نصب خودمیزبان Status200
این نمودار چه نشان میدهد
- افراد از راه ingress به Status200 میرسند، که TLS را پایان میدهد و هر درخواست را به برنامه میفرستد: Dashboard، صفحههای وضعیت، API، و هر نقطهٔ دریافتی که تلهمتری به آن فرستاده میشود.
- برنامه وضعیت خود را در PostgreSQL میخواند و مینویسد، تلهمتری را در ClickHouse نگه میدارد، و از Valkey (انشعاب دارای مجوز BSD از Redis 7.2) برای کش و برای صفهایی که کارهای پسزمینهاش پردازش میکنند استفاده میکند.
- پرابها میتوانند درون کلاستر شما (توصیه میشود) و/یا جای دیگری در شبکهٔ شما اجرا شوند. آنها میتوانند اینها را پایش کنند:
- سرویسهای داخلی/خصوصی پشت دیوار آتش شما.
- منابع خارجی/عمومی در اینترنت.
- نتایج پرابها به برنامه فرستاده میشوند، در Valkey به صف میروند و کارهای پسزمینه آنها را پردازش میکنند و در مخزنهای دادهتان مینویسند. پرابی که جای دیگری در شبکهٔ شماست، از راه ingress و با نشانی Status200 شما به برنامه میرسد.
- تلهمتری (متریکها، ردها، لاگها و بیشتر) را همان برنامه دریافت میکند و در ClickHouse ذخیره میشود.
اگر بهجای نمونههای داخلی از PostgreSQL، Valkey (یا Redis) یا ClickHouse خارجی استفاده کنید، برنامه بهجای آنها به نقطههای پایانی خارجی شما وصل میشود. جریان منطقی همان میماند.
اجزا
| جزء | سرویس Docker Compose | چارت Helm | چه میکند |
|---|---|---|---|
| Ingress | ingress | nginx | TLS را پایان میدهد، نام میزبان و دامنههای صفحههای وضعیت شما را سرو میکند و هر درخواست را به برنامه میفرستد. |
| برنامه | app | app | Dashboard، صفحههای وضعیت، نقطههای پایانی API و دریافت داده، و اگر جدایشان نکنید، کارهای پسزمینه. |
| Worker | بخشی از app | worker (بهطور پیشفرض خاموش) | کارهای پسزمینه در پادهای جداگانهٔ خودشان، تا پردازش سنگین صف هرگز با درخواستهای API رقابت نکند. |
| Telemetry writer | بخشی از app | telemetryWriter (بهطور پیشفرض خاموش) | لایهای با اندازهٔ ثابت که هر درج در ClickHouse را انجام میدهد، تا درجها هر قدر هم workerها مقیاس بگیرند محدود بمانند. |
| پراب | probe-1 | probes | بررسیهای مانیتور را اجرا میکند و نتایج را برمیگرداند. هر پراب همراه، یک پراب سراسری است که همهٔ پروژهها میتوانند از آن استفاده کنند. |
| Runner | runner | runner | Runner خودِ نمونه، که میتواند اصلاح کد با هوش مصنوعی را برای هر پروژه اجرا کند. گامهای رانبوک روی Runnerهایی اجرا میشوند که خودتان همان جایی نصب میکنید که باید اجرا شوند. |
| Runner سراسری | global-runner | globalRunner | یک Runner سراسری: گامهای JavaScript هر پروژهای را که Runner خودش را انتخاب نکند اجرا میکند، هر کدام در سندباکسی که فقط به اینترنت میرسد. کلید خودش را دارد و هیچ چیز دیگری از سرور ندارد. |
| PostgreSQL | postgres | postgresql، یا postgresOperator.cnpg | پروژهها، مانیتورها، حادثهها، کاربران و هر تنظیم و وضعیت دیگر. |
| ClickHouse | clickhouse | clickhouse، یا clickhouseOperator.altinity | لاگها، متریکها، ردها، استثناها، پروفایلها و لاگهای مانیتور. |
| Valkey | valkey | valkey | کش، صفهای کار و وضعیت کوتاهمدت، مانند رسیدهای پوش در انتظار. |
همهٔ نقشهای برنامه یک ایمیجاند: Docker Compose آنها را در یک کانتینر app اجرا میکند، و چارت Helm میتواند worker و telemetry writer را بهصورت استقرارهای جداگانه اجرا کند. برای تعیین اندازهٔ هر لایه، اندازهگذاری و برنامهریزی ظرفیت را ببینید.
اتصالهای رو به بیرون از شبکهٔ شما
سه اتصال برقرار میشوند، مگر اینکه تنظیمی را تغییر دهید:
- برنامه روزی یک بار از API سرویس GitHub (
api.github.com) میپرسد که آیا نسخهٔ تازهتری منتشر شده است. برای خاموش کردن آن، در چارت Helm مقدارupdateCheck.disabled: trueرا، یا در Docker Compose مقدارDISABLE_UPDATE_CHECK=trueرا درconfig.envتنظیم کنید. - ثبتنام با گزینهٔ «مرا از وصلههای امنیتی و نسخههای جدید مطلع کن» در حالت تیکخورده، که در ابتدا همینطور است، نام و ایمیل آن شخص، هر شرکت و شماره تلفنی که داده باشد، و نشانی و نسخهٔ نصب شما را به
status200.ruمیفرستد. در شبکهای بدون دسترسی به اینترنت، تیک آن را بردارید. - در Kubernetes، پرابها پس از DNS خود کلاستر شما به سرورهای نام عمومی
8.8.8.8و1.1.1.1روی میآورند. مقدارdnsConfig.nameserversرا[]بگذارید تا همهٔ جستوجوها روی DNS خود شما بمانند.
هر چیز دیگری فقط وقتی به بیرون وصل میشود که آن را روشن کنید، و هر کدام صفحهای دارد که نشانیهای دقیقی را که باید مجاز کنید نام میبرد:
| اتصال خروجی | برای چه | بیشتر بخوانید |
|---|---|---|
| ایمیل (SMTP، یا API سرویس SendGrid) | اعلانها و دعوتنامهها | SMTP |
| Twilio | پیامک و تماس تلفنی | یکپارچهسازی Twilio |
| رلهٔ پوش Status200، یا Expo | اعلانهای پوش موبایل | اعلانهای پوش |
| Slack و Microsoft Teams | اعلانها و کنشهای فضای کاری | یکپارچهسازی Slack |
| یک ارائهدهندهٔ LLM، مانند OpenAI، Anthropic، Microsoft Foundry یا مدلی که خودتان اجرا میکنید | Status200 AI | ارائهدهندگان LLM |
status200.ru | فعالسازی آنلاین مجوز Enterprise | نسخه سازمانی |
اتصالهای جهت مخالف - SendGrid که ایمیل ورودی را تحویل میدهد، و Slack و Microsoft Teams که فراخوانی برگشتی انجام میدهند - نیاز دارند که ingress از اینترنت در دسترس باشد. اینکه برنامه و پرابها به کدام نشانیهای خصوصی برسند با شماست: دسترسی به شبکه خصوصی را ببینید.
لوگوی Status200 درون هر ایمیلی که Status200 میفرستد جای دارد، پس حتی در شبکهای بدون دسترسی به اینترنت هم نشان داده میشود، و باز کردن یک ایمیل چیزی از میزبان دیگری نمیخواهد. تصویرهایی که خودتان بارگذاری میکنید، مانند لوگوی خودتان یا لوگوی یک صفحه وضعیت، از نشانی Status200 شما نشان داده میشوند، پس کسانی که این ایمیلها را میخوانند باید بتوانند به آن برسند.