برای هر مدیر دیتابیس، بدترین سناریو این است که مشکل عملکرد یا مصرف منابع زمانی دیده شود که کار از کار گذشته. اینجاست که ابزارهای مانیتورینگ حرفهای وارد بازی میشوند.
Prometheus یک سیستم مانیتورینگ و Alerting متنباز است که متریکها را بهصورت دادههای سری زمانی (Time-Series) جمعآوری و ذخیره میکند.
Grafana هم یک پلتفرم قدرتمند برای نمایش گرافیکی، تحلیل دادهها و ساخت داشبوردهای حرفهای است.
ترکیب این دو ابزار به شما اجازه میدهد:
-
وضعیت لحظهای MongoDB را ببینید
-
مصرف منابع و عملکرد دیتابیس را تحلیل کنید
-
هشدار (Alert) تنظیم کنید
-
مشکلات را قبل از تبدیل شدن به بحران شناسایی کنید
در این آموزش، یک سرور MongoDB را به کمک MongoDB Exporter به Prometheus متصل میکنیم و سپس دادهها را داخل Grafana نمایش میدهیم.
پیشنیازها
قبل از شروع، موارد زیر باید آماده باشد:
-
سرور Ubuntu 20.04
-
یک کاربر با دسترسی sudo
-
فعال بودن فایروال UFW
-
نصب بودن MongoDB
-
نصب و ایمنسازی Grafana
-
نصب بودن Nginx (در صورت استفاده از دامنه)
-
داشتن دامنه متصل به سرور (برای دسترسی به Grafana از طریق وب)
| مرحله | هدف |
|---|---|
| ۱. نصب Prometheus | راهاندازی سرویس جمعآوری و ذخیره متریکها |
| ۲. نصب MongoDB Exporter | استخراج متریکهای MongoDB برای Prometheus |
| ۳. اتصال Exporter به Prometheus | تعریف Exporter بهعنوان یک هدف مانیتورینگ |
| ۴. ساخت داشبورد در Grafana | نمایش گرافیکی و لحظهای وضعیت MongoDB |
مرحله ۱: نصب و راهاندازی Prometheus
بروزرسانی سیستم
sudo apt updateساخت دایرکتوریهای موردنیاز
sudo mkdir -p /etc/prometheus
sudo mkdir -p /var/lib/prometheusدانلود Prometheus
نسخه باینری را دانلود کنید:
wget https://github.com/prometheus/prometheus/releases/download/v2.31.0/prometheus-2.31.0.linux-amd64.tar.gz
tar -xvf prometheus-2.31.0.linux-amd64.tar.gz
cd prometheus-2.31.0.linux-amd64انتقال فایلها
sudo mv prometheus promtool /usr/local/bin/
sudo mv consoles/ console_libraries/ /etc/prometheus/
sudo mv prometheus.yml /etc/prometheus/prometheus.ymlساخت کاربر اختصاصی
sudo groupadd --system prometheus
sudo useradd -s /sbin/nologin --system -g prometheus prometheus
sudo chown -R prometheus:prometheus /etc/prometheus/ /var/lib/prometheus/ساخت سرویس systemd
فایل زیر را ایجاد کنید:
sudo nano /etc/systemd/system/prometheus.serviceمحتوا:
[Unit]
Description=Prometheus
Wants=network-online.target
After=network-online.target
[Service]
User=prometheus
Group=prometheus
Type=simple
ExecStart=/usr/local/bin/prometheus \
--config.file=/etc/prometheus/prometheus.yml \
--storage.tsdb.path=/var/lib/prometheus \
--web.console.templates=/etc/prometheus/consoles \
--web.console.libraries=/etc/prometheus/console_libraries \
--web.listen-address=0.0.0.0:9090
[Install]
WantedBy=multi-user.targetسرویس را اجرا کنید:
sudo systemctl daemon-reload
sudo systemctl start prometheus
sudo systemctl enable prometheusدر صورت نیاز، پورت را باز کنید:
sudo ufw allow 9090مرحله ۲: نصب MongoDB Exporter
Prometheus برای خواندن متریکهای MongoDB به Exporter نیاز دارد.
دانلود Exporter
mkdir mongodb-exporter
cd mongodb-exporter
wget https://github.com/percona/mongodb_exporter/releases/download/v0.7.1/mongodb_exporter-0.7.1.linux-amd64.tar.gz
tar xvzf mongodb_exporter-0.7.1.linux-amd64.tar.gz
sudo mv mongodb_exporter /usr/local/bin/فعالسازی احراز هویت در MongoDB
وارد شل MongoDB شوید:
mongo
use adminساخت کاربر مانیتورینگ:
db.createUser({
user: "monitor",
pwd: "strongpassword",
roles: [
{ role: "clusterMonitor", db: "admin" },
{ role: "read", db: "local" }
]
})تنظیم متغیر اتصال:
export MONGODB_URI="mongodb://monitor:strongpassword@localhost:27017"اجرای MongoDB Exporter بهصورت سرویس
sudo nano /lib/systemd/system/mongodb_exporter.serviceمحتوا:
[Unit]
Description=MongoDB Exporter
[Service]
Type=simple
Restart=always
ExecStart=/usr/local/bin/mongodb_exporter
[Install]
WantedBy=multi-user.targetاجرا:
sudo systemctl daemon-reload
sudo systemctl start mongodb_exporterتست:
curl http://localhost:9216/metricsمرحله ۳: اتصال Exporter به Prometheus
فایل کانفیگ را ویرایش کنید:
sudo nano /etc/prometheus/prometheus.ymlاضافه کنید:
scrape_configs:
- job_name: "prometheus"
static_configs:
- targets: ["localhost:9090"]
- job_name: "mongodb"
static_configs:
- targets: ["localhost:9216"]سپس:
sudo systemctl restart prometheusمرحله ۴: ساخت داشبورد در Grafana
-
ورود به Grafana (پورت 3000)
-
رفتن به Configuration → Data Sources
-
افزودن Prometheus با آدرس:
http://your_server_ip:9090-
ذخیره و تست اتصال
ایمپورت داشبورد MongoDB
-
مسیر: Create → Import
-
Dashboard ID: 7353
-
انتخاب Data Source = Prometheus
حالا داشبورد مانیتورینگ MongoDB آماده است و میتوانید موارد زیر را ببینید:
-
تعداد Connectionها
-
عملیات خواندن/نوشتن
-
مصرف حافظه
-
وضعیت Cursorها
-
صف عملیات دیتابیس
جمعبندی
با راهاندازی این ساختار:
MongoDB → Exporter → Prometheus → Grafana
شما یک سیستم مانیتورینگ حرفهای دارید که:
-
عملکرد دیتابیس را لحظهای نمایش میدهد
-
امکان تحلیل روندها را میدهد
-
پایهای برای Alertهای هوشمند فراهم میکند
این ساختار یکی از استانداردهای مانیتورینگ در محیطهای Production محسوب میشود و برای هر زیرساخت جدی، ضروری است.
