در قسمت قبلی مفاهیم اولیه Monitoring را یاد گرفتید و حالا نوبت مرحله ی بعدی یعنی آشنایی با Metric ها و نحوه ی تعامل Prometheus به عنوان یک ابزار مانیتورینگ با آنهاست.
متریک ها داده های عددی هستند که جنبه های خاصی از عملکرد، رفتار یا وضعیت یک سیستم را در یک نقطه زمانی معین نشان می دهند. متریک ها برای نظارت و درک نحوه عملکرد یک سیستم ضروری هستند. در ادامه برخی از ویژگی های کلیدی متریک ها آورده شده است:
انواع Metric
چندین نوع متریک وجود دارد، از جمله:
شمارنده: معیارهایی که به طور مداوم در طول زمان افزایش مییابند، مانند تعداد درخواستهای پردازش شده یا خطاهایی که با آن مواجه میشوند.
نمونه ای از نوع متریک Counter:
http_requests_total{method="GET"} 123
سنج ها: معیارهایی که می توانند افزایش یا کاهش پیدا کنند، نشان دهنده مقادیری مانند استفاده از CPU، استفاده از حافظه یا تعداد اتصالات فعال هستند.
نمونه ای از نوع متریک Gauge:
cpu_usage_percentage{service="web"} 75.2
هیستوگرام ها و خلاصه ها: معیارهایی که توزیع داده ها را ثبت می کنند، مانند زمان پاسخ یا اندازه درخواست. این متریک ها به شما امکان می دهند صدک ها و چندک ها را تجزیه و تحلیل کنید.
نمونه ای از نوع متریک Histogram:
http_request_duration_seconds_bucket{le="0.1", method="GET"} 5
برچسب ها (Labels)
متریکها اغلب دارای برچسب های مرتبط (جفت کلید-مقدار) هستند که اطلاعات اضافی را ارائه می دهند. برچسب ها برای تمایز بین نمونه های مختلف یک متریک بسیار مهم هستند. به عنوان مثال، یک متریک ممکن است دارای برچسبی باشد که نشان دهنده روش HTTP استفاده شده (به عنوان مثال، GET یا POST) یا نام سرویس باشد.
داده های سری زمانی (Time Series Data)
معیارها در طول زمان جمع آوری می شوند و داده های سری زمانی را تشکیل می دهند. هر سری زمانی منحصراً با نام متریک و مجموعه ای از برچسب ها مشخص می شود. برای مثال، اگر نرخ درخواست HTTP را برای سرویسهای مختلف نظارت میکنید، ممکن است سریهای زمانی مانند این داشته باشید:
http_requests_total{service="web"}
و
http_requests_total{service="api"}
مراحل کار Prometheus از جمع آوری متریک ها تا تصویرسازی آنها
Prometheus یک جعبه ابزار ماینتورینگ و هشدار منبع باز است که در جمع آوری، ذخیره و جستجوی متریک ها فوق العاده است. در ادامه نحوه برخورد پرومتئوس با متریک ها را خواهیم دید:
1- جمع آوری متریک
Prometheus به طور دوره ای متریک ها را از endpoint ها یا اهداف تعیین شده جمع آوری می کند (یا به قول خودش scrapes میکند.). این endpoint ها می توانند Application ها، Service ها، سرورها یا حتی سایر سرورهای Prometheus باشند. Prometheus از پروتکل های مختلفی از جمله HTTP، HTTPS و غیره پشتیبانی می کند.
2- ذخیره سازی داده ها
Prometheus متریک ها را به صورت Local در پایگاه داده سری زمانی خود جمع آوری می کند. داده ها در یک فرمت فشرده ذخیره می شوند که برای کوئری و ذخیره سازی کارآمد بهینه شده است.
Prometheus یک زبان پرس و جو قدرتمند به نام PromQL ارائه می دهد. کاربران می توانند کوئریهای PromQL را برای بازیابی و دستکاری داده های متریک بنویسند. برای مثال، میتوانید میانگین استفاده از CPU را در یک پنجره زمانی خاص محاسبه کنید یا معیارهای سنجش را بر اساس برچسبها فیلتر کنید.
در بخش های بعدی از همین سری آموزش به PromQL هم می پردازیم.
3- قوانین Alerting
Prometheus به شما امکان می دهد قوانین هشدار را بر اساس عبارات PromQL تعریف کنید. هنگامی که شرایط یک قانون برآورده می شود، Prometheus هشدارهایی تولید می کند که می تواند برای پردازش بیشتر و اطلاع رسانی به مدیران و افرادی که باید روی هشدارها کار کنند ارسال شود.
4- حفظ و پاکسازی داده ها
Prometheus به شما امکان می دهد سیاست هایی را برای حفظ داده ها ایجاد و تنظیم کنید و مشخص کنید چه مدت می خواهید داده ها را نگه دارید. با کمک Prometheus داده های قدیمی را می توان به طور خودکار برای مدیریت فضای دیسک پاک کرد.
5- مقیاس پذیری
Prometheus را می توان به شیوه ای مقیاس پذیر برای رسیدگی به نیازهای مانیتورینگ سیستم های بزرگ و توزیع شده مستقر کرد.
6- Grafana
Prometheus اغلب در ارتباط با ابزارهای تصویر سازی مانند Grafana استفاده می شود. Grafana می تواند داشبوردهای تعاملی ایجاد کند و متریک های Prometheus را تصویر سازی کند تا به دست آوردن بینش از داده های جمع آوری شده آسان تر شود.
به طور خلاصه، Prometheus یک ابزار همه کاره برای جمع آوری، پرس و جو و هشدار بر اساس داده های متریک است. در مدیریت داده های سری زمانی برتری دارد و یک اکوسیستم قوی برای نظارت و مشاهده در محیط های مختلف فراهم می کند.
در این بخش هم با متریک ها و Prometheus بیشتر آشنا شدید و حالا نوبت آن رسیده که بریم سراغ اجزای اصلی و معماری Prometheus.