Gnocchi یک پایگاه داده سریهای زمانی بهعنوان سرویس (TDBaaS – Time Series Database as a Service) است که تحت برنامه Ceilometer در اکوسیستم OpenStack توسعه داده شده است. هدف Gnocchi ذخیره، پردازش و ایندکسگذاری دادههای مربوط به متریکها و منابع زیرساخت ابری به شکلی بهینه و مقیاسپذیر است.
Gnocchi برای رفع محدودیتهای Ceilometer در ذخیرهسازی و پردازش حجم عظیمی از دادههای متریک و جلوگیری از کاهش عملکرد پایگاه دادههای سنتی طراحی شده است. این سیستم به سازمانها کمک میکند تا دادههای نظارتی خود را بهطور موثری جمعآوری، ذخیره و تحلیل کنند.
دلایل توسعه Gnocchi
Ceilometer از ابتدا بهعنوان یک سیستم جمعآوری داده برای ذخیره متریکها و رخدادها طراحی شد. اما با افزایش حجم دادههای متریک در محیطهای ابری بزرگ، چالشهای متعددی به وجود آمد، از جمله:
- افت عملکرد شدید در هنگام پردازش حجم عظیمی از متریکها به مدت چند هفته.
- مدل دادهای انعطافپذیر ولی ناکارآمد که باعث کندی اجرای درخواستهای رایج کاربران شد.
- عدم امکان اجرای برخی پرسوجوهای خاص به دلیل محدودیتهای طراحی اولیه.
- افزایش بار پردازشی در Ceilometer که باعث کاهش مقیاسپذیری آن شد.
در نشست طراحی Icehouse در هنگکنگ، توسعهدهندگان و کاربران پیشنهاد کردند که Ceilometer از قابلیت تجمیع دادههای متریک برای ذخیرهسازی طولانیمدت پشتیبانی کند. این ایده در آن زمان اجرایی نشد، اما در نهایت منجر به توسعه Gnocchi شد.
بازنگری در معماری ذخیرهسازی متریکها
Ceilometer دو هدف اصلی را دنبال میکند:
- ذخیره متریکها – مجموعهای از (timestamp, value) برای یک منبع خاص (مانند دما، مصرف CPU، مصرف شبکه و…).
- ذخیره رخدادها – مجموعهای از رخدادهایی که در محیط OpenStack رخ میدهند (مانند رویدادهای API، ایجاد یا حذف ماشینهای مجازی، آپلود تصاویر و…).
با اینکه جمعآوری رخدادها در Ceilometer عملکرد مطلوبی داشت، اما ذخیره متریکها دچار مشکلات طراحی و کارایی شد. مدل دادهای انعطافپذیر ولی ناکارآمد باعث شد که پرسوجوهای متریک بسیار کند و ناکارآمد باشند.
در نتیجه، Gnocchi توسعه داده شد تا چالشهای ذخیرهسازی و پردازش متریکها را برطرف کند.
نحوه عملکرد Gnocchi
Gnocchi یک سیستم ذخیرهسازی و پردازش سریهای زمانی است که از دو بخش اصلی تشکیل شده است:
- ذخیرهسازی سریهای زمانی (Time Series Storage)
- این بخش مسئول ذخیره و پردازش متریکهای تجمیعشده است.
- برخلاف Ceilometer که دادهها را بهصورت خام ذخیره میکرد، Gnocchi ابتدا دادهها را پردازش کرده و سپس ذخیره میکند.
- از Swift بهعنوان فضای ذخیرهسازی نامحدود و مقیاسپذیر استفاده میشود.
- پردازش دادهها با استفاده از Pandas انجام شده که عملکرد بهتری نسبت به روشهای سنتی دارد.
- ایندکسگذاری منابع (Resource Indexer)
- این بخش مسئول ایندکسگذاری منابع و متریکهای مربوط به آنها است.
- بهجای ذخیرهسازی سنتی، از SQLAlchemy برای مدیریت دادههای منابع استفاده شده است.
- این روش باعث بهبود سرعت جستجو و پردازش دادههای متریک شده است.
APIهای Gnocchi
Gnocchi از یک REST API قدرتمند برای مدیریت و پردازش دادههای متریک و منابع استفاده میکند. برخی از درخواستهای کلیدی API عبارتند از:
- ایجاد یک متریک جدید:
- POST /v1/entity
- حذف یک متریک:
- DELETE /v1/entity
- افزودن مقادیر جدید به یک متریک:
- POST /v1/entity/<name>/measures
- دریافت مقادیر ذخیرهشده برای یک متریک:
- GET /v1/entity/<name>/measures
مزایای استفاده از Gnocchi
- بهینهسازی ذخیرهسازی و پردازش متریکها
- مقیاسپذیری بالا با استفاده از Swift و Pandas
- کاهش بار پردازشی Ceilometer
- افزایش سرعت پاسخگویی به درخواستها
- امکان تجمیع دادهها قبل از ذخیرهسازی برای بهینهسازی عملکرد
- یکپارچگی کامل با اکوسیستم OpenStack
چالشهای Gnocchi
- پیچیدگی پیادهسازی: مهاجرت از Ceilometer به Gnocchi نیازمند دانش فنی بالا است.
- نیاز به منابع پردازشی بالا: پردازش و تجمیع دادهها میتواند بار پردازشی سنگینی بر روی زیرساختهای OpenStack ایجاد کند.
- محدودیت در پشتیبانی از برخی انواع داده: Gnocchi بیشتر برای دادههای عددی سری زمانی بهینه شده و ممکن است برای برخی انواع داده محدودیتهایی داشته باشد.
نتیجهگیری
Gnocchi یک راهکار پیشرفته و مقیاسپذیر برای ذخیرهسازی و پردازش متریکها در محیطهای OpenStack است. این ابزار به سازمانها کمک میکند تا دادههای خود را بهصورت بهینه و سریع ذخیره و پردازش کنند.
با کاهش بار پردازشی Ceilometer، افزایش مقیاسپذیری و سرعت پردازش دادههای متریک، Gnocchi یک گزینه عالی برای مدیریت نظارت و مانیتورینگ در محیطهای ابری بزرگ محسوب میشود.
منبع: openstack360