ডেবিয়ান বা উবুন্টুতে Prometheus, Node Exporter ও Grafana সেটআপ
ডেবিয়ান বা উবুন্টু সার্ভারে মনিটরিং স্ট্যাক দাঁড় করানোর ধাপে ধাপে গাইড। লেখার সময় (আগস্ট ২০২৬) এগুলোই ছিল সর্বশেষ স্টেবল ভার্সন: Prometheus 3.13.1, Node Exporter 1.12.1, Grafana 13.1.1। শুরুর আগে রিলিজ পেজগুলো একবার দেখে নেবেন, ততদিনে নতুন ভার্সন চলে আসতে পারে।
সঙ্গে আপস্ট্রিমের তিনটি লেখা খুলে রাখলে কাজে দেবে: Prometheus কনফিগারেশন রেফারেন্স, Node Exporter-এর কালেক্টরের তালিকা, কোনটির পেছনে কতটা খরচ যাচ্ছে সেটিসহ, আর Grafana-র নিজের ডেবিয়ান ইনস্টল ডকুমেন্টেশন।
আর্কিটেকচার
+----------------+ scrapes :9100 +----------------+
| Node Exporter | <---------------- | Prometheus |
| :9100 | | :9090 |
+----------------+ +--------+-------+
|
| PromQL queries :9090
v
+----------------+
| Grafana |
| :3000 |
+----------------+
|
v
Browser / userযা যা লাগবে
- sudo অ্যাক্সেসসহ একটি ডেবিয়ান বা উবুন্টু সার্ভার
curlআরtarইনস্টল থাকতে হবে- টানেলের জন্য SSH অ্যাক্সেস। 9090, 9100 ও 3000 পোর্ট ইন্টারনেটের জন্য বন্ধ রাখুন; তিনটি সার্ভিসই লুপব্যাকে চলবে।
পর্ব ১: Prometheus ইনস্টল
ধাপ ১: prometheus সিস্টেম ইউজার তৈরি
sudo useradd --no-create-home --shell /bin/false prometheusধাপ ২: ডিরেক্টরি তৈরি
sudo mkdir -p /etc/prometheus /var/lib/prometheusধাপ ৩: Prometheus ডাউনলোড
cd /tmp
curl -LO https://github.com/prometheus/prometheus/releases/download/v3.13.1/prometheus-3.13.1.linux-amd64.tar.gz
tar -xvf prometheus-3.13.1.linux-amd64.tar.gzধাপ ৪: বাইনারি ইনস্টল
sudo cp prometheus-3.13.1.linux-amd64/prometheus /usr/local/bin/
sudo cp prometheus-3.13.1.linux-amd64/promtool /usr/local/bin/
sudo chown prometheus:prometheus /usr/local/bin/prometheus /usr/local/bin/promtoolধাপ ৫: কনসোল টেমপ্লেট ইনস্টল ও মালিকানা নির্ধারণ
sudo cp -r prometheus-3.13.1.linux-amd64/consoles /etc/prometheus
sudo cp -r prometheus-3.13.1.linux-amd64/console_libraries /etc/prometheus
sudo chown -R prometheus:prometheus /etc/prometheus /var/lib/prometheusধাপ ৬: কনফিগ ফাইল তৈরি
sudo tee /etc/prometheus/prometheus.yml > /dev/null <<EOF
global:
scrape_interval: 10s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
EOFNode Exporter-এর স্ক্র্যাপ জব যোগ করব পর্ব ৩-এ, ইনস্টল হয়ে যাওয়ার পর।
ধাপ ৭: systemd সার্ভিস তৈরি
sudo tee /etc/systemd/system/prometheus.service > /dev/null <<EOF
[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.listen-address=127.0.0.1:9090 \\
--web.console.templates=/etc/prometheus/consoles \\
--web.console.libraries=/etc/prometheus/console_libraries \\
--storage.tsdb.retention.time=365d
ExecReload=/bin/kill -HUP \$MAINPID
[Install]
WantedBy=multi-user.target
EOFExecReload লাইনটার জন্যই পর্ব ৩-এ systemctl reload prometheus কাজ করবে। এটি না দিলে systemd "Job type reload is not applicable" বলে রিলোড করতেই চাইবে না, তখন পুরো সার্ভিস রিস্টার্ট করা ছাড়া উপায় থাকবে না। \$MAINPID-এর আগে ব্যাকস্ল্যাশটা খেয়াল করুন। এই heredoc-এ কোট নেই, তাই ব্যাকস্ল্যাশ না দিলে ফাইল লেখার সময়ই শেল ভেরিয়েবলটা ফাঁকা করে বসিয়ে দিত।
ধাপ ৮: Prometheus চালু ও সক্রিয় করা
sudo systemctl daemon-reload
sudo systemctl enable --now prometheusধাপ ৯: যাচাই
sudo systemctl status prometheus
curl -s http://localhost:9090/-/healthyনিজের কম্পিউটার থেকে SSH টানেল খুলে চালু রাখুন:
ssh -N -L 9090:127.0.0.1:9090 -L 3000:127.0.0.1:3000 user@serveruser@server-এর জায়গায় নিজের SSH ঠিকানা দিন। এরপর নিজের ব্রাউজারে http://localhost:9090 খুলুন।
Prometheus-এর ডাউনলোড পরিষ্কার করা
rm -rf /tmp/prometheus-3.13.1.linux-amd64*পর্ব ২: Node Exporter ইনস্টল
ধাপ ১: node_exporter সিস্টেম ইউজার তৈরি
sudo useradd --no-create-home --shell /bin/false node_exporterধাপ ২: Node Exporter ডাউনলোড
cd /tmp
curl -LO https://github.com/prometheus/node_exporter/releases/download/v1.12.1/node_exporter-1.12.1.linux-amd64.tar.gz
tar -xvf node_exporter-1.12.1.linux-amd64.tar.gzধাপ ৩: বাইনারি ইনস্টল
sudo cp node_exporter-1.12.1.linux-amd64/node_exporter /usr/local/bin/
sudo chown node_exporter:node_exporter /usr/local/bin/node_exporterধাপ ৪: systemd সার্ভিস তৈরি
sudo tee /etc/systemd/system/node_exporter.service > /dev/null <<EOF
[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target
[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter --web.listen-address=127.0.0.1:9100
[Install]
WantedBy=multi-user.target
EOFধাপ ৫: Node Exporter চালু ও সক্রিয় করা
sudo systemctl daemon-reload
sudo systemctl enable --now node_exporterধাপ ৬: যাচাই
curl -s http://localhost:9100/metrics | headNode Exporter-এর ডাউনলোড পরিষ্কার করা
rm -rf /tmp/node_exporter-1.12.1.linux-amd64*পর্ব ৩: Prometheus-কে Node Exporter-এর দিকে তাক করানো
ধাপ ১: স্ক্র্যাপ জব যোগ করা
sudo vim /etc/prometheus/prometheus.ymlscrape_configs-এর নিচে এটুকু বসান:
- job_name: "node_exporter"
static_configs:
- targets: ['localhost:9100']ধাপ ২: কনফিগ যাচাই
promtool check config /etc/prometheus/prometheus.ymlধাপ ৩: Prometheus রিলোড
sudo systemctl reload prometheusধাপ ৪: টার্গেট চালু আছে কি না দেখা
SSH টানেল দিয়ে http://localhost:9090/targets খুলুন। prometheus আর node_exporter, দুটি জবেই State = UP দেখানোর কথা।
পর্ব ৪: Grafana ইনস্টল
অফিসিয়াল উপায় হলো APT রিপো। apt-get update প্যাকেজের তালিকা হালনাগাদ করে; নতুন সংস্করণ ইনস্টল করতে apt-get install --only-upgrade grafana চালাতে হয়। সূত্র: https://grafana.com/docs/grafana/latest/setup-grafana/installation/debian/
ধাপ ১: প্রয়োজনীয় প্যাকেজ ইনস্টল
sudo apt-get install -y apt-transport-https wget gnupgধাপ ২: GPG কী ইমপোর্ট
sudo mkdir -p /etc/apt/keyrings
sudo wget -O /etc/apt/keyrings/grafana.asc https://apt.grafana.com/gpg-full.key
sudo chmod 644 /etc/apt/keyrings/grafana.ascধাপ ৩: স্থিতিশীল রিপোজিটরি যোগ
echo "deb [signed-by=/etc/apt/keyrings/grafana.asc] https://apt.grafana.com stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.listধাপ ৪: প্যাকেজ তালিকা হালনাগাদ
sudo apt-get updateধাপ ৫: Grafana OSS ইনস্টল
sudo apt-get install -y grafanaধাপ ৬: Grafana চালু ও সক্রিয় করা
sudo mkdir -p /etc/systemd/system/grafana-server.service.d
printf '[Service]\nEnvironment=GF_SERVER_HTTP_ADDR=127.0.0.1\n' | sudo tee /etc/systemd/system/grafana-server.service.d/listen.conf
sudo systemctl daemon-reload
sudo systemctl enable grafana-server
sudo systemctl restart grafana-serverধাপ ৭: যাচাই
sudo systemctl status grafana-serverSSH টানেল দিয়ে http://localhost:3000 খুলুন। ডিফল্ট লগইন admin / admin, প্রথমবার ঢুকলেই পাসওয়ার্ড বদলাতে বলবে।
পর্ব ৫: Grafana-র ঐচ্ছিক কনফিগ (নিজস্ব ডোমেইন / HTTPS)
ব্যক্তিগত ব্যবহারের জন্য SSH টানেলই যথেষ্ট। পাবলিক ড্যাশবোর্ড চাইলে grafana.example.com সার্ভারের দিকে পয়েন্ট করুন এবং nginx-এ TLS টার্মিনেট করুন। Grafana লুপব্যাক HTTP-তেই থাকবে, আপস্ট্রিম পোর্টে HTTPS চালু করবেন না।
ধাপ ১: grafana.ini সম্পাদনা
sudo vim /etc/grafana/grafana.ini[server]
http_addr = 127.0.0.1
http_port = 3000
domain = grafana.example.com
root_url = https://grafana.example.com/
enforce_domain = true
protocol = httpধাপ ২: Grafana রিস্টার্ট
sudo systemctl restart grafana-serverধাপ ৩ (ঐচ্ছিক): Nginx রিভার্স প্রক্সি
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 80;
listen [::]:80;
server_name grafana.example.com;
location / {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://127.0.0.1:3000;
}
location /api/live {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://127.0.0.1:3000;
}
}nginx ও Certbot ইনস্টল করে ওপরের কনফিগ /etc/nginx/sites-available/grafana.example.com-এ রাখুন। সব জায়গায় উদাহরণের ডোমেইন বদলে নিজেরটি দিন:
sudo apt-get install -y nginx certbot python3-certbot-nginx
sudo ln -s /etc/nginx/sites-available/grafana.example.com /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
sudo certbot --nginx -d grafana.example.com
sudo certbot renew --dry-runnginx-এর জন্য 80 ও 443 পোর্ট খুলুন, 3000 নয়। Certbot TLS কনফিগ ও রিনিউয়াল টাইমার বসায়। Grafana-এর লগইন চালু রাখুন এবং ডোমেইন প্রকাশের আগে SSH টানেল দিয়ে ডিফল্ট পাসওয়ার্ড বদলান।
পর্ব ৬: Grafana-কে Prometheus-এর সঙ্গে যুক্ত করা
ধাপ ১: ডেটা সোর্স যোগ করা
Grafana-তে যান: Connections > Data sources > Add data source > Prometheus।
URL-এ দিন:
http://localhost:9090Save & test চাপুন। "Successfully queried the Prometheus API." দেখানোর কথা।
ধাপ ২: Node Exporter ড্যাশবোর্ড ইমপোর্ট
Dashboards > New > Import-এ যান, তারপর ড্যাশবোর্ড আইডি বসান:
1860জিজ্ঞেস করলে আপনার Prometheus ডেটা সোর্সটা বেছে দিন, তারপর Import চাপুন। এটি কমিউনিটির "Node Exporter Full" ড্যাশবোর্ড, কিছু না করেই সিপিইউ, মেমোরি, ডিস্ক আর নেটওয়ার্ক সব দেখিয়ে দেয়।
সার্ভিস চালানোর চিটশিট
service start status enable
--------------- -------------------- -------------------- -------------------------------
prometheus systemctl start systemctl status systemctl enable prometheus
node_exporter systemctl start systemctl status systemctl enable node_exporter
grafana-server systemctl start systemctl status systemctl enable grafana-serverসার্ভিস না থামিয়ে কনফিগ রিলোড করতে:
sudo systemctl reload prometheus
sudo systemctl restart grafana-serverএরপর কী
একটি সার্ভার দিয়ে শুরু, এখানেই শেষ নয়। পরের ধাপ সাধারণত দুটি। এক, অ্যালার্ট বসানো (Alertmanager, যাতে ডিস্ক ভরে গেলে রাত তিনটায়ই জেনে যান, সকাল নয়টায় এসে চমকে না ওঠেন)। দুই, মেশিনে আসলে যা চলছে তার জন্য আরেকটা এক্সপোর্টার। সেই মেশিনে যদি ওয়েবসাইট থাকে, তাহলে ডকার আর রেডিস দিয়ে ওয়ার্ডপ্রেস সেলফ-হোস্টিং এই একই সেটআপের বাকি অর্ধেক।
বড় স্কেলে মনিটরিং আমার কাজের বড় একটি অংশ: Grafana আর Prometheus দিয়ে অবজারভেবিলিটি। এর মধ্যে এমন একটি বেঞ্চমার্কিং সেটআপও আছে যেটা পনেরো মিনিটে এক কোটি রিকোয়েস্ট ছুঁড়েছে। কথা বলতে চাইলে জানাবেন।
আনইনস্টল
Prometheus সরানো
sudo systemctl disable --now prometheus
sudo rm -f /usr/local/bin/prometheus /usr/local/bin/promtool
sudo rm -rf /etc/prometheus /var/lib/prometheus /etc/systemd/system/prometheus.service
sudo userdel prometheus
sudo systemctl daemon-reloadNode Exporter সরানো
sudo systemctl disable --now node_exporter
sudo rm -f /usr/local/bin/node_exporter /etc/systemd/system/node_exporter.service
sudo userdel node_exporter
sudo systemctl daemon-reloadGrafana সরানো
sudo systemctl stop grafana-server
sudo apt-get remove -y grafana
sudo rm -i /etc/apt/sources.list.d/grafana.list