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