Skip to content

ডেবিয়ান বা উবুন্টুতে Prometheus, Node Exporter ও Grafana সেটআপ

ডেবিয়ান বা উবুন্টু সার্ভারে মনিটরিং স্ট্যাক দাঁড় করানোর ধাপে ধাপে গাইড। লেখার সময় (আগস্ট ২০২৬) এগুলোই ছিল সর্বশেষ স্টেবল ভার্সন: Prometheus 3.13.1, Node Exporter 1.12.1, Grafana 13.1.1। শুরুর আগে রিলিজ পেজগুলো একবার দেখে নেবেন, ততদিনে নতুন ভার্সন চলে আসতে পারে।

আর্কিটেকচার

+----------------+   scrapes :9100   +----------------+
|  Node Exporter | <---------------- |   Prometheus   |
|   :9100        |                   |   :9090        |
+----------------+                   +--------+-------+
                                              |
                                              | PromQL queries :9090
                                              v
                                     +----------------+
                                     |    Grafana     |
                                     |   :3000        |
                                     +----------------+
                                              |
                                              v
                                        Browser / user

যা যা লাগবে

  • sudo অ্যাক্সেসসহ একটি ডেবিয়ান বা উবুন্টু সার্ভার
  • curl আর tar ইনস্টল থাকতে হবে
  • বাইরে থেকে ঢুকতে চাইলে ফায়ারওয়ালে 9090 (Prometheus), 9100 (Node Exporter) আর 3000 (Grafana) পোর্ট খোলা রাখুন

পর্ব ১: Prometheus ইনস্টল

ধাপ ১: prometheus সিস্টেম ইউজার তৈরি

bash
sudo useradd --no-create-home --shell /bin/false prometheus

ধাপ ২: ডিরেক্টরি তৈরি

bash
sudo mkdir -p /etc/prometheus /var/lib/prometheus

ধাপ ৩: Prometheus ডাউনলোড

bash
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

ধাপ ৪: বাইনারি ইনস্টল

bash
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

ধাপ ৫: কনসোল টেমপ্লেট ইনস্টল ও মালিকানা নির্ধারণ

bash
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

ধাপ ৬: কনফিগ ফাইল তৈরি

bash
sudo tee /etc/prometheus/prometheus.yml > /dev/null <<EOF
global:
  scrape_interval: 10s

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']
EOF

Node Exporter-এর স্ক্র্যাপ জব যোগ করব পর্ব ৩-এ, ইনস্টল হয়ে যাওয়ার পর।

ধাপ ৭: systemd সার্ভিস তৈরি

bash
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.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
EOF

ExecReload লাইনটার জন্যই পর্ব ৩-এ systemctl reload prometheus কাজ করবে। এটি না দিলে systemd "Job type reload is not applicable" বলে রিলোড করতেই চাইবে না, তখন পুরো সার্ভিস রিস্টার্ট করা ছাড়া উপায় থাকবে না। \$MAINPID-এর আগে ব্যাকস্ল্যাশটা খেয়াল করুন। এই heredoc-এ কোট নেই, তাই ব্যাকস্ল্যাশ না দিলে ফাইল লেখার সময়ই শেল ভেরিয়েবলটা ফাঁকা করে বসিয়ে দিত।

ধাপ ৮: Prometheus চালু ও সক্রিয় করা

bash
sudo systemctl daemon-reload
sudo systemctl enable --now prometheus

ধাপ ৯: যাচাই

bash
sudo systemctl status prometheus
curl -s http://localhost:9090/-/healthy

ব্রাউজারে http://<server-ip>:9090 খুলে দেখুন ইন্টারফেসটা আসছে কি না।

Prometheus-এর ডাউনলোড পরিষ্কার করা

bash
rm -rf /tmp/prometheus-3.13.1.linux-amd64*

পর্ব ২: Node Exporter ইনস্টল

ধাপ ১: node_exporter সিস্টেম ইউজার তৈরি

bash
sudo useradd --no-create-home --shell /bin/false node_exporter

ধাপ ২: Node Exporter ডাউনলোড

bash
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

ধাপ ৩: বাইনারি ইনস্টল

bash
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 সার্ভিস তৈরি

bash
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

[Install]
WantedBy=multi-user.target
EOF

ধাপ ৫: Node Exporter চালু ও সক্রিয় করা

bash
sudo systemctl daemon-reload
sudo systemctl enable --now node_exporter

ধাপ ৬: যাচাই

bash
curl -s http://localhost:9100/metrics | head

Node Exporter-এর ডাউনলোড পরিষ্কার করা

bash
rm -rf /tmp/node_exporter-1.12.1.linux-amd64*

পর্ব ৩: Prometheus-কে Node Exporter-এর দিকে তাক করানো

ধাপ ১: স্ক্র্যাপ জব যোগ করা

bash
sudo vim /etc/prometheus/prometheus.yml

scrape_configs-এর নিচে এটুকু বসান:

yaml
  - job_name: "node_exporter"
    static_configs:
      - targets: ['localhost:9100']

ধাপ ২: কনফিগ যাচাই

bash
promtool check config /etc/prometheus/prometheus.yml

ধাপ ৩: Prometheus রিলোড

bash
sudo systemctl reload prometheus

ধাপ ৪: টার্গেট চালু আছে কি না দেখা

http://<server-ip>:9090/targets খুলুন। prometheus আর node_exporter, দুটি জবেই State = UP দেখানোর কথা।

পর্ব ৪: Grafana ইনস্টল

অফিসিয়াল উপায় হলো APT রিপো, তাতে apt-get update দিলেই Grafana আপডেট থাকে। সূত্র: https://grafana.com/docs/grafana/latest/setup-grafana/installation/debian/

ধাপ ১: প্রয়োজনীয় প্যাকেজ ইনস্টল

bash
sudo apt-get install -y apt-transport-https wget gnupg

ধাপ ২: GPG কী ইমপোর্ট

bash
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

ধাপ ৩: স্থিতিশীল রিপোজিটরি যোগ

bash
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

ধাপ ৪: প্যাকেজ তালিকা হালনাগাদ

bash
sudo apt-get update

ধাপ ৫: Grafana OSS ইনস্টল

bash
sudo apt-get install -y grafana

ধাপ ৬: Grafana চালু ও সক্রিয় করা

bash
sudo systemctl daemon-reload
sudo systemctl enable --now grafana-server

ধাপ ৭: যাচাই

bash
sudo systemctl status grafana-server

http://<server-ip>:3000 খুলুন। ডিফল্ট লগইন admin / admin, প্রথমবার ঢুকলেই পাসওয়ার্ড বদলাতে বলবে।

পর্ব ৫: Grafana-র ঐচ্ছিক কনফিগ (নিজস্ব ডোমেইন / HTTPS)

Grafana-কে TLS সহ কোনো ডোমেইনের পেছনে বসাতে চাইলে তবেই এটি লাগবে।

ধাপ ১: grafana.ini সম্পাদনা

bash
sudo vim /etc/grafana/grafana.ini
ini
[server]
http_addr =
http_port = 3000
domain = mysite.com
root_url = https://subdomain.mysite.com:3000
cert_key = /etc/grafana/grafana.key
cert_file = /etc/grafana/grafana.crt
enforce_domain = False
protocol = https

ধাপ ২: Grafana রিস্টার্ট

bash
sudo systemctl restart grafana-server

ধাপ ৩ (ঐচ্ছিক): Nginx রিভার্স প্রক্সি

nginx
map $http_upgrade $connection_upgrade {
    default upgrade;
    '' close;
}

server {
    listen 80;
    listen [::]:80;

    server_name your_domain www.your_domain;

    location / {
        proxy_set_header Host $http_host;
        proxy_pass http://localhost: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 $http_host;
        proxy_pass http://localhost:3000;
    }
}

পর্ব ৬: Grafana-কে Prometheus-এর সঙ্গে যুক্ত করা

ধাপ ১: ডেটা সোর্স যোগ করা

Grafana-তে যান: Connections > Data sources > Add data source > Prometheus।

URL-এ দিন:

http://localhost:9090

Save & 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

সার্ভিস না থামিয়ে কনফিগ রিলোড করতে:

bash
sudo systemctl reload prometheus
sudo systemctl restart grafana-server

এরপর কী

একটি সার্ভার দিয়ে শুরু, এখানেই শেষ নয়। পরের ধাপ সাধারণত দুটি। এক, অ্যালার্ট বসানো (Alertmanager, যাতে ডিস্ক ভরে গেলে রাত তিনটায়ই জেনে যান, সকাল নয়টায় এসে চমকে না ওঠেন)। দুই, মেশিনে আসলে যা চলছে তার জন্য আরেকটা এক্সপোর্টার। সেই মেশিনে যদি ওয়েবসাইট থাকে, তাহলে ডকার আর রেডিস দিয়ে ওয়ার্ডপ্রেস সেলফ-হোস্টিং এই একই সেটআপের বাকি অর্ধেক।

বড় স্কেলে মনিটরিং আমার কাজের বড় একটি অংশ: Grafana আর Prometheus দিয়ে অবজারভেবিলিটি। এর মধ্যে এমন একটি বেঞ্চমার্কিং সেটআপও আছে যেটা পনেরো মিনিটে এক কোটি রিকোয়েস্ট ছুঁড়েছে। কথা বলতে চাইলে জানাবেন।

আনইনস্টল

Prometheus সরানো

bash
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-reload

Node Exporter সরানো

bash
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-reload

Grafana সরানো

bash
sudo systemctl stop grafana-server
sudo apt-get remove -y grafana
sudo rm -i /etc/apt/sources.list.d/grafana.list