مانیتورینگ پایگاه داده برای جلوگیری از مشکلات عملکرد یا حافظه حیاتی است. ابزارهایی مانند Prometheus و Grafana به شما کمک میکنند تا عملکرد پایگاه داده MongoDB خود را بهطور مؤثر نظارت کنید. Prometheus یک پلتفرم open-source برای جمعآوری و ذخیرهسازی metrics بهصورت time-series است. Grafana نیز یک ابزار open-source برای visualization و تحلیل دادههاست که امکان ایجاد داشبوردهای تعاملی و تنظیم هشدارها را فراهم میکند. در این آموزش، شما را با مراحل نصب Prometheus، پیکربندی MongoDB Exporter و ایجاد داشبورد Grafana برای مانیتورینگ MongoDB روی Ubuntu 20.04 آشنا میکنیم. این راهنما برای مبتدیان و حرفهایها طراحی شده است.
پیشنیازهای مانیتورینگ MongoDB
قبل از شروع، موارد زیر را آماده کنید:
- یک سرور Ubuntu 20.04 با کاربر sudo غیرروت و فایروال فعال. اطمینان حاصل کنید که سرور شما برای میزبانی برنامهها بهینه شده است.
- دامنهای معتبر (FQDN) با Nginx و SSL certificate فعال. میتوانید از ابزارهای رایگان مانند Let’s Encrypt برای دریافت گواهی SSL استفاده کنید.
- Grafana نصبشده و ایمنشده با SSL و reverse proxy. اطمینان حاصل کنید که Grafana روی سرور شما فعال است.
- MongoDB نصبشده و در حال اجرا روی سرور شما.
با آمادهسازی این پیشنیازها، میتوانید مانیتورینگ MongoDB را آغاز کنید.
گام 1: نصب و پیکربندی Prometheus
Prometheus یک ابزار مانیتورینگ open-source است که metrics را بهصورت time-series ذخیره میکند. در این گام، Prometheus را نصب و بهعنوان سرویس پیکربندی میکنیم.
نصب Prometheus
ابتدا لیست بستههای سیستم را بهروزرسانی کنید:
sudo apt update
سپس دایرکتوریهای پیکربندی و داده برای Prometheus ایجاد کنید:
sudo mkdir -p /etc/prometheus
sudo mkdir -p /var/lib/prometheus
فایل فشرده Prometheus را دانلود کنید (اینجا از نسخه 2.31.0 استفاده میکنیم):
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
فایلهای باینری prometheus و promtool را به /usr/local/bin/ منتقل کنید:
sudo mv prometheus promtool /usr/local/bin/
فایلهای کنسول و کتابخانه را به /etc/prometheus/ منتقل کنید:
sudo mv consoles/ console_libraries/ /etc/prometheus/
فایل پیکربندی prometheus.yml را به دایرکتوری مناسب منتقل کنید:
sudo mv prometheus.yml /etc/prometheus/prometheus.yml
برای بررسی نسخه نصبشده Prometheus:
prometheus --version
خروجی شبیه این خواهد بود:
prometheus, version 2.31.0 (branch: HEAD, revision: b41e0750abf5cc18d8233161560731de05199330) build user: root@0aa1b7fc430d build date: 20220714-15:13:18 go version: go1.18.4 platform: linux/amd64
اجرای Prometheus بهعنوان سرویس
برای اجرای Prometheus بهعنوان سرویس، ابتدا گروه و کاربر prometheus را ایجاد کنید:
sudo groupadd --system prometheus
sudo useradd -s /sbin/nologin --system -g prometheus prometheus
مالکیت و مجوزهای دایرکتوریها را تنظیم کنید:
sudo chown -R prometheus:prometheus /etc/prometheus/ /var/lib/prometheus/
sudo chmod -R 775 /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
Restart=always
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
فایل را ذخیره کنید و ببندید (در nano: CTRL+X، Y، ENTER).
سرویس Prometheus را شروع کنید:
sudo systemctl start prometheus
سرویس را برای شروع خودکار فعال کنید:
sudo systemctl enable prometheus
وضعیت سرویس را بررسی کنید:
sudo systemctl status prometheus
خروجی باید active (running) را نشان دهد:
● prometheus.service - Prometheus
Loaded: loaded (/etc/systemd/system/prometheus.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2022-08-05 18:06:05 UTC; 13s ago
Main PID: 7177 (prometheus)
Tasks: 6 (limit: 527)
Memory: 21.0M
CGroup: /system.slice/prometheus.service
└─7177 /usr/local/bin/prometheus --config.file=/etc/prometheus/prometheus.yml --storage.tsdb.path=/var/lib/prometheus/ --web.console.template>
برای دسترسی به کنسول وب Prometheus، به http://your_server_ip:9090 بروید. اگر فایروال فعال است، پورت 9090 را باز کنید:
sudo ufw allow 9090
اکنون Prometheus نصب و آماده است. در گام بعدی، MongoDB Exporter را پیکربندی میکنیم.
گام 2: پیکربندی MongoDB Exporter
Prometheus با scrape کردن targets، metrics را جمعآوری میکند. در این گام، MongoDB Exporter را نصب و بهعنوان target برای Prometheus پیکربندی میکنیم.
نصب MongoDB Exporter
ابتدا دایرکتوری برای exporter ایجاد کنید و به آن بروید:
mkdir mongodb-exporter cd mongodb-exporter
فایل باینری 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
فایل باینری را به /usr/local/bin/ منتقل کنید:
sudo mv mongodb_exporter /usr/local/bin/
فعالسازی احراز هویت MongoDB
برای مانیتورینگ، یک کاربر با نقش clusterMonitor در MongoDB ایجاد میکنیم. به MongoDB متصل شوید:
mongo
به دیتابیس admin بروید:
use admin
کاربر را با نقش clusterMonitor ایجاد کنید:
db.createUser({user: "test",pwd: "testing",roles: [{ role: "clusterMonitor", db: "admin" },{ role: "read", db: "local" }]})
خروجی شبیه این خواهد بود:
Successfully added user: {
"user" : "test",
"roles" : [
{
"role" : "clusterMonitor",
"db" : "admin"
},
{
"role" : "read",
"db" : "local"
}
]
}
از MongoDB خارج شوید:
exit
متغیر محیطی MONGODB_URI را با اعتبارنامه تنظیم کنید:
export MONGODB_URI=mongodb://test:testing@localhost:27017
بررسی کنید که متغیر درست تنظیم شده:
env | grep mongodb
خروجی باید این باشد:
MONGODB_URI=mongodb://mongodb_exporter:password@localhost:27017
ایجاد سرویس برای MongoDB Exporter
برای اجرای MongoDB Exporter بهعنوان سرویس، به دایرکتوری systemd بروید و فایل سرویس را ایجاد کنید:
cd /lib/systemd/system/ sudo nano mongodb_exporter.service
محتوای زیر را اضافه کنید:
[Unit] Description=MongoDB Exporter User=prometheus [Service] Type=simple Restart=always ExecStart=/usr/local/bin/mongodb_exporter [Install] WantedBy=multi-user.target
فایل را ذخیره کنید و ببندید.
سیستم daemon را بهروزرسانی کنید:
sudo systemctl daemon-reload
سرویس را شروع کنید:
sudo systemctl start mongodb_exporter.service
وضعیت سرویس را بررسی کنید:
sudo systemctl status mongodb_exporter.service
خروجی باید active (running) را نشان دهد:
● mongodb_exporter.service - MongoDB Exporter
Loaded: loaded (/lib/systemd/system/mongodb_exporter.service; disabled; vendor preset: enabled)
Active: active (running) since Fri 2022-08-05 18:18:38 UTC; 1 weeks 3 days ago
Main PID: 7352 (mongodb_exporte)
Tasks: 5 (limit: 527)
Memory: 14.2M
CGroup: /system.slice/mongodb_exporter.service
└─7352 /usr/local/bin/mongodb_exporter
برای بررسی metrics، به دایرکتوری اصلی بروید و پورت 9216 را تست کنید:
cd ~ sudo curl http://localhost:9216/metrics
خروجی شامل metrics مانند نسخه MongoDB و جزئیات اتصالات خواهد بود.
پیکربندی MongoDB Exporter بهعنوان Target
برای scrape کردن metrics توسط Prometheus، فایل پیکربندی را ویرایش کنید:
cd /etc/prometheus/ sudo nano prometheus.yml
خطوط زیر را به بخش scrape_configs اضافه کنید:
scrape_configs:
- job_name: "prometheus"
static_configs:
- targets: ["localhost:9090", "localhost:9216"]
فایل را ذخیره کنید و ببندید.
Prometheus را ریاستارت کنید:
sudo systemctl restart prometheus
به http://your_server_ip:9090/targets بروید تا بررسی کنید که Prometheus در حال scrape کردن پورت 9216 است.
گام 3: ایجاد داشبورد MongoDB در Grafana
در این گام، Prometheus را بهعنوان data source به Grafana اضافه میکنیم و داشبورد MongoDB Overview را وارد میکنیم.
به Grafana (https://your_domain:3000) وارد شوید. در منوی سمت چپ، روی آیکون تنظیمات (gear) کلیک کنید و Data Sources را انتخاب کنید.
روی Add data source کلیک کنید و Prometheus را انتخاب کنید.
در فیلد URL، آدرس Prometheus را وارد کنید:
http://your_server_ip:9090/
روی Save & test کلیک کنید تا Prometheus بهعنوان data source اضافه شود.
برای وارد کردن داشبورد MongoDB Overview، در منوی سمت چپ روی آیکون + (Create) کلیک کنید و Import را انتخاب کنید.
شناسه داشبورد 7353 را وارد کنید و روی Load کلیک کنید.
در صفحه گزینهها، نام داشبورد و پوشه را بهصورت پیشفرض نگه دارید و Prometheus را بهعنوان data source انتخاب کنید. سپس روی Import کلیک کنید.
داشبورد شما ایجاد میشود و metrics بلادرنگ MongoDB مانند عملیات دستورات، اتصالات، و عملیات صف را نمایش میدهد.
نتیجهگیری
در این آموزش، یک داشبورد Grafana برای مانیتورینگ metrics MongoDB با استفاده از Prometheus روی Ubuntu 20.04 راهاندازی کردید. Prometheus را نصب کردید، MongoDB Exporter را پیکربندی کردید و داشبورد Grafana را برای visualization دادهها تنظیم کردید. حالا میتوانید عملکرد پایگاه داده خود را بهصورت بصری نظارت کنید. برای کاوش بیشتر، داشبوردهای دیگر Grafana یا منابع آموزشی MongoDB را بررسی کنید.