چرا به یک سیستم مانیتورینگ نیاز داریم؟
انواع مانیتورینگ ها:
Prometheus:
یک سیستم مانیتورینگ بر اساس Metrics/time series است که توسط SoundCloud's توسعه داده شده است. به این تربیت که تمام داده ها از تمام استک جمع آوری و ذخیره می شود. روی این داده ها میتوانیم هشدار های مورد نیازمان را تعریف کنیم. همچنین می توانیم داشبورد های متفاوتی ایجاد کنیم و یا حتی روی آن ها کوئری بگیریم. این سیستم برای محیط های ابری و داینامیک(container base) ایجاد شده است.
Prometheus از google borgmon ( سیستم مانیتورینگ داخلی گوگل) الهام گرفته است.Prometheus برای مانیتور کردن محیط های داینامیک ،محیطهایی که به صورت زمانبندی شده پراسس ها و یا کانتینر هایی را ایجاد می کنند و از بین می برد (از طریق service discovery) مناسب است.
Prometheus چه چیزی نیست؟
معماری
Prometheus به صورت کتابخانه به برنامه های ما importمی شود و یک http endpoint ایجاد می کند که از طریق آن متریک ها را به صورت pulling جمع آوری می کند.در واقع به صورتwhitebox مانیتورینگ انجام می شود.
راه حلی که در بالا توضیح داده شد برای زمانی است که بخواهیم برنامه ای که توسعه دادیم را مانیتور کنیم .Prometheus این امکان را می دهد که به وسیله exporter ها لینوکس و یا mysqlو ... را نیز مانیتور کنیم.
Exporter در واقع کارش جمع آوری متریک ها و تبدیل آن ها به زبان Prometheus است.
شکل پایین نمای کلی از جمع آوری متریک ها توسط Prometheus را نشان می دهد و همانطور که پیشتر نیز گفته شد Prometheus از pulling استفاده می کند.
همانطور که مشاهده می کنید امکان استفاده از ماژول های مختلف برای موضوعاتی از قبلی مدیریت هشدار ها و یا دشبورد و حتی اتوماتیک سازی وجود دارد.
Prometheus داده هایش را به صورت time series نگهداری می کند.
Identifier یعنی چه متریکی + یک آرایه ای از(زمان و مقدار )را ذخیره می کند.
Prometheus برای کوئری گرفتن روی داده از promQL استفاده می کند.
از نظر محیط اجرایی Prometheus به خیلی ساده اجرا می شود: