cAdvisor چیست؟ چه کاربردهایی دارد و چگونه کار می کند؟
فناوری های کانیتنری (Container) انقلابی در زمینه توسعه نرم افزار ایجاد کرده اند. با استفاده از کانتینرها، می توانید برنامه ها یا اپلیکیشن های خود را به راحتی میان سرویس ها و سرورهای مختلف حرکت دهید و بر روی ماشین های مختلف اجرا کنید. اما چطور می توانید از عملکرد صحیح کانیتنرها پس انتقال مطمئن شوید؟ در اینجاست که ابزارهای مانیتورینگ کانتینر مانند cAdvisor (Container Advisor) به شما کمک می کنند.
در ادامه این مقاله قرار است به توضیح cAdvisor و موارد استفاده از آن بپردازیم. پس با ما همراه باشید.
cAdvisor چیست؟
cAdvisor که توسط گوگل توسعه و نگهداری می شود، یک دیمون (یا اصطلاحا) شبح است که داده های به دست آمده در زمان نظارت بر روی کانتینرها را در لحظه (Real-Time) جمع آوری می کند. در واقع این ابزار یک ابزار مانیتورینگ متن باز است که اطلاعات را در رابط وب خود نمایش می دهد. می توانید کد منبع آن را در GitHub و در پروژه google/cadvisor مشاهده کنید.
cAdvisor به صورت مستقل نصب می شود و از کانتینرهای داکر (Docker) به صورت لوکال پشتیبانی می کند و از محیط های کانتینری دیگری مانند کوبرنتیس هم پشتیبانی می کند. به این معنی که cAdvisor می تواند تجزیه و تحلیل داده های ارزشمند را روی هر کانتینر در حال اجرا (از جمله استفاده از CPU، حافظه، استفاده از سیستم فایل، رابط های شبکه فیزیکی و مجازی و موارد دیگر) در حین اجرا بر روی یک تصویر Docker را جمع آوری کند.
اگر از سیستم های توزیع لینوکس مانند Fedora، CentOS و Red Hat Enterprise Linux استفاده می کنید، ممکن است لازم باشد کانتینر را با flagهای:
--privileged=true و --volume=/cgroup:/cgroup:ro\
اجرا کنید. پس از اجرای این دستور، cAdvisor در پس زمینه http://localhost:8080/ اجرا می شود.
پس از نصب cAdvisor، می توانید فوراً بر داده های کانتینر نظارت کنید، مانند میزان مصرف منابع و حافظه. در زمان اجرا، cAdvisor می تواند به منابع هر کانتینری که روی هاست اجرا می شود دسترسی داشته باشد. سپس می توان آن داده ها را از طریق رابط کاربری وب cAdvisor به نمایش گذاشت یا از سایر پلتفرم های تحلیلی استفاده کرد. به عنوان مثال، برای اکسپورت داده های cAdvisor به InfluxDB، می توانید هنگام اجرای cAdvisor از flag -storage_driver=influxdb استفاده کنید.
به طور خاص، cAdvisor معمولاً با پرومتئوس و همچنین با سایر برنامه های شخص ثالث مانند Grafana و Graphite استفاده می شود.
موارد استفاده سی ادوایزر چیست؟
از این برنامه برای نظارت و کاوش منابع مصرف شده در میزبانی Docker استفاده می شود. از آنجایی که cAdvisor هیستوگرام های استفاده از منابع را بر اساس زمان ارائه می دهد، می توانیم این داده ها را برای استفاده در پلتفرم های نظارتی بزرگتر و گسترده تر جمع آوری کنیم.
رابطه cAdvisor و Prometheus
cAdvisor می تواند با استفاده از نقاط پایانی استاندارد HTTP، آمار کانتینر را به پرومتئوس ارائه دهد. سپس، در Prometheus می توانید با ایجاد یک یا چند دستور کاری برای پردازش داده های سی ادوایزر از نقاط پایانی HTTP، داده های ثبت شده در لحظه را جمع آوری و ذخیره کنید.
Prometheus به طور خودکار برای دریافت اطلاعات از cAdvisor که در حال اجرا است پیکربندی شده است. از این طریق، نظارت بر داده های کانتینر در Prometheus آسان است. کاربران می توانند خلاصه ای از تمام اطلاعات در هر هاست را ببینند و همچنین یک نمای کلی از همه هاست ها دریافت کنند.
شما می توانید مصرف حافظه، استفاده از پردازنده و محدودیت های منابع را نظارت کنید و همچنین رابط های ویژه برنامه را برای گرافیکی کردن منابع مشاهده کنید.
رابطه cAdvisor و Grafana
گرافانا یک پلتفرم تجزیه و تحلیل منبع باز است که می تواند داده های معیار سی ادوایزر و پرومتئوس را به تصویر بکشد. داشبوردها و پنل های قابل تنظیم Grafana به شما کمک می کنند تا نمودارهایی از داده های خام را به تصاویر و نمودارهای کاربردی و زیبا، بر اساس داده های خط زمانی تبدیل کنید. همچنین می توانید زمانی که پلتفرم، رفتار غیر عادی منابع را تشخیص می دهد، پیام هشدار را در گرافانا تنظیم کنید.
رابطه cAdvisor و Graphite
گرافیت یک پایگاه داده خط زمانی منبع باز است که می تواند داده های کانتینر را از سی ادوایزر ذخیره، پردازش و بصری سازی کند.
cAdvisor و Kubernetes
در یک کلاستر کوبرنتیس، برنامه را می توان در چندین سطح مختلف بررسی کرد که عبارتند از کانتینرها، پوسته ها، خدمات تکی یا کلی خوشه.
Kubernetes از پروژه ای به نام Heapster استفاده می کند که به عنوان یک پلتفرم مانیتورینگ پایه عمل می کند و داده ها و رویدادها را در کل خوشه جمع آوری می کند. Heapster در پوسته های Kubernetes اجرا می شود و داده ها را از Kubelets می گیرد.
Kubelets چیست؟
Kubelet اجزای درون خوشه مانند پوسته ها و کانتینرها را روی یک دستگاه مدیریت می کند. Kubelet مسئول پیدا کردن آمار استفاده از کانتینر از cAdvisor است. داده های جمع آوری شده از طریق REST API در معرض دید قرار می گیرند.
همانطور که گفته شد، Kubelets به نوبه خود داده ها را از سی ادوایزر جمع آوری و بررسی می کند. کل داده ها در یک پایگاه داده مانند InfluxDB ذخیره می شوند و برای بصری سازی به Grafana ارسال می شوند.