ডেবিয়ান বা উবুন্টুতে Prometheus, Node Exporter ও Grafana সেটআপ
ডেবিয়ান বা উবুন্টু সার্ভারে মনিটরিং স্ট্যাক দাঁড় করানোর ধাপে ধাপে গাইড। লেখার সময় (আগস্ট ২০২৬) এগুলোই ছিল সর্বশেষ স্টেবল ভার্সন: Prometheus 3.13.1, Node Exporter 1.12.1, Grafana 13.1.1। শুরুর আগে রিলিজ পেজগুলো একবার দেখে নেবেন, ততদিনে নতুন ভার্সন চলে আসতে পারে।
- Prometheus রিলিজ: https://github.com/prometheus/prometheus/releases
- Node Exporter রিলিজ: https://github.com/prometheus/node_exporter/releases
- Grafana রিলিজ: https://grafana.com/grafana/download
আর্কিটেকচার
+----------------+ 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 সিস্টেম ইউজার তৈরি
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.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ব্রাউজারে http://<server-ip>: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
[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ধাপ ৪: টার্গেট চালু আছে কি না দেখা
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/
ধাপ ১: প্রয়োজনীয় প্যাকেজ ইনস্টল
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 systemctl daemon-reload
sudo systemctl enable --now grafana-serverধাপ ৭: যাচাই
sudo systemctl status grafana-serverhttp://<server-ip>:3000 খুলুন। ডিফল্ট লগইন admin / admin, প্রথমবার ঢুকলেই পাসওয়ার্ড বদলাতে বলবে।
পর্ব ৫: Grafana-র ঐচ্ছিক কনফিগ (নিজস্ব ডোমেইন / HTTPS)
Grafana-কে TLS সহ কোনো ডোমেইনের পেছনে বসাতে চাইলে তবেই এটি লাগবে।
ধাপ ১: grafana.ini সম্পাদনা
sudo vim /etc/grafana/grafana.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 রিস্টার্ট
sudo systemctl restart grafana-serverধাপ ৩ (ঐচ্ছিক): 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: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