کوبرنتیز یک سازوکار ارکستریشن کانتینر است که در جهت خودکارسازی فرایند دیپلوی، مقیاسدهی و مدیریت اپلیکیشنهای کانتینرسازی شده استفاده میشود. اما یادگیری صرف کوبرنتیز نمیتواند در ایجاد یک سیستم پایدار به شما کمک بکند.
برای اینکه به بهترین شیوه ممکن از مزایا و تواناییهای کوبرنتیز استفاده کنید نیاز است که شیوه مانیتورینگ در کوبرنتیز (Kubernetes Monitoring) را نیز یاد بگیرید. منظور از مانیتورینگ، یادگیری و به کارگیری تکنیکهایی است که با استفاده از آنها میتوانید سلامت و کارایی کلاستر کوبرنتیز را زیر نظر گرفته و از انجام درست کارها مطمئن شوید.
در فرایند مانیتورینگ، عمدتا یکسری متریکها و لاگها از بخشهای مختلف کلاستر کوبرنتیز جمعآوری میشود. Nodeها، Podها و سرویسهای اجرایی از جمله این بخشها هستند.
در این مطلب از وبلاگ همروش قصد داریم به صورت کامل با فرایند مانیتورینگ در کوبرنتیز، اهمیت، مزایا و چالشهای آن، ابزارهای مانیتورینگ و رویکردهای عملی در فرایند انجام مانیتورینگ آشنا شویم.
اهمیت مانیتورینگ در کوبرنتیز
برای اینکه مطمئن شویم که اپلیکیشن ما در بهترین حالت از امنیت، در دسترس بودن (Availability) و کارایی روی کلاستر کوبرنتیز در حال اجرا است، نیاز است که حتما از فرایند مانیتورینگ در کوبرنتیز استفاده کنیم.
بدون مانیتورینگ، شناسایی و حل مشکلاتی که منجر به متوقف شدن اپلیکیشن میشود کار بسیار سخت و چالشبرانگیزی است. برای مثال در سیستم مانیتورینگ ما میتوانیم از میزان مصرف هر سرویس از منابع موجود آگاهی کسب کنیم.
بنابراین اگر یک سرویس خاص بهصورت غیرعادی از قدرت پردازشی CPU استفاده کند، سریعا میتوانیم متوجه شویم و آن را حل کنیم. این در حالی است که اگر یک سیستم مانیتورینگ وجود نداشته باشد، تا زمانی که اپلیکیشن به صورت کامل از کار نیفتد، ما از وجود مشکلات در کلاستر کوبرنتیز آگاه نخواهیم شد.
جدای از این موارد، مانیتورینگ باعث بالا رفتن امنیت سرویسها میشود. در این شرایط اگر یک رفتار یا فعالیت غیرطبیعی در سیستم رخ بدهد، سیستم مانیتورینگ به ما هشدار وجود چنین حالتی را میدهد.
متریکهای کلیدی در مانیتورینگ کوبرنتیز
در ادامه میتوانید با برخی از مرسومترین متریکهایی که برای مانیتورینگ منابع در کوبرنتیز استفاده میشوند آشنا شوید. همچنین برای مشاهده کامل این متریکها میتوانید به مستندات رسمی کوبرنتیز مراجعه کنید.
متریکهای کلاستر
متریکهای کلاستر شامل اندازهگیریها و محاسباتی میشود که در نهایت اطلاعاتی راجع به وضعیت سلامت، بهرهوری و میزان مصرف منابع کلاستر کوبرنتیز ارائه میکند. با جمعآوری و آنالیز این متریکها میتوانید مشکلات موجود در سیستم را بررسی کرده و همچنین وضعیت بهرهوری کلاستر را بهینهتر کنید.
برخی از متریکهای مهم در بخش متریکهای کلاستر عبارت از موارد زیر است:
· متریک میزان مصرف منابع در Nodeها: این متریک میزان استفاده از پردازنده و فضای ذخیرهسازی روی هر نود در کلاستر کوبرنتیز را محاسبه میکند.
· متریک تعداد Nodeها: این متریک تعداد تمام Worker Nodeهای داخل کلاستر را محاسبه میکند.
· متریک تعداد پادها اجرایی: این متریک تعداد پادهای در حال اجرا شدن روی کلاستر را محاسبه میکند.
متریکهای پاد
متریکهای پاد مجموعهای از محاسبات و اندازهگیریهای مربوط به رفتار و کارایی هر پاد، به صورت جداگانه، در کلاستر کوبرنتیز را به ما میدهد. از این دادهها میتوان برای درک چگونگی استفاده از منابع توسط پادها، بهینهسازی کارایی و یافتن مشکلات اجرایی استفاده کرد.
نمونههایی از متریکهای پاد شامل موارد زیر میشود:
· دادههایی در ارتباط با وضعیت پاد، Restartها و میزان آمادگی هر پاد
· اطلاعاتی راجع به میزان مصرف منابع موجود توسط پادها (CPU، RAM، ترافیک شبکه و حافظه ذخیرهسازی)
· متریکهای سفارشی برای رهگیری پارامترهایی خاص از اپلیکیشنی که در کانتینر اجرا میشود
متریکهای کانتینر
متریکهای کانتینر دادههای کاملی را راجع به رفتار و کارایی کانتینرهایی که در پادهای کوبرنتیز اجرا میشوند در اختیار ما قرار میدهند. اصلیترین این متریکها شامل موارد زیر میشود:
· میزان استفاده از منابع CPU توسط هر کانتینر
· میزان استفاده از منابع حافظه اصلی یا RAM توسط هر کانتینر
· میزان استفاده از شبکه توسط هر کانتینر (ترافیک دریافتی و ارسالی)
متریکهای اپلیکیشن
متریکهای اپلیکیشن اطلاعات جامعی از عملکرد اپلیکیشنها در پادهای کوبرنتیز را محاسبه میکنند. میزان در دسترس بودن، میزان سلامت، کارایی و میزان زمان پاسخگویی اپلیکیشن از جمله اصلیترین اندازهگیریها در متریک اپلیکیشن است.
ابزارهای مانیتورینگ کوبرنتیز
برای اینکه فرایند مانیتورینگ را به بهترین شکل ممکن پیش ببرید نیاز است که از ابزارهای مانیتورینگ استفاده کنید. در ادامه ما با ۵ ابزار مانیتورینگ کوبرنتیز آشنا خواهیم شد.
۱- داشبورد اصلی کوبرنتیز
داشبورد کوبرنتیز یک ابزار تحت وب است که امکانات مختلفی را در اختیار کاربران قرار میدهد. برخی از این امکانات شامل موارد زیر است:
· دیپلوی کردن اپلیکیشن کانتینرسازی شده در کلاستر کوبرنتیز
· حل مشکلات اپلیکیشنهای کانتینرسازی شده
· مدیریت منابع کلاستر
· ارائه یک دید کلی از اپلیکیشنهای در حال اجرا روی کلاستر
· ایجاد و اعمال تغییرات روی منابع کوبرنتیز
· مانیتور وضعیت سلامت منابع کوبرنتیز و یافتن خطاها
داشبورد کوبرنتیز سعی دارد تا یک دید کلی از تمام جنبههای کلاستر را در اختیارتان قرار دهد. مشکل اصلی داشبورد کوبرنتیز این است که نمیتواند به عنوان یک ابزار جامع برای مانیتورینگ استفاده شود چرا که جزئیات کاملی را ارائه نمیکند. به همین دلیل است که اغلب کاربران سراغ ابزارهای دیگری مانند Prometheus و Grafana میروند.
۲- پرومتئوس
پرومتئوس (Prometheus) محبوبترین ابزار مانیتورینگ کوبرنتیز است که توسط SoundCloud ساخته شد و در حال حاضر توسط CNCF نگهداری میشود. پرومتئوس متریکهای جامعی از کوبرنتیز و داکر ایجاد کرده و اطلاعاتی راجع به تحلیل و آنالیز آنها را در اختیارمان قرار میدهد.
پرومتئوس برای مانیتور معماری میکروسرویس مبتنی بر کانتینر ایجاد شده و در این زمینه نیز یکی از ابزارهای اصلی برای مانیتورینگ به حساب میآید.
برخی از توسعه دهندگان از پرومتئوس در کنار Grafana استفاده میکنند تا به خوبی بتوانند از امکانات بصریسازی داده یا data visualization استفاده نمایند.
برای آشنایی کامل با پرومتئوس پیشنهاد میکنم مطلب «پرومتئوس (Prometheus) چیست؟» را مطالعه کنید.
۳- Grafana
Grafana یک پلتفرم متن باز برای بصریسازی متریکها و آنالیزهایی است که در داشبورد کوبرنتیز ایجاد میشوند. این متریکها مربوط به کلاستر، نود، پاد و فرایند استقرار است. همچنین کاربران بسیاری وجود دارند که از گرافانا برای بصریسازی دادههایی که از پرومتئوس دریافت کرده، استفاده میکنند.
برای آشنایی کامل با گرافانا پیشنهاد میکنم مطلب «گرافانا (Grafana) چیست؟» را مطالعه کنید.
۴- EFK Stack
EFK Stack یا پشته EFK در واقع یک ابزار ترکیبی است که سه ابزار مختلف را با همدیگر ادغام میکند. Elasticsearch، Fluentd و Kibana. از این سه ابزار برای جمعآوری، ذخیرهسازی و بصریسازی دادههای متریک استفاده میشود.
Elasticsearch یک موتور جستوجو است که دادههای مختلفی را دریافت کرده و آنها را در مخزن مرکزی ذخیرهسازی میکند، Fluentd از طرفی دیگر مسئولیت جمعآوری دادهها از لاگهای مربوط به پادهای کوبرنتیز و انتقال آنها به الستیک سرچ را برعهده دارد. Kibana نیز که به عنوان یک پلاگین الستیک سرچ شناخته میشود، رابط کاربری EFK Stack را ایجاد کرده و وظیفه بصریسازی اطلاعات جمعآوری شده را برعهده میگیرد.
۵- LOKI
Grafana Loki یک گردآوری کننده لاگ (log aggregator) است که مانیتورینگ در کوبرنتیز را سادهتر میکند. از این ابزار معمولا در کنار پرومتئوس استفاده میشود. با استفاده از این ابزار میتوانید لاگها را به سرعت جمعآوری کرده و ریشه اصلی مشکلی که با آن برخورد کردهاید را پیدا کنید.
چالشهای مانیتورینگ کوبرنتیز
مانیتورینگ کوبرنتیز به دلایل مختلف میتواند کاری چالش برانگیز و سخت باشد. یکی از این دلایل این است که شما در فرایند مانیتورینگ نیاز دارید که هم سلامت کلی کلاستر کوبرنتیز را بررسی کنید و هم اجزا مستقل در حال اجرا را. برای انجام چنین کاری شما نیاز دارید که متریکهای مختلفی را از منابع متفاوت جمعآوری و آنالیز کنید. پادها، نودها، کانتینرها و اپلیکیشنها همگی جزو منابع مختلفی هستند که باید به صورت جداگانه بررسی شوند.
تنها با انجام تمام این کارها میتوانید یک دید جامع از کارایی کلی کلاستر کوبرنتیز پیدا کنید.
یکی دیگر از چالشهای اصلی نیاز به ابزارهای مانیتورینگ منحصر به فرد برای جمعآوری داده از بخشهای خاص است. برای مثال ایجاد متریکهایی برای وضعیت پادها، ظرفیت نودها و ترافیک شبکه به پیکربندیهای خاص ابزارها نیاز داشته و همچنین برای انجام آنها به متخصصین حرفهای نیاز دارید.
امنیت نیز یکی دیگر از نگرانیها و چالشها در مانیتورینگ کوبرنتیز است. از آنجایی که متریکها و لاگهای جمعآوری شده شامل اطلاعات حساس و امنیتی هستند، نیاز دارند که به خوبی از آنها محافظت شود. به همین دلیل نیاز است که پیکربندیهای امنیتی کاملی پیادهسازی شده و سطوح دسترسی دقیقی ایجاد شود. رمزنگاری دادهها یکی دیگر از کارهاییست که در این مسیر باید انجام دهید.
مانیتورینگ کوبرنتیز فعالیتی پیچیده و سخت بوده و در محیطهایی که مقیاس بزرگی دارند نیز پیچیدگی آن چند برابر میشود. برای انجام آن نیاز است که به صورت کامل برنامهریزی کرده و با تمام جنبههای آن آشنا شوید.
آشنایی با بهترین شیوههای پیادهسازی مانیتورینگ کوبرنتیز
در ادامه این مطلب قصد داریم راجع به بهترین شیوهها برای پیادهسازی و انجام فرایند مانیتورینگ کوبرنتیز صحبت کنیم.
انتخاب متریکهای مرتبط
تعیین متریکهای درست کوبرنتیز یکی از اساسیترین روشها برای مدیریت و حل مشکلات مربوط به کلاستر است. برای اینکه متریک درست و مرتبط را انتخاب کنید نیاز است که درک واضح و صریحی از اهداف مانیتورینگ داشته باشید.
تگها و برچسبها
تگها و برچسبها (Tags و Labels) ابزارهای کلیدی برای مدیریت و سازماندهی منابع در کلاستر کوبرنتیز است. با انتساب تگها و برچسبها به منابع، میتوانید منابع مرتبط به همدیگر را گروهبندی کرده و کارهای مختلفی را روی آنها انجام دهید.
اصلیترین فواید استفاده از تگها و برچسبها در کوبرنتیز شامل موارد زیر میشود:
· بهبود وضعیت مدیریت و سازماندهی منابع
· سهولت در مانیتورینگ و رفع خطاها
· سهولت در مقیاسپذیری و تخصیص منابع
تمرکز روی تجربه کاربر نهایی (End-User)
یکی از اهداف اصلی مانیتورینگ کوبرنتیز مطمئن شدن از درست کار کردن اپلیکیشن و برطرف کردن نیازمندیهای کاربران نهایی است.
با اندازهگیری متریکهای مرتبط با تجربه کاربر نهایی، میتوانید اپلیکیشن مورد نظر را در بهترین حالت ممکن به آنها تحویل دهید. متریکهایی مانند میزان زمان بارگذاری صفحات، نرخ خطاها، حجم تعاملات و… از جمله اصلیترین متریکهایی هستند که در این مرحله باید در نظر گرفته شوند.
جمعبندی
کوبرنتیز یکی از کلیدیترین فناوریهای مدیریت اپلیکیشنهای کانتینرسازی شده است. مانیتور و بررسی وضعیت اجرایی کوبرنتیز و کلاستر اصلی آن از جمله مهمترین کارهاییست که باید انجام شود. فرایند مانیتورینگ کوبرنتیز در کنار اینکه ایده و مفهوم سادهای دارد اما در فرایند پیادهسازی میتواند چالشبرانگیز و سخت باشد.
در این مطلب از وبلاگ همروش ما با چیستی مانیتورینگ کوبرنتیز، ابزارهای اصلی و چالشهای عملی آن آشنا شدیم.