وقتی یک وبسایت یا API را روی سرور مجازی ایران راهاندازی میکنید، فقط روشن بودن سرور به معنی سالم بودن سرویس نیست. ممکن است VPS در دسترس باشد اما وبسایت با خطای 500 پاسخ دهد، API از کار افتاده باشد، پورت دیتابیس بسته شده باشد یا زمان پاسخگویی به شکل محسوسی افزایش پیدا کند.
برای جلوگیری از این مشکلات میتوان از ابزارهای مانیتورینگ استفاده کرد. یکی از ابزارهای سبک و کاربردی برای این کار Gatus است؛ یک ابزار متنباز که میتوان آن را روی سرور شخصی نصب کرد و علاوه بر بررسی وضعیت سرویسها، یک صفحه وضعیت (Status Page) حرفهای نیز ساخت.
📌 در این راهنما یاد میگیرید:
🔹 نصب Gatus روی سرور مجازی لینوکس با Docker
🔹 مانیتور کردن API با بررسی JSON و زمان پاسخ
🔹 مانیتور کردن پورتهای TCP مثل MySQL و Redis
🔹 ساخت Status Page و اتصال دامنه
🔹 رفع خطاهای رایج و نکات امنیتی
Gatus چیست و چه تفاوتی با سایر ابزارها دارد؟
Gatus یک ابزار مانیتورینگ Self-Hosted است که برای بررسی سلامت سرویسها طراحی شده. برخلاف Uptime Kuma که تنظیمات را در دیتابیس ذخیره میکند، Gatus کاملاً Config-as-Code است؛ یعنی تمام تنظیمات در یک فایل YAML تعریف میشوند . این یعنی میتوانید فایل کانفیگ را در Git نگه دارید، بین سرورها منتقل کنید و نسخهبندی کنید.
Gatus با یک باینری Go ساخته شده و مصرف منابع آن بسیار پایین است — معمولاً بین ۱۰ تا ۳۰ مگابایت RAM . همین ویژگی آن را برای اجرا روی سرور مجازی ایران با منابع محدود ایدهآل میکند.
برخی قابلیتهای کلیدی Gatus:
🔹 پشتیبانی از پروتکلهای HTTP، TCP، ICMP، DNS، SSH و TLS
🔹 تعریف شرط برای پاسخ API با JSONPath (مثل بررسی status: ok در بدنه پاسخ)
🔹 بررسی زمان پاسخ و انقضای گواهی SSL
🔹 ارسال اعلان به Telegram، Slack، Discord، Email و Webhook
🔹 Status Page داخلی با قابلیت گروهبندی سرویسها
چرا Gatus را روی سرور مجازی ایران نصب کنیم؟
اگر سرویس اصلی شما روی سرور مجازی ایران میزبانی میشود، اجرای مانیتورینگ روی همان زیرساخت مزایای مشخصی دارد:
🔹 پینگ پایینتر برای بررسی سرویسهای داخلی مثل درگاه پرداخت و پیامک
🔹 عدم وابستگی به سرویسهای مانیتورینگ خارجی که ممکن است در دسترس نباشند
🔹 کنترل کامل روی دادههای مانیتورینگ و تاریخچه سرویسها
🔹 هزینه ثابت — یک VPS با ۵۱۲ مگابایت رم برای مانیتور کردن دهها Endpoint کافی است
⚠️ نکته مهم: اگر Gatus و سرویس اصلی روی یک سرور باشند، خرابی کامل VPS باعث از دسترس خارج شدن هر دو میشود. برای سرویسهای حساس، بهتر است یک سرور مجازی فرانسه یا سرور مجازی آلمان ارزان قیمت هم به عنوان مانیتور مستقل تهیه کنید تا از نقطهای خارج از زیرساخت اصلی، وضعیت سرویس را بررسی کند .
پیشنیازهای نصب Gatus
| مورد | حداقل پیشنهادی |
|---|---|
| سیستمعامل | Ubuntu 22.04 / 24.04 یا Debian 12 |
| CPU | ۱ هسته |
| RAM | ۵۱۲ مگابایت |
| فضای دیسک | ۵ گیگابایت |
| Docker | نسخه ۲۰ یا بالاتر |
| دامنه (اختیاری) | برای Status Page عمومی |
نصب Docker روی سرور مجازی
اولین قدم، نصب Docker روی سرور است. اگر از قبل Docker دارید، از این مرحله عبور کنید.
# نصب Docker با اسکریپت رسمی curl -fsSL https://get.docker.com | sh # بررسی وضعیت سرویس systemctl status docker # بررسی نسخه docker --version
اگر خروجی Active: active (running) مشاهده کردید، Docker با موفقیت نصب شده است.
ساخت اولین کانفیگ Gatus
ابتدا یک پوشه برای Gatus ایجاد کنید:
mkdir -p /opt/gatus cd /opt/gatus nano config.yaml
یک کانفیگ ساده برای شروع:
storage:
type: sqlite
path: /data/data.db
endpoints:
- name: Website
group: Web
url: "https://example.com"
interval: 30s
conditions:
- "[STATUS] == 200"
- "[RESPONSE_TIME] < 2000"
- name: API Health
group: API
url: "https://api.example.com/health"
interval: 30s
conditions:
- "[STATUS] == 200"
- "[BODY].status == ok"
در این کانفیگ، Gatus هر ۳۰ ثانیه وبسایت و API را بررسی میکند. برای API علاوه بر کد HTTP، محتوای JSON پاسخ نیز بررسی میشود .
اجرای Gatus با Docker
حالا کانتینر Gatus را اجرا کنید. توجه: پورت را فقط روی localhost باز کنید تا از بیرون مستقیماً در دسترس نباشد:
docker run -d \ --name gatus \ --restart unless-stopped \ -p 127.0.0.1:8080:8080 \ -v /opt/gatus/config.yaml:/config/config.yaml:ro \ -v /opt/gatus/data:/data \ twinproduction/gatus:latest
بررسی وضعیت کانتینر:
docker ps --filter name=gatus docker logs gatus
حالا Gatus روی آدرس http://127.0.0.1:8080 در دسترس است. برای دسترسی از بیرون، باید آن را پشت یک Reverse Proxy قرار دهید.
مانیتور کردن API با بررسی JSON
یکی از قویترین قابلیتهای Gatus، بررسی محتوای پاسخ API است. فرض کنید API شما در حالت سالم این پاسخ را برمیگرداند:
{
"status": "ok",
"version": "2.1.0",
"database": "connected"
}
میتوانید Gatus را طوری تنظیم کنید که هر سه مورد را بررسی کند:
endpoints:
- name: Main API
group: API
url: "https://api.example.com/health"
interval: 30s
conditions:
- "[STATUS] == 200"
- "[BODY].status == ok"
- "[BODY].database == connected"
- "[RESPONSE_TIME] < 1500"
این روش نسبت به بررسی ساده HTTP Status، اطلاعات دقیقتری درباره سلامت واقعی API ارائه میدهد. اگر دیتابیس قطع شود ولی API همچنان کد ۲۰۰ برگرداند، Gatus وضعیت را نامطلوب تشخیص میدهد .
مانیتور کردن پورت TCP (MySQL، Redis، SSH)
Gatus فقط برای HTTP نیست. میتوانید پورتهای TCP سرویسهای داخلی را نیز بررسی کنید :
endpoints:
- name: MySQL
group: Database
url: "tcp://127.0.0.1:3306"
interval: 30s
conditions:
- "[CONNECTED] == true"
- name: Redis
group: Database
url: "tcp://127.0.0.1:6379"
interval: 30s
conditions:
- "[CONNECTED] == true"
- name: SSH
group: Infrastructure
url: "tcp://127.0.0.1:22"
interval: 60s
conditions:
- "[CONNECTED] == true"
⚠️ نکته: برای مانیتور کردن سرویسهایی مثل MySQL، از یک کاربر با دسترسی محدود استفاده کنید. Gatus فقط اتصال TCP را بررسی میکند و نیازی به احراز هویت ندارد.
🔹 سرور مجازی ایران با منابع اختصاصی
برای اجرای Gatus و مانیتورینگ سرویسهای خود به یک VPS پایدار با RAM و CPU اختصاصی نیاز دارید. ایرانیکاسرور سرورهای مجازی ایران با دیسک NVMe، پهنای باند نامحدود و پشتیبانی ۲۴/۷ ارائه میدهد. همین حالا سرور مناسب خود را انتخاب کنید.
📞 تماس با پشتیبانی: 021-91302460 | ایرانیکاسرور
ساخت Status Page و اتصال دامنه
Gatus به صورت پیشفرض یک صفحه وضعیت ساده نمایش میدهد. برای استفاده عمومی، بهتر است یک زیردامنه مثل status.example.com ایجاد کنید و Gatus را پشت Nginx قرار دهید.
ابتدا در DNS دامنه یک رکورد A ایجاد کنید:
status.example.com → SERVER_IP
سپس یک Server Block برای Nginx ایجاد کنید:
server {
listen 80;
server_name status.example.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
بررسی و Reload:
nginx -t systemctl reload nginx
برای فعال کردن HTTPS:
apt install certbot python3-certbot-nginx -y certbot --nginx -d status.example.com
حالا صفحه وضعیت شما روی https://status.example.com در دسترس کاربران خواهد بود.
ارسال اعلان هنگام خرابی سرویس
مانیتورینگ زمانی ارزش واقعی دارد که هنگام خرابی به شما اطلاع دهد. Gatus از کانالهای متعددی پشتیبانی میکند :
| کانال اعلان | نوع |
|---|---|
| Telegram | پیشنهادی برای ایران |
| Discord | مناسب تیمهای فنی |
| Slack | مناسب کسبوکارها |
| Webhook | اتصال به سیستم دلخواه |
| Email (SMTP) | مکمل یا پشتیبان |
نمونه کانفیگ Telegram:
alerting:
telegram:
token: "YOUR_BOT_TOKEN"
id: "YOUR_CHAT_ID"
endpoints:
- name: Website
url: "https://example.com"
interval: 30s
conditions:
- "[STATUS] == 200"
alerts:
- type: telegram
description: "سایت از دسترس خارج شد!"
send-on-resolved: true
با send-on-resolved: true، وقتی سرویس دوباره سالم شد نیز یک پیام دریافت میکنید .
خطاهای رایج و نحوه رفع آنها
خطای YAML در config.yaml
رایجترین مشکل Gatus، اشتباه در فاصلهگذاری YAML است. اگر سرویس بالا نیامد:
docker logs gatus
بعد از هر تغییر در کانفیگ:
docker restart gatus
API سالم است ولی Gatus آن را Down نشان میدهد
🔹 آدرس اشتباه: URL را با curl تست کنید
🔹 کد HTTP متفاوت: API ممکن است ۲۰۱ یا ۲۰۴ برگرداند، نه ۲۰۰
🔹 Firewall: ممکن است درخواستهای Gatus مسدود شوند
🔹 Cloudflare/WAF: ممکن است به عنوان ربات شناسایی شود
🔹 Timeout: اگر API کند باشد، شرط RESPONSE_TIME را افزایش دهید
پورت 8080 باز نمیشود
# بررسی listen بودن پورت ss -lntp | grep 8080 # بررسی وضعیت فایروال ufw status
⚠️ توصیه امنیتی: پورت ۸۰۸۰ را مستقیماً روی اینترنت باز نکنید. Gatus را پشت Nginx قرار دهید و فقط پورتهای ۸۰ و ۴۴۳ را باز نگه دارید.
ساختار پیشنهادی برای پروژههای فروشگاهی
اگر یک فروشگاه اینترنتی روی سرور مجازی ایران دارید، میتوانید ساختار زیر را پیاده کنید:
endpoints:
- name: Website
group: Website
url: "https://example.com"
interval: 30s
conditions:
- "[STATUS] == 200"
- name: API
group: API
url: "https://example.com/api/health"
interval: 30s
conditions:
- "[STATUS] == 200"
- "[BODY].status == ok"
- name: Admin Panel
group: Admin
url: "https://example.com/admin"
interval: 60s
conditions:
- "[STATUS] == 200"
- name: MySQL
group: Database
url: "tcp://127.0.0.1:3306"
interval: 30s
conditions:
- "[CONNECTED] == true"
- name: Redis
group: Database
url: "tcp://127.0.0.1:6379"
interval: 30s
conditions:
- "[CONNECTED] == true"
این ساختار یک داشبورد مرکزی ایجاد میکند که وضعیت همه اجزای فروشگاه را در یک صفحه نمایش میدهد. اگر هر بخشی دچار مشکل شود، در Status Page قابل مشاهده خواهد بود.
🔹 هاست وردپرس و لینوکس با پشتیبانی تخصصی
اگر به دنبال میزبانی پایدار برای وبسایت خود هستید، ایرانیکاسرور هاست وردپرس و هاست لینوکس ایران با منابع تضمینشده و آپتایم ۹۹.۹٪ ارائه میدهد. زیرساخت ما به گونهای طراحی شده که Gatus و ابزارهای مانیتورینگ بدون تداخل با منابع اصلی اجرا شوند.
📞 تماس با پشتیبانی: 021-91302460 | ایرانیکاسرور
نکات امنیتی مهم برای Gatus
⚠️ پورت 8080 را عمومی نکنید. به جای -p 8080:8080 از -p 127.0.0.1:8080:8080 استفاده کنید تا فقط از داخل سرور در دسترس باشد.
⚠️ از Basic Auth استفاده کنید. Gatus از احراز هویت HTTP Basic پشتیبانی میکند .
⚠️ فقط پورتهای ۸۰ و ۴۴۳ را باز نگه دارید. بقیه ترافیک را از طریق Nginx یا Caddy هدایت کنید.
برای محافظت از Status Page، میتوانید بخش security را به کانفیگ اضافه کنید. همچنین اگر میخواهید از API خود Gatus استفاده کنید، از Status Page Token به جای API Key استفاده کنید .
جدول مقایسه Gatus با سایر ابزارهای مانیتورینگ
| ویژگی | Gatus | Uptime Kuma | OpenStatus |
|---|---|---|---|
| Config-as-Code | ✅ YAML کامل | ❌ فقط UI | ⚠️ محدود |
| مصرف RAM | ۱۰-۳۰ MB | ۵۰-۱۰۰ MB | ۵۰-۱۰۰ MB |
| بررسی JSON | ✅ JSONPath | ⚠️ محدود | ✅ دارد |
| پشتیبانی TCP | ✅ دارد | ✅ دارد | ✅ دارد |
| Multi-User | ❌ تککاربره | ❌ تککاربره | ✅ نقشمحور |
| مناسب VPS ضعیف | ✅ ایدهآل | ✅ خوب | ⚠️ سنگینتر |
نتیجه: اگر به دنبال یک ابزار سبک با کانفیگ YAML و قابلیت بررسی دقیق API هستید، Gatus انتخاب بهتری است .
🔹 مشکل در نصب یا کانفیگ Gatus دارید؟
تیم فنی ایرانیکاسرور آماده کمک به شماست. اگر در نصب Gatus، تنظیمات کانفیگ، اتصال دامنه یا راهاندازی Nginx به مشکل خوردهاید، درخواست خود را ثبت کنید. کارشناسان ما در سریعترین زمان بررسی میکنند.
📞 تماس با پشتیبانی: 021-91302460 | ایرانیکاسرور
جمعبندی
Gatus یک ابزار مانیتورینگ سبک، متنباز و Config-as-Code است که به شما امکان میدهد وضعیت وبسایت، API، پورتها و سرویسهای مختلف را روی سرور مجازی ایران بررسی کنید و یک Status Page حرفهای بسازید.
با ترکیب Docker، Nginx و HTTPS میتوانید صفحه وضعیت اختصاصی خود را روی دامنهای مثل status.example.com راهاندازی کنید و در صورت خرابی سرویس، از طریق Telegram یا Webhook مطلع شوید.
مهمترین مزیت Gatus نسبت به سایر ابزارها، مصرف بسیار پایین منابع و قابلیت بررسی دقیق پاسخ API با JSONPath است. اگر سرویسهای متعددی روی یک VPS دارید، با یک فایل YAML میتوانید همه آنها را مدیریت و مانیتور کنید.
برای مطالعه بیشتر میتوانید به مستندات رسمی Gatus مراجعه کنید.
دیدگاهها
0 دیدگاه برای این مطلب ثبت شده است.