شهروز جعفری
شهروز جعفری
خواندن ۳ دقیقه·۵ سال پیش

نکاتی در رابطه با Prometheus

چرا به یک سیستم مانیتورینگ نیاز داریم؟

  • اطمینان از دسترس بودن
  • اطمینان از سریع بودن
  • اطمینان از کارکرد درست
  • اطمینان از کارآمد بودن
  • و ...

انواع مانیتورینگ ها:

  • Check base monitoring :اجرای اسکریپت دربازه های مشخص و سنجش سلامت سرویس
    • وجودش از نبودش بهتر است.
    • پایش سیستم به صورت black box
    • تمرکز این مانیتورینگ به سلامت سیستم در لحظه حال است.
    • در محیط های پیچیده به مشکل میخوریم.مثلا محیط های عملیات داینامیک.
  • Log and events:رکورد کردن تمام لاگ ها مربوط به هر رخداد. برای مثال لاگ های آپاچی سرور.
    • ذخیره جزئیات زیاد.
    • راحتی در راه اندازی.
    • پیاده سازی گران. به خاطر مسائلی از قبیل استوریج و ...برای مثال اگر یک میلیون رکوئست در ثانیه را بخواهیم ذخیره کنیم نیاز به زیر ساخت عظیمی خواهیم داشت.
    • عدم امکان پایش یک رکوئست در کل استک.منظور از کل استک یعنی از زمانی که رکوئست به دست اولین نود ما میرسد تا زمانی که جواب آن را می دهیم.
  • Metrics/time series:پایش مقادیر مجزای عددی در زمان های مشخص. برای مثال دما،میزان رم
    • ارزان تر از نوع Log and events است.
    • برای پایش سلامت سرویس مناسب تر از باقی مانیتورینگ ها است.
    • راحتی در راه اندازی.
    • این نوع مانیتورینگ داده های کمتری برای دیباگ کردن به ما می دهد.
    • عدم امکان پایش یک رکوئست در کل استک.
  • Request tracing:پایش یک رکوئست در کل استک.
    • توانایی پایش یک رکوئست.
    • امکان دیباگ کردن یک رکوئست.
    • هزینه پیاده سازی بالا
    • مناسب برای مکان هایی که از مدل رکوئیستی استفاده می کنند.
    • مناسب برای مکان هایی که از مدل رکوئیستی استفاده می کنند.

Prometheus:

یک سیستم مانیتورینگ بر اساس Metrics/time series است که توسط SoundCloud's توسعه داده شده است. به این تربیت که تمام داده ها از تمام استک جمع آوری و ذخیره می شود. روی این داده ها میتوانیم هشدار های مورد نیازمان را تعریف کنیم. همچنین می توانیم داشبورد های متفاوتی ایجاد کنیم و یا حتی روی آن ها کوئری بگیریم. این سیستم برای محیط های ابری و داینامیک(container base) ایجاد شده است.

Prometheus از google borgmon ( سیستم مانیتورینگ داخلی گوگل) الهام گرفته است.Prometheus برای مانیتور کردن محیط های داینامیک ،محیطهایی که به صورت زمانبندی شده پراسس ها و یا کانتینر هایی را ایجاد می کنند و از بین می برد (از طریق service discovery) مناسب است.

Prometheus چه چیزی نیست؟

  • Logging or tracing
  • امکان تشخیص اتوماتیک رفتار مشکوک
  • Scaling or durable storage
  • یک شرکت مجزا نیست

معماری

Prometheus به صورت کتابخانه به برنامه های ما importمی شود و یک http endpoint ایجاد می کند که از طریق آن متریک ها را به صورت pulling جمع آوری می کند.در واقع به صورتwhitebox مانیتورینگ انجام می شود.

راه حلی که در بالا توضیح داده شد برای زمانی است که بخواهیم برنامه ای که توسعه دادیم را مانیتور کنیم .Prometheus این امکان را می دهد که به وسیله exporter ها لینوکس و یا mysqlو ... را نیز مانیتور کنیم.

Exporter در واقع کارش جمع آوری متریک ها و تبدیل آن ها به زبان Prometheus است.

شکل پایین نمای کلی از جمع آوری متریک ها توسط Prometheus را نشان می دهد و همانطور که پیشتر نیز گفته شد Prometheus از pulling استفاده می کند.

همانطور که مشاهده می کنید امکان استفاده از ماژول های مختلف برای موضوعاتی از قبلی مدیریت هشدار ها و یا دشبورد و حتی اتوماتیک سازی وجود دارد.

Prometheus داده هایش را به صورت time series نگهداری می کند.

Identifier یعنی چه متریکی + یک آرایه ای از(زمان و مقدار )را ذخیره می کند.

Prometheus برای کوئری گرفتن روی داده از promQL استفاده می کند.

از نظر محیط اجرایی Prometheus به خیلی ساده اجرا می شود:

prometheusمانیتورینگmonitoring
برنامه نویس
شاید از این پست‌ها خوشتان بیاید