معرفی سرویس Prometheus Anomaly Detector

یکی از جذاب و مفید ترین سرویس هایی که میشود در جهت تکمیل ابزار های مانیتورینگ استفاده کرد، قطعا سرویس Prometheus Anomaly Detector است . ماهیت این سرویس تشخیص موارد ناهنجاری ( Anomaly ) بر اساس دیتا Prometheus است شاید به این موضوع فکر کنین که استفاده از این سرویس چه مزیت خواهد داشت، در جواب این موضوع می توان گفت این سرویس به تیم NOC - DevOps کمک میکند که به صورت هوشمند ناهنجاری های در سیستم مانیتورینگ تشخیص داده شود و بر اساس این دیتا میشود هشدار هوشمندی دریافت کرد ( Smart Alerting ) قطعا بررسی کردن تمامی گراف ها و دیتا سیستم مانیتورینگ امری دشوار است و این موضوع به صورت مداوم در تمام لحظات نخواهد بود . در حالی که این سرویس در تمامی مواقع رفتار سیستم مانیتورینگ را بررسی و پایش میکند . همچنین ست کردن آلارم های با Threshold فیکس برای خیلی از سرویس های ممکن نیست و نیازمند این است که رفتار های سرویس ها تشخیص داده شود و بر اساس اون به صورت منعطف بازه تشخیص ناهنجاری تنظیم گردد. این ناهنجاری های می تواند شامل افزایش غیر معمول درخواست به سرویس ها، مصرف غیر عادی منابع و افزایش یا کاهش شدید ترافیک در شبکه و … باشد .معمولا تشخیص و اطلاع به موقع از حوادث یا ناهنجاری ها در سیستم مانیتورینگ میتواند مدت زمان حل مشکل را تا حد زیادی کاهش دهد و باعث بهبود عملکرد تیم فنی در مواقع حوادث باشد .سورس پروژه رو میتونین از ادرس https://github.com/AICoE/prometheus-anomaly-detector دریافت کنید. ما برای اجرای اون Docker-Compose فایل تهیه کردیم که بشود راحت تر پروژه را اجرا و مدیریت کرد.version: &quot3.1&quot services: pad: image: quay.io/aicoe/prometheus-anomaly-detector:latest ports: - 8080:8080 environment: FLT_PROM_URL: &quothttp://prometheus&quot FLT_RETRAINING_INTERVAL_MINUTES: 1 FLT_METRICS_LIST: 'example promql query' APP_FILE: &quotapp.py&quot FLT_DATA_START_TIME: &quot3d&quot FLT_ROLLING_TRAINING_WINDOW_SIZE: &quot15d&quotتمامی Environment Variable ها در پروژه Github این سرویس توضیح داده شده است . همچین در این پروژه Github توضیحات کامل از مدل پردازش دیتا ارائه داده شده .چند نکته در رابطه با نصب و راه اندازی این سرویس :‌ این سرویس برای اجرا و پردازش از CPU به شدت استفاده می کند و استفاده از منابع این نرم افزار اصلا بهینه نیست . با یک سری تغییرات روی کد توانستیم کمی بهتر کنیم این موضوع که هر موقع تکمیل شود قطعا روی سورس اصلی Commit خواهیم داشت .برای Train دیتا نیاز شما Query Promql به این سرویس بدهید . Query هایی که نسبتا سنگین هستن بهتر ابتدا با Recording Rule به یک time series جدید تبدیل بشن سپس در این سرویس از آنها استفاده کنینgroups: - name: example rules: - record: job:http_inprogress_requests:sum expr: sum by (job) (http_inprogress_requests) شما میتوانید بر اساس اینکه سیستم Anomaly تشخیص داده یا اینکه نسبت yhat_uper - yhat_lower به دیتای اصلی شما چند درصد رشد یا کاهش داشته آلارم ست کنید . این آلارم های هوشمند شما رو از ناهنجاری های در حال وقوع مطلع میکنه .- alert: transaction-anomaly expr: avg(transactions:rate5m) / avg(transactions:rate5m_prophet{value_type=&quotyhat&quot}) * 100 - 100 > 10 or transactions:rate5m_prophet{value_type=&quotanomaly&quot} == 1 for: 10s labels: severity: page annotations: summary: &quot an anomaly detected on database transactions &quot message: &quot transaction on the database is {{$value}}% upper than normal value &quot برای ساخت داشبورد بهتر است مجموع از دیتا اصلی خود و دیتا مربوط به سرویس Anomaly Detection نمایش داده شود به این دلیل که بتوان بررسی کرد که مقدار های Predict شده تا چه حد قابل اطمینان و درست هستن و رفتار فعلی سیستم تا چه در بازه نرمال پیش بینی شده قرار دارد .قطعا همکاران گرامی و متخصصان حوزه AI میتونن این مبحث تکمیل کنند همونجور که بسیاری از سازمان ها دستاورد های خوبی در این زمینه داشتند و محصولات مشابه خوبی توسعه داده اند . مفهوم Anomaly Detection و استفاده از AI در ابزار های Devops مخصوصا Monitoring بسیار گسترده است و خیلی ویژگی دیگر دارد که این سرویس همگی آنها را پوشش نمی دهد .ممنون از توجه شمالینک های تکمیلی :‌ https://prometheus.io/blog/2015/06/18/practical-anomaly-detection&amp;lt;br/&amp;gt;https://events19.linuxfoundation.org/wp-content/uploads/2017/12/AIOps-Anomaly-Detection-with-Prometheus-Marcel-Hild-Red-Hat.pdf&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;