مانیتورینگ و آلرتینگ با Prometheus و Grafana: راهنمای جامع 101
در دنیای امروز، مدیریت و نظارت بر زیرساختهای 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 به عنوان دیتابیس:
- به منوی Configuration و سپس Data Sources بروید.
- گزینه Add Data Source را انتخاب کنید.
- Prometheus را به عنوان نوع دیتابیس انتخاب کنید و URL آن را به صورت
http://localhost:9090
وارد کنید. - تنظیمات را ذخیره کنید.
۴.۲. ایجاد داشبورد در Grafana
پس از اضافه کردن Prometheus به عنوان منبع داده، میتوانید داشبوردهای مختلفی برای مانیتورینگ سرویسها ایجاد کنید. برای ایجاد یک داشبورد جدید:
- به منوی Create و سپس Dashboard بروید.
- گزینه Add New Panel را انتخاب کنید و نوع گراف و Query مورد نظر را مشخص کنید.
- با استفاده از 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 به نمایش گرافیکی آنها کمک میکند. همچنین، پیکربندی آلرتها در این دو ابزار باعث میشود که بتوانید به سرعت از مشکلات مطلع شوید و اقدامات لازم را انجام دهید. با پیادهسازی این راهکار، نه تنها دید کاملی به وضعیت سیستمها خواهید داشت، بلکه میتوانید در سریعترین زمان ممکن به مشکلات پاسخ دهید.