مانیتورینگ و آلرتینگ با Prometheus و Grafana: راهنمای جامع 101

مانیتورینگ و آلرتینگ با Prometheus و Grafana: راهنمای جامع 101
Monitoring and Alerting with Prometheus and Grafana: A Complete Guide

در دنیای امروز، مدیریت و نظارت بر زیرساخت‌های IT اهمیت زیادی دارد. سرویس‌های زیادی برای مانیتورینگ وجود دارند، اما ترکیب Prometheus و Grafana یکی از محبوب‌ترین و قدرتمندترین راه‌حل‌هاست که امکان نظارت لحظه‌ای و ایجاد آلرت‌های دقیق را فراهم می‌کند. در این مقاله به بررسی مراحل نصب و پیکربندی Prometheus و Grafana، نحوه‌ی جمع‌آوری داده‌ها، ایجاد داشبوردهای گرافیکی و پیکربندی آلرت‌ها می‌پردازیم.

۱. Prometheus چیست؟

Prometheus یک ابزار مانیتورینگ و جمع‌آوری داده‌ی Open-source است که توسط SoundCloud توسعه یافته و اکنون توسط بنیاد Cloud Native Computing پشتیبانی می‌شود. Prometheus بر مبنای Pull Model عمل می‌کند، یعنی داده‌ها را از سیستم‌ها و سرویس‌های مختلف به صورت دوره‌ای استخراج می‌کند. داده‌ها در Prometheus به صورت Time-series ذخیره می‌شوند، یعنی هر مقدار داده با یک timestamp مرتبط است و قابلیت تحلیل و بررسی روندها را فراهم می‌کند.

۱.۱. ویژگی‌های اصلی Prometheus

  • Time-series Database (TSDB): داده‌ها به صورت زمان‌محور ذخیره می‌شوند و هر داده شامل یک نام متریک، مقدار و timestamp است.
  • Query Language (PromQL): یک زبان قدرتمند برای جستجوی داده‌ها و محاسبات آماری.
  • Data Collection: Prometheus داده‌ها را از طریق Exporters جمع‌آوری می‌کند که سرویس‌ها را برای داده‌های مانیتورینگ آماده می‌کند.
  • Alerting: امکان پیکربندی هشدارها و ارسال آن‌ها به Alertmanager برای مدیریت آلرت‌ها.

۲. Grafana چیست؟

Grafana یک ابزار گرافیکی Open-source برای نمایش داده‌های مانیتورینگ است. Grafana قابلیت اتصال به دیتابیس‌های مختلف از جمله Prometheus را دارد و می‌توان از آن برای ایجاد داشبوردهای تعاملی و متنوع استفاده کرد. با Grafana می‌توانید وضعیت سیستم‌ها، سرورها و سرویس‌ها را به صورت نمودار و گراف‌های زنده و بصری مشاهده کنید.

۲.۱. ویژگی‌های اصلی Grafana

  • قابلیت اتصال به دیتابیس‌های مختلف: علاوه بر Prometheus، می‌تواند به Elasticsearch، InfluxDB و PostgreSQL نیز متصل شود.
  • داشبوردهای تعاملی: امکان ایجاد نمودارها، جداول و گراف‌ها با انواع مختلف ویجت‌ها.
  • Alerting: قابلیت تعریف آلرت‌ها به ازای شرایط مشخص و ارسال آن‌ها به ایمیل، Slack و سایر کانال‌های ارتباطی.
  • مدیریت دسترسی: امکان کنترل دسترسی‌ها و تنظیم سطح دسترسی کاربران.

۳. نصب و پیکربندی Prometheus

برای نصب Prometheus، باید فایل باینری آن را از سایت رسمی دانلود کنید. دستور زیر برای نصب در سیستم‌های Linux کاربرد دارد:

wget https://github.com/prometheus/prometheus/releases/download/v2.40.1/prometheus-2.40.1.linux-amd64.tar.gz
tar -xvf prometheus-2.40.1.linux-amd64.tar.gz
cd prometheus-2.40.1.linux-amd64

۳.۱. پیکربندی فایل prometheus.yml

فایل اصلی تنظیمات در Prometheus به نام prometheus.yml است. این فایل شامل پیکربندی‌های مختلف از جمله تنظیمات Targets (سرویس‌هایی که باید مانیتور شوند) و تنظیمات Scrape Interval می‌باشد.

global:
  scrape_interval: 15s  

scrape_configs:
  - job_name: 'node_exporter'
    static_configs:
      - targets: ['localhost:9100']

در این مثال، ما به Prometheus می‌گوییم که هر ۱۵ ثانیه داده‌های node_exporter را از آدرس localhost:9100 جمع‌آوری کند.

۳.۲. اجرای Prometheus

پس از پیکربندی، Prometheus را می‌توان به سادگی با دستور زیر اجرا کرد:

./prometheus --config.file=prometheus.yml

Prometheus به صورت پیش‌فرض از طریق پورت 9090 قابل دسترسی است. با باز کردن آدرس http://localhost:9090 در مرورگر، می‌توانید به رابط کاربری آن دسترسی پیدا کنید و کوئری‌های PromQL را اجرا کنید.


۴. نصب و پیکربندی Grafana

Grafana را می‌توان از طریق پکیج‌های رسمی یا فایل‌های باینری نصب کرد. در سیستم‌های Ubuntu، می‌توانید با دستورات زیر Grafana را نصب کنید:

sudo apt-get install -y software-properties-common
sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"
sudo apt-get update
sudo apt-get install grafana

۴.۱. اضافه کردن Prometheus به Grafana

بعد از نصب، Grafana را اجرا کنید و به آدرس http://localhost:3000 بروید. پیش‌فرض ورود admin و رمز admin است.

برای اضافه کردن Prometheus به عنوان دیتابیس:

  1. به منوی Configuration و سپس Data Sources بروید.
  2. گزینه Add Data Source را انتخاب کنید.
  3. Prometheus را به عنوان نوع دیتابیس انتخاب کنید و URL آن را به صورت http://localhost:9090 وارد کنید.
  4. تنظیمات را ذخیره کنید.

۴.۲. ایجاد داشبورد در Grafana

پس از اضافه کردن Prometheus به عنوان منبع داده، می‌توانید داشبوردهای مختلفی برای مانیتورینگ سرویس‌ها ایجاد کنید. برای ایجاد یک داشبورد جدید:

  1. به منوی Create و سپس Dashboard بروید.
  2. گزینه Add New Panel را انتخاب کنید و نوع گراف و Query مورد نظر را مشخص کنید.
  3. با استفاده از PromQL می‌توانید متریک‌های مختلف را به داشبورد اضافه کنید.

۵. استفاده از Exporter‌ها برای جمع‌آوری داده‌ها

Exporterها ابزارهایی هستند که داده‌های متریک را از سرویس‌های مختلف استخراج می‌کنند و به Prometheus ارسال می‌کنند. برخی از رایج‌ترین Exporter‌ها عبارتند از:

  • Node Exporter: برای جمع‌آوری داده‌های سیستمی مانند CPU، RAM و Disk.
  • Blackbox Exporter: برای نظارت بر سرویس‌های خارجی مانند HTTP و Ping.
  • MySQL Exporter: برای مانیتورینگ دیتابیس MySQL.
  • Redis Exporter: برای جمع‌آوری داده‌های عملکردی از Redis.

برای نصب Node Exporter:

wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz
tar -xvf node_exporter-1.3.1.linux-amd64.tar.gz
cd node_exporter-1.3.1.linux-amd64
./node_exporter

با اجرای این دستور، Node Exporter روی پورت 9100 اجرا می‌شود و می‌توان آن را به عنوان یک Target در فایل prometheus.yml اضافه کرد.


۶. پیکربندی آلرت‌ها در Prometheus

یکی از قابلیت‌های مهم Prometheus امکان تعریف Alert برای شرایط خاص است. برای مثال، اگر میزان استفاده CPU بیشتر از ۹۰٪ باشد، می‌توان یک هشدار ایجاد کرد.

۶.۱. تعریف Alert در فایل prometheus.yml

alerting:
  alertmanagers:
    - static_configs:
        - targets:
          - 'localhost:9093'

rule_files:
  - "alert.rules"

۶.۲. تعریف قوانین آلرت در alert.rules

groups:
  - name: instance
    rules:
      - alert: HighCPUUsage
        expr: node_cpu_seconds_total{mode="idle"} < 10
        for: 1m
        labels:
          severity: warning
        annotations:
          summary: "CPU usage is too high"
          description: "CPU usage is above 90% for the past 1 minute"

در این مثال، اگر میزان استفاده CPU بیشتر از ۹۰٪ باشد و این حالت به مدت ۱ دقیقه ادامه یابد، یک هشدار با سطح warning ایجاد می‌شود.

۶.۳. استفاده از Alertmanager برای ارسال هشدارها

Alertmanager یک ابزار برای مدیریت و ارسال هشدارها است. می‌توانید آن را نصب کرده و به Prometheus متصل کنید تا هشدارها را به ایمیل، Slack یا سایر کانال‌ها ارسال کنید.


۷. ایجاد آلرت در Grafana

علاوه بر Prometheus، می‌توانید در Grafana نیز آلرت‌ها را تعریف کنید. در هر Panel گزینه‌ای برای تعریف شرایط هشدار وجود دارد. برای مثال، اگر مقدار یک متریک خاص از حد مشخصی بالاتر یا پایین‌تر برود، می‌توانید آلرت ایجاد کنید.

۷.۱. تنظیم آلرت در Grafana

  • در هر پنل، به تب Alert بروید.
  • شرایط هشدار را با انتخاب Thresholdها و مقادیر مشخص کنید.
  • تنظیمات را ذخیره کنید تا هشدار فعال شود.

نتیجه‌گیری

ترکیب Prometheus و Grafana ابزاری قدرتمند برای مانیتورینگ و آلرتینگ سرویس‌ها و زیرساخت‌های مختلف است. Prometheus به جمع‌آوری داده‌های زمان‌محور و Grafana به نمایش گرافیکی آن‌ها کمک می‌کند. همچنین، پیکربندی آلرت‌ها در این دو ابزار باعث می‌شود که بتوانید به سرعت از مشکلات مطلع شوید و اقدامات لازم را انجام دهید. با پیاده‌سازی این راهکار، نه تنها دید کاملی به وضعیت سیستم‌ها خواهید داشت، بلکه می‌توانید در سریع‌ترین زمان ممکن به مشکلات پاسخ دهید.