Skip to content
VDS · মনিটরিং ও পারফরম্যান্স

সাইট ডাউনটাইম অ্যালার্ট

ইউজারদের আগে কীভাবে সার্ভিস অনুপলব্ধতার কথা জানবেন: বাহ্যিক চেক, সার্ভারেই একটি সাধারণ ওয়াচডগ, এবং স্বয়ংক্রিয় সার্ভিস রিস্টার্ট।

আপডেট: ২৩ আগস্ট, ২০২৬

প্যানেলের গ্রাফ মেশিনের অবস্থা দেখায়, কিন্তু “সাইটটি কি চালু আছে?” — এই প্রশ্নের উত্তর দেয় না। CPU অলস থাকলেও অ্যাপ্লিকেশন হ্যাং করতে পারে, আর বাইরের কোনো চেক ছাড়া আপনি বিষয়টি জানতে পারবেন আপনার ক্লায়েন্টদের কাছ থেকে।

বাহ্যিক চেক

মূল নিয়ম: যে মেশিন মনিটর করছেন, সেখান থেকেই চেক করবেন না। যেকোনো বাহ্যিক আপটাইম মনিটরিং সার্ভিস ব্যবহার করুন — এগুলোর অনেকগুলোই আছে, এমনকি এক মিনিটের ইন্টারভালে কয়েকটি অ্যাড্রেসের জন্য ফ্রি প্ল্যানও পাওয়া যায়। যে সেটিংসগুলো সত্যিই গুরুত্বপূর্ণ:

  • চেক অ্যাড্রেস। হোম পেজ নয়, বরং /healthz-এর মতো আলাদা রুট, যা ডেটাবেস ও কিউ — দুটোই চেক করে। নাহলে ব্যাকএন্ড মৃত অবস্থাতেও ক্যাশ করা হোম পেজ পরিবেশন হবে।
  • প্রত্যাশিত রেসপন্স। একটি 200 কোড এবং বডিতে একটি সাবস্ট্রিং। অনেক অ্যাপ্লিকেশন নষ্ট হয়ে গেলেও এরর মেসেজসহ 200 রিটার্ন করে।
  • থ্রেশহোল্ড। পরপর দুই বা তিনটি ব্যর্থ চেষ্টা, নাহলে যেকোনো নেটওয়ার্কের সামান্য গোলযোগেই আপনাকে জাগিয়ে তুলবে।
  • চ্যানেল। Telegram বা ইমেইল। অ্যালার্ট সত্যিই পৌঁছায় কি না নিশ্চিত করুন: এক মিনিটের জন্য সার্ভিসটি বন্ধ করে মেসেজের জন্য অপেক্ষা করুন।

আলাদা একটি সার্টিফিকেট এক্সপায়ারি চেক করতে ভুলবেন না — মেয়াদোত্তীর্ণ TLS সার্টিফিকেট আউটেজের মতো দেখায় এবং নিয়মিতই ঘটে।

মেশিনেই ওয়াচডগ

বাহ্যিক মনিটরিং আপনাকে জানাবে সাইটটি ডাউন। এটি নিজে নিজে আবার চালু হওয়ার জন্য systemd কনফিগার করুন। সার্ভিস ইউনিটে:

[Service]
Restart=always
RestartSec=5
StartLimitBurst=5
StartLimitIntervalSec=120

এভাবে সার্ভিসটি আকস্মিক ক্র্যাশ কাটিয়ে উঠবে, কিন্তু কনফিগারেশন নষ্ট থাকলে অনন্তকাল লুপ করবে না। এডিট করার পর: systemctl daemon-reload && systemctl restart myapp।

যেসব অ্যাপ্লিকেশন ক্র্যাশ করে না বরং হ্যাং করে, সেগুলোর জন্য একটি HTTP চেক যোগ করুন। এক জোড়া ইউনিট — একটি টাইমার ও একটি সার্ভিস:

cat >/etc/systemd/system/healthcheck.service <<'EOF'
[Service]
Type=oneshot
ExecStart=/usr/local/bin/healthcheck.sh
EOF

cat >/etc/systemd/system/healthcheck.timer <<'EOF'
[Timer]
OnUnitActiveSec=60
[Install]
WantedBy=timers.target
EOF

systemctl enable --now healthcheck.timer

স্ক্রিপ্টটি নিজে:

#!/bin/sh
curl -fsS --max-time 10 http://127.0.0.1:8080/healthz >/dev/null || systemctl restart myapp

মেশিনের স্বাস্থ্য অ্যালার্ট

আউটেজের আগেই ডিস্ক স্পেস ও মেমরি ফুরিয়ে আসার বিষয়ে জানাও কাজের। সবচেয়ে সহজ উপায় হলো একটি cron জব, যা থ্রেশহোল্ড ছাড়িয়ে গেলে Telegram মেসেজ পাঠায়:

0 * * * * root [ "$(df --output=pcent / | tr -dc 0-9)" -gt 85 ] && curl -s -X POST "https://api.telegram.org/bot$TOKEN/sendMessage" -d chat_id=$CHAT -d text="VDS disk usage is over 85%"

রেডিমেড থ্রেশহোল্ডসহ আরও উন্নত বিকল্প দেয় Netdata।

সাধারণ ভুল

  • একই মেশিনে মনিটরিং। মেশিন ডাউন হলে ওয়াচডগ ও অ্যালার্টিং — দুটোই মরে যায়।
  • অতিরিক্ত সংবেদনশীল থ্রেশহোল্ড। মিথ্যা অ্যালার্মের স্রোতে আসলটি আপনি স্ক্রল করে পার হয়ে যাবেন।
  • কারণ খতিয়ে না দেখে Restart=always। রিস্টার্ট মেমরি লিক ঢেকে রাখে: সার্ভিসটি প্রতি আধা ঘণ্টায় ক্র্যাশ করে, আর আপনি তা দেখতে পান না। systemctl show myapp -p NRestarts এবং journal চেক করুন।
  • শুধু ping দিয়ে চেক। ওয়েব সার্ভার সম্পূর্ণ মৃত অবস্থাতেও মেশিন ICMP-তে সাড়া দেয়।

অ্যালার্ট এলে সবার আগে প্যানেলের /hosting/vds/m/<id>-তে “Overview” চেক করুন। গ্রাফে বিরতি মানে মেশিনে সমস্যা; সাইট অনুপলব্ধ থাকলেও গ্রাফ সমান থাকলে সমস্যা অ্যাপ্লিকেশনে।