برای هر مدیر دیتابیس، بدترین سناریو این است که مشکل عملکرد یا مصرف منابع زمانی دیده شود که کار از کار گذشته. اینجاست که ابزارهای مانیتورینگ حرفهای وارد بازی میشوند.
Prometheus یک سیستم مانیتورینگ و Alerting متنباز است که متریکها را بهصورت دادههای سری زمانی (Time-Series) جمعآوری و ذخیره میکند.
Grafana هم یک پلتفرم قدرتمند برای نمایش گرافیکی، تحلیل دادهها و ساخت داشبوردهای حرفهای است.
ترکیب این دو ابزار به شما اجازه میدهد:
-
وضعیت لحظهای MongoDB را ببینید
-
مصرف منابع و عملکرد دیتابیس را تحلیل کنید
-
هشدار (Alert) تنظیم کنید
-
مشکلات را قبل از تبدیل شدن به بحران شناسایی کنید
در این آموزش، یک سرور MongoDB را به کمک MongoDB Exporter به Prometheus متصل میکنیم و سپس دادهها را داخل Grafana نمایش میدهیم.
پیشنیازها
قبل از شروع، موارد زیر باید آماده باشد:
-
سرور Ubuntu 20.04
-
یک کاربر با دسترسی sudo
-
فعال بودن فایروال UFW
-
نصب بودن MongoDB
-
نصب و ایمنسازی Grafana
-
نصب بودن Nginx (در صورت استفاده از دامنه)
-
داشتن دامنه متصل به سرور (برای دسترسی به Grafana از طریق وب)
مرحله ۱: نصب و راهاندازی 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 محسوب میشود و برای هر زیرساخت جدی، ضروری است.

