Cloudprober

Cloudprober چیست؟ چه نقشی در مانیتورینگ پویا دارد؟

فهرست مطالب

در دنیای پیچیده زیرساخت‌های ابری مدرن و میکروسرویس‌‎ها، صرفا تکیه بر لاگ‌ها و متریک‌های سیستمی برای اطمینان از سلامت سرویس کافی نیست. شما نیاز دارید بدانید آیا سیستم شما واقعا برای کاربران در دسترس است یا خیر. اینجاست که Cloudprober وارد می‌شود. این ابزار متن باز برای انجام مانیتورینگ به صورت مداوم ساخته شده است؛ یعنی دقیقا از دیدگاه یک کاربر واقعی در دسترس و سالم بودن سرویس شما را بررسی می‌کند. کلودپروب، با انواع Probeها مانند HTTP و TCP به شما کمک می‌کند مشکلات واقعی دسترسی پذیری را قبل از اینکه کاربران نهایی آن را حس کنند شناسایی کنید.

چرا باید از Active Monitoring استفاده کنیم؟

قبل از ورود به جزئیات فنی Cloudprober، باید با مفهوم Active Monitoring بیشتر آشنا شویم. اکثر سیستم‌های سنتی مانیتورینگ سنتی به صورت Passive عمل می‌کنند؛ یعنی منتظر می‌مانند تا ترافیکی وارد سرور شود و سپس خطاها را گزارش می‌دهند. اما اگر ترافیکی وجود نداشته باشد چه؟ یا اگر شبکه قطع باشد و هیچ درخواستی به سرور نرسد؟ پایش یا مانیتورینگ فعال به معنای شبیه سازی رفتار کاربر است. یک ابزار خارجی به صورت مداوم درخواست‌هایی را به سرویس شما ارسال می‌کند تا بررسی کند آیا سرویس “زنده” است و درست پاسخ می‌دهد یا خیر.

مزایای Active Monitoring

استفاده از مانیتورینگ پویا برای سرورها مزایای بسیار مهمی برای شما خواهد داشت مانند:

  • تشخیص قطعی قبل از کاربر: قبل از اینکه مشتری متوجه شود، شما از مشکل آگاه می‌شوید.
  • اندازه گیری SLA/SLO: محاسبه دقیق میزان در دسترس بودن و تاخیر
  • پایش مسیر شبکه: بررسی سلامت شبکه از نقاط جغرافیای مختلف
Cloudprober-useCases

Cloudprober چیست؟

Cloudprober یک نرم افزار مانیتورینگ فعال است که توسط گوگل توسعه یافته و به صورت متن‌باز منتشر شده است. این ابزار دقیقا همان مکانیزمی است که خود گوگل برای پایش زیرساخت‌های عظیم خود از آن استفاده می‌کند. Cloudproper خود بر روی دو مفهوم کلیدی کشف خودکار اهداف (Automated Target Discovery) و سادگی در پیکربندی (Simplicity in Configuration) بنا شده است.

ویژگی‌های کلیدی Cloudproper

ابزار مانیتورینگ Cloudprober ویژگی‌هایی دارد که باعث شده شرکت‌های بزرگی مانند Tesla و Cloudflare از آن استفاده کنند. در ادامه این ویژگی‌های مهم را مورد بررسی قرار می‌دهیم:

  • یکپارچگی با اکوسیستم ابری

این ویژگی به معنای پشتیبانی بومی یا همان Native Support است. Cloudproper برای اتصال پلتفرم‌هایی مانند AWS یا Kubernetes نیاز به اسکریپت‌های واسط پیچیده یا ترفندهای عجیب ندارد. این ابزار مستقیما از APIها و SDKهای رسمی این پلتفرم‌ها استفاده می‌کند و نیاز نیست شما دستی یوزرنیم و پسورد در فایل کانفیگ ذخیره کنید.

  • سبک و سریع

از آنجا که این نرم افزار با زبان Go نوشته شده است، خروجی آن یک فایل Binary کاملا مستقل است که با خود دو مزیت مهم به همراه دارد:

    1. بدون وابستگی: نیاز نیست نگران نصب نبودن ورژن خاصی از Python یا Java روی سرورهای خود باشید.
    2. مصرف منابع ناچیز: می‌توان آن را در کنار سرویس‌‎های اصلی خود بدون اینکه منابع زیادی را درگیر خود کند، استفاده کرد. 
  • کشف خودکار اهداف

این قابلیت باعث می‌شود مانیتورینگ شما به سمت پویایی بیشتری برود و به جای یک لیست ثابت، منابع خود را بررسی کند. برای مثال، در محیط‌های ابری با قابلیت Auto-Scaling، تعداد سرورها در طول روز کم و زیاد می‌شود، این ابزار توانایی این را دارد تا به طور آنی تغییرات را بفهمد. اگر 10 سرور جدید اضافه شود، Cloudprober به صورت خودکار آن را به لیست پایش خود اضافه می‌کند و اگر سروری حذف شود، پایش آن را متوقف می‌کند تا خطای کاذب رخ ندهد.

  • خروجی استاندارد

کلودپروبر خود را مسئول ذخیره دیتاها نمی‌‎‌داند، بلکه فقط داده‌‎ها را تولید کرده و به ابزارهای تخصصی تحویل می‌دهد. این قابلیت باعث می‌شود از Vendor Lock-in دوری کنید و مجبور نشوید از یک داشبورد جدید استفاده نمایید. این ابزار داده‌ها را با فرمت استاندارد متریک‌ها ارسال ‌کنند تا ابزارهایی که دارید (مانند Grafana) به راحتی آن را بخوانند و نمایش دهند. نمونه‌ای از کد اجرای پروب HTTP برای Export داده‌ها به Stackdriver و Prometheus:

				
					probe {
  name: "internal-web"
  type: HTTP
  # Probe all forwarding rules that contain web-fr in their name.
  targets {
    gce_targets {
      forwarding_rules {}
    }
    regex: "web-fr-.*"
  }
  interval_msec: 5000
  timeout_msec: 1000
  http_probe {
    port: 8080
  }
}

// Export data to stackdriver
surfacer {
  type: STACKDRIVER
}

// Prometheus exporter
surfacer {
  type: PROMETHEUS
}
				
			

این نمونه پیکربندی Cloudprober، دو ویژگی اصلی آن، کشف خودکار اهداف و ارسال داده‌ها از طریق کانال‌های متعدد را هایلایت می‌کند.

معماری و نحوه عملکرد Cloudprober

معماری این ابزار به گونه‌ای طراحی شده است که حتی در محیط‌های بسیار ناپایدار نیز به کار خود ادامه دهد. این ابزار از یک مدل پیکربندی به عنوان کد استفاده می‌کند. اجزای اصلی Cloudprober:

  • Probes: وظیفه ارسال درخواست به مقصد را دارند (مانند Ping یا HTTP GET)
  • Targets: مقصدهایی که باید پایش شوند (مانند آدرس وب سایت، API Endpoint یا یک IP خاص)
  • Surfaces: پروتکل‌هایی که برای گزارش‌دهی استفاده می‌شوند (مانند خروجی Prometheus)

انواع Probeهای Cloudprober

این ابزار از انواع مختلفی از پروب‌ها یا کاوشگرها برای سناریوهای مختلف پشتیبانی می‌کند:

  1. HTTP/HTTPS: رایج‌ترین نوع پروب‌ها است. یک درخواست GET یا POST ارسال می‌کند و کد وضعیت و محتوای پاسخ را مورد بررسی قرار می‌دهد.
  2. Ping: برای بررسی دسترسی پذیری سطح شبکه و اندازه گیری Packet Loss استفاده می‌شود.
  3. TCP: برقراری اتصال TCP برای اطمینان از باز بودن پورت‌ها.
  4. DNS: بررسی صحت عملکرد سرورهای نام دامنه و زمان پاسخگویی آن‌ها
  5. External: امکان اجرای اسکریپت‌های سفارشی برای سناریوهای پیچیده که توسط پروب‌های پیش‌فرض پشتیبانی نمی‌شوند.
  6. UDP: برای تست سرویس‌هایی که بر پایه UDP هستند.
Cloudprober-Grafana

یکپارچه سازی Cloudprober با Grafana

قدرت واقعی این ابزار زمانی خود را به رخ می‌کشد که آن را با ابزارهای مصورسازی مانند Grafana ترکیب کنید. Cloudprober به صورت پیش‌فرض متریک‌‎ها را روی پورت 9313 در مسیر /metrics در معرض دید قرار می‌دهد. مراحل ترکیب Grafana و Cloudprober:

  1. جمع آوری: پرومتئوس تنظیم می‌شود تا پورت مد نظر شما را بخواند.
  2. ذخیره سازی: داده‌های مربوط به کل تست‌ها، تعداد تست‌های موفق و تاخیر ذخیره می‌شوند.
  3. نمایش: در Grafana داشبوردهایی ساخته می‌شود که نرخ موفقیت و تاخیر را در طول زمان نشان می‌دهند.

متریک‌های کلیدی مانیتورینگ

متریک‌های مانیتورینگ، عددهای کمی هستند که دیتاهای مختلف از وضعیت را به شما نشان می‌دهند. در بحث مانیتورینگ سه متریک کلیدی وجود دارد که با استفاده از آن‌ها می‌توانید کوئری‌های مختلف بنویسید.

  1. Total: تعداد کل پروب‌های ارسال شده.
  2. Success: تعداد پروب‌‎های موفق.
  3. Latency: زمان مصرف شده برای دریافت پاسخ.

فرمول محاسبه دسترسی پذیری یا Availability در پراب‌‎ها:  100 * (تعداد کل پراب‌ها / تعداد پراب موفق)

برای اجرای پایدار Cloudprober و استفاده از یک محیط پایدار، می‌توانید به سراغ خرید سرور مجازی بروید. این سرورها مناسب‎‌ترین سرور برای استفاده Cloudprober هستند.

موارد استفاده پیشرفته از Cloudprobe

همانطور که تا الان به آن اشاره کردیم، Cloudprober ویژگی‌های بسیاری دارد که آن را مناسب استفاده‌های پیشرفته‌تر کرده است.

پایش ترکیبی

اگر بخشی از سرویس‌های شما در دیتاسنتر داخلی و بخشی در AWS است (به آن Hybrid Cloud نیز می‌گویند)، Cloudprober می‌تواند به مثابه پلی عمل کند. می‌توانید کلودپروبر را دیتاسنتر خود نصب کنید تا دسترسی به سرویس‌های ابری را چک کند تا مطمئن شوید ارتباط شبکه سالم است.

اعتبارسنجی کیفیت داده

Cloudprober فقط به سالم بودن سرویس‌های شما اکتفا نمی‌کند. شما می‌توانید از Regex استفاده کنید تا بدنه پاسخ HTML یا JSON را مورد بررسی قرار دهید. برای مثال می‌توانید چک کنید که آیا پاسخ JSON شامل فیلد “status: ok” هست یا خیر.

دیباگ کردن شبکه در Kubernetes

اجرای Cloudprober به عنوان یک DaemonSet در کلاستر کوبرنینز به شما این امکان را می‌‎دهد تا ارتباط بین Nodeهای مختلف را تست کنید و گلوگاه‌های شبکه داخل کلاستر را شناسایی کنید.

در نهایت

Cloudprober ابزاری مهم برای تیم‌های مهندسی است که می‌‎خواهند قدمی جلوتر برای مانیتورینگ سرویس‌های خود داشته باشند. این ابزار شکاف بین آنچه سرور فکر می‌کند اتفاق می‌افتد و آنچه واقعا اتفاق افتاده است را پر می‌کند. با قابلیت‌های منحصر به فرد خود، کلودپروب به استانداردی برای Black-Box Monitoring تبدیل شده است.

سوالات متداول

بله، شرکت گوگل این ابزار را به صورت متن باز توسعه داده و استفاده از آن رایگان است.

بله می‌توان Cloudprober را در کنار ابزارهایی مانند Prometheus و Grafana استفاده کرد.

منابع

  • https://cloudprober.org/
  • https://cloudprober.org/docs/overview/cloudprober/

به این مقاله امتیاز دهید!

میانگین امتیاز 0 / 5. تعداد رأی ها : 0

هنوز هیچ رأیی داده نشده. اولین نفر باشید!

اشتراک گذاری در تلگرام اشتراک گذاری در لینکدین اشتراک گذاری در ایکس کپی کردن لینک پست

و در ادامه بخوانید

اولین دیدگاه را اضافه کنید.

    برچسب ها

    DevOps مانیتورینگ