Docker Monitoring چیست؟ نحوه نظارت بر کانتینرها و میکروسرویس ها

Docker Monitoring فعالیت نظارت بر عملکرد کانتینرهای میکروسرویس در محیط های داکر است. نظارت اولین قدم برای بهینه سازی و بهبود عملکرد است.آماده سازی زمینه برای نظارت بر Dockerچندی پیش، اکثر سیستم‌های نرم‌افزاری بر روی زیرساخت‌های فلزی بدون میزبانی در مراکز داده کار می‌کردند. سخت‌افزار - که عمدتاً از اجزای محاسباتی، ذخیره‌سازی و شبکه تشکیل می‌شد - تا حد زیادی در آن محیط‌ها ثابت بود، و زیرساخت نظارت نیز همینطور بود. بعداً زمانی که یک راه حل جامع ارائه شد، به چند به روز رسانی نیاز داشت زیرا تغییرات در تولید، هم سخت افزار و هم مربوط به برنامه، که بر پیکربندی نظارت تأثیر می گذارد، نادر بود.مجازی سازی منابع محاسباتی آن سناریو را تغییر چندانی نداد. اگرچه انعطاف‌پذیری زیادی در تهیه محیط‌های غیرتولیدی ارائه می‌کند، اما تغییراتی که نظارت بر آن تأثیر می‌گذارد اندک است، به جز در شرایطی که یک مؤلفه برنامه در حال اجرا در یک خوشه به صورت خودکار مقیاس‌بندی می‌شود. چنین پیکربندی‌های دینامیکی تنها زمانی معنا پیدا می‌کنند که اجرای الاستیسیته منجر به صرفه‌جویی در هزینه شود، و برای آن، محیط‌ها باید روی پلت‌فرم‌های ابری عمومی مانند AWS باشند که در آن هزینه‌ها مبتنی بر استفاده است.از آنجایی که ماشین مجازی (VM) مفهوم ماشینی را که یک سیستم عامل را اجرا می‌کند حفظ کرده است، ابزارها و روش‌های مورد استفاده برای زیرساخت‌های فلزی خالی همچنان می‌توانند برای محیط‌های مبتنی بر VM با تغییرات گاه به گاه مفید باشند. با این حال، استفاده از کانتینرها برای ساختن محیط‌های کاربردی، تأثیر مخربی بر روش‌های نظارت سنتی دارد، زیرا کانتینرها به خوبی با مفروضات ساخته‌شده توسط ابزارها و روش‌های سنتی که در ابتدا برای ماشین‌های فلزی لخت طراحی شده بودند، مطابقت ندارند.کانتینرهایی که Docker یک پیاده سازی محبوب از آن ها است، معمولاً در صورت تقاضا بالا و پایین می آیند. آنها زودگذر هستند زیرا سبک وزن هستند و می توان آنها را با سربار کمی سیستم راه اندازی کرد تا در صورت عدم استفاده فعال دور انداخته شوند.Dockerization همچنین برنامه ها را مجبور به طراحی مجدد کرد تا سیستم های توزیع شده با هر عنصر عملکردی در یک کانتینر دیگر اجرا شوند. این امر باعث می‌شود که یک سیستم مبتنی بر کانتینر به آسانی مقیاس‌بندی شود و منابع محاسباتی موجود می‌توانند بسیار کارآمدتر تخصیص داده شوند. در نتیجه تغییرات معماری ذاتی که کانتینری‌سازی ایجاد کرد، محیط‌های تولیدی که با استفاده از کانتینر ساخته می‌شوند بسیار پویا می‌شوند و نظارت بر چنین محیط‌هایی بسیار مهم‌تر از قبل شده است.چالش های رایجماهیت پویا زیرساخت های کاربردی مبتنی بر کانتینر، مشکلات جدیدی را برای ابزارهای نظارت به ارمغان می آورد. داکر همچنین لایه دیگری از زیرساخت ها و الزامات نظارت بر شبکه را به دامنه کلی اضافه می کند.به سناریوی معمولی فکر کنید که ماشین های مجازی متعددی که روی ماشین های فلزی خالی ارائه می شوند و ظروف روی هر یک از آن ماشین های مجازی می آیند و می روند. الزامات نظارت شامل بررسی:سلامت میزبان بدون فلزماشین های مجازی روی آن ارائه شده استظروف فعال در یک نقطه زمانی معینالبته، میزان تعامل این مؤلفه‌ها با یکدیگر و با دنیای بیرونی نیز باید از جنبه شبکه‌ای الزامات نظارت بررسی شود. به زودی می تواند بسیار پیچیده شود.سطوح نظارت داکرهمانطور که قبلا ذکر شد، کانتینر یک لایه اضافی برای اهداف نظارت بر زیرساخت است. برای پرداختن به الزامات نظارتی یک محیط برنامه مبتنی بر کانتینر به طور سیستماتیک، نظارت باید در سطوح مختلف زیرساخت و برنامه اجرا شود.میزبان داکرکانتینرهای Docker بر روی مجموعه‌ای از ماشین‌های مجازی یا فلزی بزرگ اجرا می‌شوند. نظارت بر این ماشین ها برای در دسترس بودن و عملکرد آنها مهم است. این در نظارت بر زیرساخت های سنتی قرار می گیرد.به طور معمول، استفاده از CPU، حافظه و ذخیره سازی بر اساس تنظیمات آستانه برای آن معیارها ردیابی و هشدار داده می شود. پیاده‌سازی آن‌ها نسبتاً آسان است: هر ابزار نظارتی آن را به عنوان بخشی از ویژگی‌های اصلی پشتیبانی می‌کند.کانتینرهای داکرکانتینرهای Docker بر روی یک دسته از میزبان ها اجرا می شوند و یک نمونه Docker خاص می تواند بر روی هر یک از آن میزبان ها بسته به استراتژی های زمان بندی و مقیاس بندی تنظیم شده در سیستم هماهنگ سازی کانتینر مورد استفاده اجرا شود، مانند:Docker SwarmKubernetesApache MesosHashicorp Nomadدر حالت ایده آل، نیازی به ردیابی جایی که کانتینرها در حال اجرا هستند وجود ندارد. اما، چیزها در تولید به ندرت ایده آل هستند (و به همین دلیل است که در وهله اول به نظارت نیاز دارید) و ممکن است بخواهید به یک نمونه کانتینر خاص نگاه کنید. ردیابی اطلاعات روی کانتینرهای در حال اجرا در چنین شرایطی مفید خواهد بود و همچنین برای اطمینان از اینکه قوانین زمان بندی و مقیاس بندی واقعاً اجرا می شوند.استفاده از منابع در زمان اجراهمانند ماشین‌های بدون فلز و ماشین‌های مجازی، معیارهای CPU، حافظه و ذخیره‌سازی برای کانتینرهای Docker نیز ردیابی می‌شوند. معیارهای خاص کانتینر مربوط به throttling CPU، وضعیتی که در آن چرخه های CPU بر اساس اولویت های تعیین شده در زمانی که رقابت برای CPU موجود وجود دارد، تخصیص داده می شود، نیز می تواند ردیابی شود.ردیابی این معیارهای عملکرد سیستم به تعیین اینکه آیا منابع موجود در ماشین‌های بدون فلز و ماشین‌های مجازی، میزبانی زیرین کانتینر، نیاز به ارتقاء دارند یا خیر کمک می‌کند. همچنین بینش هایی را برای تنظیم دقیق منابع تخصیص داده شده به یک تصویر Docker ارائه می دهد تا نمونه های کانتینر آینده آن با منابع زمان اجرا کافی راه اندازی شوند.دستور بومی Docker "docker stats" برخی از این معیارها را برمی‌گرداند، اما ابزاری مانند TrueSight برای ثبت گسترده این سیستم آماری مورد نیاز است تا در مورد مسائل احتمالی مطلع شوید و آن‌ها را به طور فعال حل کنید.شبکه کانتینریبررسی شبکه های سطح کانتینر یکی از مهمترین جنبه های نظارت داکر است. یک کانتینر قرار است یک جزء سبک وزن از یک سیستم کاربردی توزیع شده را اجرا کند. ارتباط بین این مؤلفه‌ها باید قابل اعتماد و قابل پیش‌بینی باشد، به‌ویژه زمانی که پویایی بالایی در یک محیط مبتنی بر کانتینر وجود دارد که در آن نمونه‌ها می‌آیند و می‌روند.Docker یک لایه شبکه در سطح کانتینر را فراهم می کند و همچنین ابزارهای شخص ثالثی برای افشای خدمات در حال اجرا بر روی کانتینرها وجود دارد. سایر اجزای سیستم می توانند با استفاده از یک روش پشتیبانی شده مانند REST API به یک سرویس خاص دسترسی داشته باشند.در یک محیط بسیار توزیع شده، پیکربندی شبکه Docker به زودی پیچیده خواهد شد و نظارت بر نیازهای مختلف دسترسی به شبکه و تنظیمات پراکسی برای عملکرد کل سیستم مهم است.عملکرد کانتینردرست همانطور که در یک ماشین بدون فلز یا ماشین مجازی اتفاق می افتد، الزامات زمان اجرا بر عملکرد کلی کانتینر و به نوبه خود سرویسی که روی آن اجرا می شود تأثیر می گذارد. جمع آوری داده های عملکرد از ظروف برای تنظیم دقیق آن ها مهم است.نقاط پایانی برنامهیک محیط مبتنی بر کانتینر یک برنامه کاربردی بزرگ و بسیار توزیع شده را اجرا می کند که هر سرویس بر روی یک یا چند کانتینر اجرا می شود. بررسی برنامه می تواند در هر دو سطح انجام شود:سطح کانتینرسطح غلاف (غلاف مجموعه ای از ظروف است که خدماتی را ارائه می دهد.)سطح سیستممعمولاً نقاط پایانی REST API برای انجام چنین بررسی هایی در دسترس هستند که به راحتی می توانند به هر سیستم نظارتی مدرن وصل شوند تا در دسترس بودن خدمات مرتبط را بررسی کنند.مزایای نظارت داکرمزایای نظارت داکر با نظارت سنتی تفاوتی ندارد. اینها نکات اصلی هستند:نظارت به شناسایی پیشگیرانه مسائل کمک می کند که به جلوگیری از قطع شدن سیستم کمک می کند.داده‌های سری زمانی نظارت، بینش‌هایی را برای تنظیم دقیق برنامه‌ها برای عملکرد و استحکام بهتر ارائه می‌دهد.با نظارت کامل، تغییرات می‌توانند با خیال راحت اجرا شوند، زیرا مشکلات زودهنگام شناسایی می‌شوند و قبل از تبدیل شدن به علت اصلی قطعی به سرعت حل می‌شوند.تغییرات در محیط‌های مبتنی بر کانتینر ذاتی هستند و تأثیر آن نیز به‌طور غیرمستقیم نظارت می‌شود.آخرین نکته روشن می کند که نظارت یک بخش اساسی از محیط های مبتنی بر Docker است، زیرا به دلیل پویایی آنها و در دسترس بودن خدمات برنامه باید دائماً بررسی شود.شروع کار با Docker Monitoringگروهی از ابزارها برای نظارت کامل بر یک سیستم کاربردی که در حال تولید است مورد نیاز است. به طور معمول، آنها پوشش خواهند داد:زیر ساختشبکهویژگی ها و عملکرد برنامهنظارت بر آخرین مایل و تجزیه و تحلیل گزارش الزامات نظارت داکر حکم می کند که ابزارهای نظارتی انتخاب شده باید نظارت بر سطح کانتینر را نیز پوشش دهند. یا ابزارهای اضافی، مانند مواردی که قبلاً مورد بحث قرار گرفت، اضافه کنید تا از آن جنبه مراقبت کنید.ردیابی ظروف زودگذرنظارت سنتی host0centric است. ابزارهای آن دسته فرض می کنند که یک محیط برنامه از دستگاه هایی ساخته شده است که یک آدرس IP منحصر به فرد به هر یک از آنها اختصاص داده شده است. این رویکرد همیشه مشکلاتی فراتر از نظارت ساده زیرساخت ایجاد می کند زیرا الزاماتی مانند بررسی یک ویژگی برنامه فقط به یک یا چند میزبان مرتبط نیست.کانتینرها می آیند و می روند و بهتر است آنها به صورت جداگانه ردیابی نشوند. بهترین روش این است که کانتینرها را با کلمات کلیدی برچسب گذاری کنید. به این ترتیب داده‌های سری زمانی از همان نوع کانتینرها می‌توانند برای نظارت و بینش عملیاتی، صرف نظر از وضعیت چرخه عمرشان، جستجو شوند.ظروف پیچیدگی را اضافه می کننداستفاده از کانتینرها به پیچیدگی عملیاتی یک سیستم کاربردی و در نتیجه نیازهای نظارتی می افزاید. اکثر ابزارهای نظارتی محبوب برای نظارت بر کانتینرهای Docker مجهز نیستند، اگرچه گسترش آنها به کانتینرهای پشتیبانی دشوار نیست. ابزارهای نظارتی نسل جدید، چه منبع باز و چه دارای مجوز، از نظارت خارج از جعبه Docker پشتیبانی می کنند.چالش‌های موجود در راه‌اندازی یک سیستم نظارتی خوب Docker مانند هر سیستم نظارتی عمومی باقی می‌ماند:انتخاب مجموعه ای از ابزارهای مناسب از میان طیف وسیعی از محصولات ارائه شدهشناسایی مهمترین الزامات نظارتینگاشت آن ها به ویژگی های ابزارهای انتخاب شدهایجاد سفارشی سازی برای پر کردن شکاف هایی که توسط ابزارها پوشش داده نشده است، به ویژه در زمینه نظارت بر برنامهتنظیم یک استراتژی هشدار و پاسخ که کارکنان عملیات را تحت فشار قرار ندهد