همانطور که در مقاله آموزش نصب Kubernetes گفتیم، کوبرنیتز یک پلتفرم متن باز است که برای خودکار سازی، مقیاس بندی و مدیریت برنامه های کاربردی کانتینر، استفاده می شود.
با توجه به پیشرفت روز افزون تکنولوژی، مهم است که برای ایجاد و ساخت برنامه ها از ابزارها و استراتژی های کنترل و قابل مشاهده پیشرفته استفاده شود. امروزه ابزارهای قدیمی گزینه مناسبی برای نظارت بر روی زیرساخت ها نیستند. اکثرا از ابزارهای سیستم نظارت ویژه Kubernetes، که در ادامه آنها را معرفی میکنیم، استفاده میکنند.
معرفی ابزارهای مانیتورینگ Kubernetes :
1. ابزار Prometheus و Grafanna
Prometheus یکی از محبوب ترین و بهترین ابزارهای نظارتی است که همراه با کوبرنیتزها استفاده می شود. ابتدا این ابزار توسط SoundCloud ایجاد و پس از مدتی به CNCF اهدا شد. در حال حاضر Google Borg Monitor از آن الهام می گیرد.
ابزار Prometheus یک سیستم قدرتمند مانیتورینگ و هشدار دهنده اپن سورس است. Prometheus، مقادیر و داده ها را به وسیله Metric های گوناگون در یک time sequence یا دنباله زمانی مشخص، جمع آوری و ذخیره می کند.
به صورت کلی مواردی مثل مکانیسم های هشدار داخلی (built-in alerting mechanisms)، مدل داده های چند بعدی (multidimensional) ، مدل pull vs. push، زبان پرسشگر Prometheus یا PromQL و جامعه در حال رشد باعث برجسته شدن Prometheus در بین دیتابیس های time-series میشود.
ویژگی و قابلیت های Prometheus :
- دارای قدرت خاص در دنیای MicroService ها جهت جمع آوری داده ها و پرس و جو های چند بعدی با استفاده از زبان PromQL.
- قابلیت تنظیم Alert برای نظارت و کنترل سرویس ها.
- قابلیت افزودن خودکار داده ها به نرم افزار از طریق Service Discovery یا Static Configuration.
- قابل دسترس از طریق هر نوع سیستمی.
- دارای سرور مستقل.
- عدم وابستگی به ذخیره سازی تحت شبکه یا خدمات از راه دور.
- دارای چندین فرم از نمودار و داشبورد پشتیبانی.
بهترین راه برای یادگیری Prometheus، نصب آن بر روی سرور dev و کار کردن با آن است. میتوانید برای نظارت end-to-end cluster از ابزار Kube Prometheus، برای نمایش وضعیت اشیا از Kube State Metri و برای تجسم داده ها، از Grafana استفاده کنید.
با استفاده از ابزار Grafana میتوان metric های موجود در پلتفرم Prometheus را جستجو و مشاهده کرد، یک داشبورد ایجاد و با توجه به نیاز ها یک alert تنظیم کرد.
Grafana می تواند در کانال های ارتباطی مثل slack، webhook یا mail، ایشو اضافه و به طور همزمان در چندین موجودیت جستجو کند.
با ترکیب ابزارهای Prometheus و Grafana، می توانید سطح نظارت Kubernetes را در سیستم تولید خود به بالاترین حد برسانید.
2. ابزار Kubewatch
Kubewatch یک ابزار مانیتورینگ Kubernetes است که اعلان ها و رویدادهای خود را در کانال Slack منتشر می کند. این ابزار به شما امکان تعیین منابع مورد نیاز، برای نظارت بر کوبرنتیز را می دهد. این ابزار در Golang ایجاد شده و از کتابخانه kubernetes client برای اتصال با سرور API Kubernetes استفاده می کند. این کتابخانه به عنوان یک عامل اساسی، برای تماشا و مشاهده رویدادهای Kubernetes عمل می کند.
پیکربندی kubewatch بسیار ساده است که می تواند با استفاده از helm یا سیستم گسترده، مستقر شود.
kubewatch تغییرات مورد نظر شما را در منابع خاص Kubernetes مانند deployments، مجموعه های daemon، سرویس ها، pods، مجموعه های replica، کنترل کننده های replication و نقشه های پیکربندی مشاهده میکند.
3. Jaeger
tracing یا ردیابی توزیع شده، به طور پیوسته در حال کنترل و عیب یابی در محیط های Kubernetes است. Jaeger یک سیستم ردیابی است که توسط Uber Technologies منتشر شده است. از ابزار Jaeger برای نظارت بر معاملات و عیب یابی در سیستم های پیچیده توزیع شده(complex distributed system) نیز استفاده می شود.
امکانات Jaeger دارای OpenTracing مبتنی بر ابزار دقیق هایی مثل جاوا، پایتون، Node و ++C می باشند. این ابزار از یک upfront sampling پیش فرض همراه با احتمالات فردی برای هر سرویس یا نقطه پایان استفاده میکند. همچنین از storage backend چندگانه مانند Cassandra, Elasticsearch, Kafka و حافظه پشتیبانی میکند.
ویژگی و قابلیت های Jaeger :
- نظارت بر معاملات توزیع شده.
- انتشار متن نوشته توزیع شده.
- بهینه سازی عملکرد یا تاخیر.
- آنالیز ریشه ای دلیل ها.
- آنالیز وابستگی خدمات.
4. cAdvisor
ابزار cAdvisor برای اسمبل و پردازش میزان استفاده از منابع و یک سری اطلاعات در مورد ایجاد کانتینرهای در حال اجرا، طراحی شده است. این ابزار از طریق Kubernetes توسعه یافته و در Kubelet binary یکپارچه سازی شده است. این ابزار آنقدر قوی نیست که بتوان آن را به عنوان یک راهکار نظارت همه جانبه کوبرنتیز تشخیص داد.
برخلاف بقیه ابزارهای نظارتی کوبرنتیز، cAdvisor به طور خودکار تمام کانتینرهای در حال اجرا یک سیستم را تعیین و معیارهای سیستمی مانند حافظه، CPU، شبکه و غیره را جمع آوری می کند.
ویژگی و قابلیت های cAdvisor :
- پشتیبانی بومی برای Docker container ها و کمک به انواع دیگر کانتینرها.
- پشتیبانی از export کردن آمار به پلاگین های ذخیره سازی مختلف، مانند InfluxDB.
- با استفاده از آنالیز کانتینر “root” در ماشین، امکان استفاده از کل ماشین را فراهم می کند.
- پشتیبانی از اجرای مستقل خارج از Docker یا هر کانتینر دیگر.
5. ابزار متن باز Telepresence
ابزاردیگر مانیتورنگ کوبرنتیز Telepresence می باشد که به شما امکان می دهد تا هنگام اتصال سرویس به یک remote Kubernetes cluster، یک سرویس خاص را به صورت لوکال اجرا کنید. این ابزار به توسعه دهندگانی که در حال کار بر روی عملیات چند سرویسه هستند اجازه میدهد تا از هر ابزار نصب شده لوکال، برای بررسی، اشکال زدایی یا ویرایش سرویس استفاده کنند.
به عنوان مثال ، می توانید یک debugger یا IDE اجرا کنید.
ابزار Telepresence به developer ها اجازه می دهد تا یک سرویس خاص را به صورت محلی و سریع توسعه دهند. حتی اگر این سرویس به سرویس های جداگانه در cluster وابسته باشد.
همچنین، Telepresence یک محیط توسعه محلی قابل توجه برای سرویس ها در Kubernetes است.
ویژگی و قابلیت های Telepresence :
- اجازه میدهد کد در کانتینر اجرا شود تا به IDE یا debugger در حال اجرا در host، متصل شود.
- Telepresence هنگام مشاهده یک OpenShift cluster، از یک پروکسی خاص OpenShift استفاده می کند.
- Telepresence از ارسال ترافیک به کانتینرهای دیگر در pod، پشتیبانی می کند.
- Telepresence از یک فهرست راهنمای قابل دسترسی به Docker، به عنوان دایرکتوری موقت استفاده می کند.
6. Weave Scope
Weave Scope یک ابزار عیب یابی و نظارت در Kubernetes است. این ابزار از برنامه و زیرساخت های شما یک سری توپولوژی های منطقی ایجاد می کند. سپس فرایند بررسی، نظارت و کنترل برنامه مبتنی بر ریز سرویس ها (microservices) را آسان می کند.
این برنامه یک نما از سراسر برنامه و زیرساخت ارائه می دهد.
ویژگی و قابلیت های Weave Scope :
- پشتیبانی از توسعه به صورت local، میزبانی شده یا ترکیبی.
- امکان جمع آوری و گزارش معیارهای هاست یا کانتینر.
- جمع آوری معیارها (metrics)، رویدادها (events) و برچسب ها (labels) از Kubernetes.
- Metric های متنی بلادرنگ(realtime).
- فیلتر کردن گره ها (Nodes) توسط CPU و مدیریت حافظه، جهت شناسایی سریع کانتینرها با استفاده از بیشترین منابع.
7. Zabbix
با استفاده از Zabbix، می توان بینهایت داده از انواع مختلف ایجاد کرد. سیستم های نظارت بلادرنگ (realtime system) که عملکرد بالایی دارند، قادر به کنترل همزمان ده ها هزار سرور، ماشین مجازی و دستگاه های شبکه هستند.
علاوه بر ذخیره داده ها، استفاده از ویژگی های visualization راهکار قابل دسترسی تر و انعطاف پذیر تر برای کشف داده ها، برای هشدار دهنده هستند.
ویژگی و قابلیت های Zabbix :
- آنالیز دلایل به صورت ریشه ای (Root).
- کمک به حفظ داده ها در قالب JSON.
- نظارت بلادرنگ(realtime).
- ارائه پروکسی Zabbix برای سیستم های تولید در مقیاس گسترده.
- گزارشات Drill-Down.
- قابل تنظیم و توسعه پذیر.
همچنین، Zabbix یک انتخاب عالی برای نظارت بر زیرساخت و معیارهای برنامه محسوب میشود.
8. Kubernetes Dashboard
داشبورد Kubernetes یک ابزار نظارت دقیق نیست، اما دارای یک رابط کاربری عمومی برای Kubernetes است که در آن می توانید Kubernetes cluster را مدیریت و عیب یابی کنید. اگر در حال حاضر از هیچ ابزار نظارتی و مانیتورینگ استفاده نمی کنید، Kubernetes Dashboard یک انتخاب مناسب برای شروع است.