−25%

Windows-এর বার্ষিক পেমেন্টে, ৩১ অক্টোবর পর্যন্ত। প্ল্যান দেখুন

EQVPS

Grafana + Prometheus দিয়ে সার্ভার পর্যবেক্ষণের জন্য VPS

আপনার সব সার্ভারের CPU, RAM, ডিস্ক আর পরিষেবার মেট্রিক এক জায়গায় জড়ো করুন: একটি VPS-এ, HTTPS-এর পেছনে Prometheus, node_exporter আর Grafana।

“সার্ভার ধীর” একটি অকেজো বাগ রিপোর্ট, যদি না আপনি একটি গ্রাফ খুলে দেখতে পান যে ক্র্যাশের আগে তিন দিন ধরে মেমরি বাড়ছিল। Prometheus আর Grafana ঠিক এটাই দেয়: প্রতিটি সার্ভারের CPU, RAM, ডিস্ক আর নেটওয়ার্ক, প্রতি 15 সেকেন্ডে রেকর্ড করা এবং এমন গ্রাফে আঁকা যা পেছনে স্ক্রল করে দেখা যায়। এগুলোকে নিজেদের ছোট VPS-এ রাখুন, প্রোডাকশন মেশিন পড়ে গেলেও নজর রাখা চলবে।

অংশগুলো

আপনার যা লাগবে

১. প্রতিটি লক্ষ্যে node_exporter

apt install -y prometheus-node-exporter
# allow only the monitoring server to scrape it
ufw allow from 203.0.113.10 to any port 9100 proto tcp

203.0.113.10-কে আপনার মনিটরিং VPS-এর ঠিকানা দিয়ে বদলান। পোর্ট 9100 কখনো সারা বিশ্বের জন্য খোলা রাখবেন না: এটি আপনার সার্ভার সম্পর্কে অনেক কিছু ফাঁস করে।

২. মনিটরিং VPS-এ Prometheus আর Grafana

apt update && apt install -y docker.io docker-compose-v2 caddy
mkdir -p /opt/monitoring && cd /opt/monitoring

cat > prometheus.yml <<'EOF'
global:
  scrape_interval: 15s
scrape_configs:
  - job_name: nodes
    static_configs:
      - targets: ['198.51.100.21:9100', '198.51.100.22:9100']
EOF

cat > compose.yml <<'EOF'
services:
  prometheus:
    image: prom/prometheus
    volumes: [ "./prometheus.yml:/etc/prometheus/prometheus.yml:ro", "prom:/prometheus" ]
    command: [ "--config.file=/etc/prometheus/prometheus.yml", "--storage.tsdb.retention.time=15d", "--web.enable-remote-write-receiver" ]
    ports: [ "127.0.0.1:9090:9090" ]
    restart: unless-stopped
  grafana:
    image: grafana/grafana
    volumes: [ "grafana:/var/lib/grafana" ]
    ports: [ "127.0.0.1:3000:3000" ]
    restart: unless-stopped
volumes: { prom: {}, grafana: {} }
EOF

docker compose up -d

Grafana-র সামনে HTTPS:

echo 'grafana.example.com {
    reverse_proxy 127.0.0.1:3000
}' > /etc/caddy/Caddyfile && systemctl reload caddy

লগ ইন করুন (admin / admin, তারপর বদলান), http://prometheus:9090-এ Prometheus-কে ডেটা উৎস হিসেবে যোগ করুন, আর কমিউনিটির “Node Exporter Full” ড্যাশবোর্ড (ID 1860) ইমপোর্ট করুন। মোটামুটি এক মিনিটেই একটি সম্পূর্ণ সিস্টেম ড্যাশবোর্ড পেয়ে যাবেন।

NAT প্ল্যানের সার্ভার

NAT সার্ভার শুধু নিজের ব্যক্তিগত SSH পোর্টে আসা সংযোগ গ্রহণ করে, তাই Prometheus তার exporter স্ক্রেপ করতে পারে না। দিকটা উল্টে দিন: NAT মেশিনে Prometheus-কে agent মোডে চালান এবং মনিটরিং সার্ভারে ডেটা পাঠান, যা ইতিমধ্যেই রিমোট রাইট গ্রহণ করে (ওপরের --web.enable-remote-write-receiver ফ্ল্যাগ)।

# /etc/prometheus/agent.yml on the NAT server
scrape_configs:
  - job_name: self
    static_configs: [ { targets: ['127.0.0.1:9100'] } ]
remote_write:
  - url: https://prom-push.example.com/api/v1/write

পোর্ট 9090 সরাসরি না খুলে, এই পুশ এন্ডপয়েন্টটি Caddy-র মাধ্যমে basic auth-সহ প্রকাশ করুন।

সৎ মন্তব্য

Prometheus টেনে আনার (pull) পদ্ধতিতে কাজ করে: আপনার নিয়ন্ত্রিত সার্ভারের বহরের জন্য দারুণ, আর NAT-এর পেছনের সবকিছুর জন্য অসুবিধাজনক, তাই agent-এর কৌশল। এর লোকাল স্টোরেজ বছরের পর বছর ইতিহাসের জন্য তৈরি নয়; দীর্ঘ সংরক্ষণের জন্য পরে রিমোট স্টোরেজ যোগ করবেন। আর ড্যাশবোর্ড মূল্যের অর্ধেক মাত্র: প্রথম দিনেই অন্তত তিনটি সতর্কতা সেট করুন (ডিস্ক 85%-এর বেশি, মেমরির চাপ, লক্ষ্য বন্ধ), নইলে কিছু ভেঙে যাওয়ার পরেই গ্রাফ দেখবেন।

সম্পর্কিত

স্থাপন করতে প্রস্তুত? ক্রিপ্টোতে পরিশোধ করুন, KYC ছাড়াই — প্রায় এক মিনিটে লাইভ।

এখনই ডেপ্লয় করুন →

সাধারণ প্রশ্ন

এটি Uptime Kuma থেকে কীভাবে আলাদা?

Uptime Kuma উত্তর দেয় “এটি কি চালু আছে?”। Prometheus আর Grafana উত্তর দেয় “এটি ধীর কেন, আর কবে থেকে?”: সময়ের সঙ্গে CPU, মেমরি, ডিস্ক, নেটওয়ার্ক আর অ্যাপ্লিকেশনের মেট্রিক। অনেকে দুটোই চালান: বিভ্রাটের সতর্কতার জন্য Kuma, প্রবণতা আর সক্ষমতা পরিকল্পনার জন্য Grafana।

Prometheus কত ডিস্ক ব্যবহার করে?

সংকোচনের পর প্রতি নমুনায় মোটামুটি 1–2 বাইট। দশটি সার্ভার, প্রতিটি এক হাজার সিরিজ রপ্তানি করছে, প্রতি 15 সেকেন্ডে সংগ্রহ করা হচ্ছে, অর্থাৎ দিনে প্রায় 6 কোটি নমুনা: প্রায় 100 MB। ডিফল্ট 15 দিনের সংরক্ষণে এটি কয়েক গিগাবাইট।

NAT প্ল্যানের সার্ভার কি পর্যবেক্ষণ করা যায়?

যায়, তবে স্ক্রেপ করে নয়: NAT সার্ভার তার exporter-এ আসা সংযোগ গ্রহণ করে না। NAT মেশিনে Prometheus-কে agent মোডে চালান এবং remote_write দিয়ে মেট্রিক আপনার মনিটরিং সার্ভারে পাঠান। মনিটরিং সার্ভারটি নিজে ডেডিকেটেড IP-সহ প্ল্যানে থাকা উচিত।

মনিটরিং সার্ভার কোন প্ল্যানে থাকবে?

Micro-IP (2 GB RAM, মাসে $10) এক-দুই ডজন হোস্ট আরামে সামলায়। উচ্চ কার্ডিনালিটির অ্যাপ্লিকেশন মেট্রিক যোগ করলে বা কয়েক মাসের ডেটা রাখলে Small-IP-তে যান। ডেডিকেটেড IP থাকলে Grafana-র জন্য HTTPS পাবেন এবং একটি স্থির ঠিকানাও, যা আপনার লক্ষ্য সার্ভারগুলোতে অনুমতি তালিকায় রাখা যায়।

মনিটরিং সার্ভার কি পর্যবেক্ষিত সার্ভারগুলো থেকে আলাদা হওয়া উচিত?

হ্যাঁ। Grafana যদি ঠিক সেই সার্ভারেই চলে যার মেমরি এইমাত্র ফুরিয়েছে, তাহলে যখন সবচেয়ে দরকার ঠিক তখনই সমস্যাটি আর দেখতে পাবেন না। একটি ছোট আলাদা VPS প্রোডাকশন মেশিন পড়ে গেলেও চলতে থাকে।

মন্তব্য

এখনো কোনো মন্তব্য নেই। প্রথম হোন।

একটি মন্তব্য দিন

মন্তব্য প্রকাশের আগে মডারেট করা হয়।