دسته بندی:

نصب Vnstat در Directadmin و Cpanel

vnStat یک ابزار سبک خط فرمان است که مصرف ترافیک کارت شبکه سرور را ثبت می‌کند و آن را به تفکیک ساعت، روز، ماه و سال گزارش می‌دهد. روی سرورهای DirectAdmin و cPanel که معمولاً روی توزیع‌های خانواده RHEL اجرا می‌شوند، vnStat از مخزن EPEL نصب می‌شود؛ کافی است بسته را نصب و سرویس آن را فعال کنید تا شمارش از همان لحظه شروع شود.

vnStat چه چیزی را می‌شمارد و چه چیزی را نمی‌شمارد

vnStat بسته‌های شبکه را شنود نمی‌کند. به جای آن، شمارنده‌های بایتِ خودِ کرنل را برای هر اینترفیس می‌خواند (همان اعدادی که در /proc/net/dev و /sys/class/net/ می‌بینید) و اختلافشان را در فواصل منظم در پایگاه‌داده خودش ذخیره می‌کند. سه نتیجه مستقیم دارد:

  • بار پردازشی آن ناچیز است، چون کاری جز خواندن چند عدد از کرنل انجام نمی‌دهد.
  • تمام ترافیک عبوری از آن اینترفیس شمرده می‌شود: وب، ایمیل، FTP، بکاپ، به‌روزرسانی سیستم و حتی ترافیک ناخواسته‌ای که به سمت سرور می‌آید.
  • هیچ تفکیکی بر اساس IP، پورت یا سرویس ندارد. برای آن کار باید سراغ ابزارهایی مثل iftop، nethogs یا ntopng بروید. و اگر جهش ترافیک از سیل اتصال‌ها می‌آید، مسدودسازی خودکار آن کار اسکریپت DDoS Deflate است.

نکته مهم دیگر این است که vnStat گذشته را بازسازی نمی‌کند؛ آمار از لحظه‌ای شروع می‌شود که سرویس آن بالا آمده باشد. اگر روی یک سرور ابری تازه‌تحویل‌گرفته می‌خواهید مصرف واقعی را بسنجید، بهتر است همان روز اول نصبش کنید تا یک دوره کامل ماهانه در اختیار داشته باشید.

چرا عدد vnStat با پهنای‌باند کنترل‌پنل یکی نیست

DirectAdmin و cPanel هر کدام شمارش پهنای‌باند مخصوص خودشان را دارند، اما آن شمارش به ازای هر کاربر و دامنه و بر پایه سرویس‌هایی است که پنل مدیریت می‌کند؛ vnStat در سطح کارت شبکه می‌شمارد. پس طبیعی است که عدد vnStat بزرگ‌تر از مجموع پهنای‌باند کاربران پنل باشد: انتقال بکاپ به سرور دیگر، dnf update و ترافیک ناخواسته در پنل دیده نمی‌شوند ولی از کارت شبکه عبور کرده‌اند. داشتن این مرجع مستقل کمک می‌کند بفهمید افزایش مصرف از سایت کاربران آمده یا از یک فرایند پس‌زمینه. برای اینکه ببینید دقیقا کدام پردازه در حال کار است، ابزار htop ساده‌ترین راه است و روش نصبش را در آموزش نصب Htop نوشته‌ایم. اگر به نگهداری تاریخچه بلندمدت و هشدار خودکار روی آستانه مصرف نیاز دارید، سراغ نصب و کانفیگ Zabbix بروید. فقط توجه کنید سیاست محاسبه ترافیک (داخلی، بین‌الملل، ورودی یا خروجی) بین سرویس‌دهنده‌ها متفاوت است، پس عدد vnStat را با شرایط سرویس خودتان تطبیق دهید.

نصب روی سرورهای DirectAdmin و cPanel

vnStat به کنترل‌پنل وابسته نیست و روی سرور بدون پنل یا روی کنترل پنل‌های رایگان جایگزین کلکسو هم به همین شکل نصب می‌شود؛ فقط مخزن بسته‌ها فرق می‌کند.

بسته vnStat در مخزن پایه RHEL نیست و از EPEL می‌آید. روی AlmaLinux، Rocky یا CentOS دو دستور لازم است:

  • نصب مخزن: dnf install -y epel-release (روی نسخه‌های قدیمی‌تر yum install -y epel-release)
  • نصب بسته: dnf install -y vnstat

روی Debian و Ubuntu بسته در مخزن رسمی هست و همین کافی است: apt update و سپس apt install -y vnstat

روی سرورهای cPanel یک احتیاط لازم است: cPanel بسته‌های خودش (PHP، MySQL/MariaDB، Apache و…) را مدیریت می‌کند و فعال ماندن دائمی EPEL می‌تواند باعث شود بسته‌ای از EPEL جای بسته پنل را بگیرد. راه امن این است که بعد از نصب epel-release، در فایل /etc/yum.repos.d/epel.repo مقدار enabled را 0 کنید و مخزن را فقط هنگام نیاز فعال کنید:

  • dnf install -y --enablerepo=epel vnstat

سپس نسخه نصب‌شده را ببینید، چون رفتار برنامه بین نسخه ۱ و ۲ فرق دارد: vnstat --version

راه‌اندازی سرویس و انتخاب اینترفیس

در vnStat نسخه ۲ یک دیمن به نام vnstatd کار به‌روزرسانی پایگاه‌داده را انجام می‌دهد و نیازی به کران نیست:

  • فعال‌سازی و اجرا: systemctl enable --now vnstat
  • بررسی وضعیت: systemctl status vnstat

در نسخه ۱ که هنوز روی سیستم‌های قدیمی دیده می‌شود، این کار با فایل /etc/cron.d/vnstat و اجرای دوره‌ای vnstat -u انجام می‌شد. اگر نسخه ۲ دارید آن روش را دستی اضافه نکنید؛ گزینه -u دیگر در خود دستور vnstat وجود ندارد.

حالا باید مطمئن شوید کدام اینترفیس شمرده می‌شود. نام اینترفیس روی سرورهای مختلف فرق دارد (eth0، ens3، enp1s0 و…) و روی یک سرور فیزیکی ممکن است بیش از یک کارت شبکه فعال باشد، پس اول مشخص کنید ترافیک اینترنتی از کدام مسیر عبور می‌کند:

  • فهرست اینترفیس‌های سیستم: ip -br link
  • فهرست اینترفیس‌های شناخته‌شده برای vnStat: vnstat --iflist
  • افزودن یک اینترفیس: vnstat --add -i ens3 و بعد systemctl restart vnstat

اگر می‌خواهید یک اینترفیس پیش‌فرض برای خروجی‌ها تعیین شود، در /etc/vnstat.conf مقدار Interface را روی همان نام بگذارید. مراقب باشید همزمان یک اینترفیس و والدش (مثلاً یک VLAN و کارت فیزیکی زیرش، یا یک بریج و عضوش) را نشمارید، چون ترافیک دوبار حساب می‌شود.

خواندن خروجی روزانه و ماهانه

بعد از نصب، چند دقیقه صبر کنید. پیام «داده کافی موجود نیست» در دقایق اول کاملاً عادی است. دستورهای اصلی:

  • vnstat خلاصه وضعیت همه اینترفیس‌ها
  • vnstat -d گزارش روزانه و vnstat -m گزارش ماهانه
  • vnstat -h گزارش ساعتی، مناسب پیدا کردن ساعت اوج مصرف
  • vnstat -i ens3 -m گزارش ماهانه فقط برای یک اینترفیس مشخص
  • vnstat -t پرمصرف‌ترین روزها
  • vnstat -l نمایش زنده نرخ لحظه‌ای (با Ctrl+C خارج شوید) و vnstat -tr 30 میانگین نرخ در ۳۰ ثانیه
  • vnstat --json یا vnstat --xml برای بردن داده به یک داشبورد یا اسکریپت

ستون‌های خروجی به ترتیب ترافیک ورودی، خروجی، مجموع و میانگین نرخ هستند. پایش منظم همین اعداد در کنار مصرف پردازنده و دیسک، بخشی از کار روزمره نگهداری سرور است و اگر تیم داخلی ندارید می‌توانید آن را به خدمات نگهداری سرور بسپارید.

تنظیمات مفیدی که اغلب نادیده گرفته می‌شوند

فایل پیکربندی /etc/vnstat.conf است و بعد از هر تغییر باید سرویس را با systemctl restart vnstat راه‌اندازی مجدد کنید. چند کلید که واقعاً به کار می‌آیند:

  • MonthRotate: روزی از ماه که شمارش ماهانه صفر می‌شود. اگر دوره محاسبه ترافیک سرویس شما از اول ماه شروع نمی‌شود، این مقدار را با روز شروع دوره هماهنگ کنید تا گزارش ماهانه با صورت‌حساب بخواند.
  • MaxBandwidth: سقف نرخ (بر حسب مگابیت بر ثانیه) که بالاتر از آن، یک پرش ناگهانی شمارنده نامعتبر فرض و دور ریخته می‌شود. در نسخه ۲ کلید BandwidthDetection سرعت اینترفیس را خودکار تشخیص می‌دهد و MaxBandwidth فقط وقتی به کار می‌آید که این تشخیص جواب ندهد؛ برای یک اینترفیس مشخص هم می‌توانید مقدار را مستقیم بدهید (مثلاً MaxBWens3) که در آن صورت تشخیص خودکار برای همان اینترفیس غیرفعال می‌شود.
  • کلیدهای نگهداری تاریخچه مثل HourlyDays، DailyDays و MonthlyMonths: اگر به سابقه بلندمدت‌تر نیاز دارید، این مقادیر را افزایش دهید.
  • UnitMode و RateUnit: واحد نمایش حجم و نرخ را عوض می‌کنند. معنی هر مقدار در man vnstat.conf توضیح داده شده است.

اگر ترجیح می‌دهید نصب و تنظیم چنین ابزارهایی روی سرور به عهده تیم فنی باشد، در سرویس‌های سرور مجازی مدیریت‌شده نصب نرم‌افزار و رفع مشکلات فنی بر عهده تیم پشتیبانی است.

مراقب این چند مورد باشید

پایگاه‌داده vnStat در /var/lib/vnstat/ نگهداری می‌شود. پاک کردن این مسیر یا اجرای vnstat -i ens3 --remove کل تاریخچه آن اینترفیس را برای همیشه از بین می‌برد و راه برگشتی ندارد؛ قبل از مهاجرت سرور یا ارتقای سیستم‌عامل از این مسیر نسخه پشتیبان بگیرید. (نام این گزینه در نسخه ۱ --delete بود و در نسخه ۲ دیگر پذیرفته نمی‌شود.) همچنین اگر نام اینترفیس عوض شود، vnStat آن را اینترفیسی تازه می‌بیند و شمارش از صفر شروع می‌شود؛ در این حالت vnstat -i ens3 --rename ens3f0 تاریخچه را حفظ می‌کند. فقط پیش از اجرای آن سرویس را متوقف کنید، چون این کار نباید هم‌زمان با اجرای دیمن انجام شود.

در پایان یادتان باشد vnStat ابزار حسابداری ترافیک است، نه ابزار امنیتی؛ می‌گوید چه حجمی رد شده، نه اینکه چه کسی آن را تولید کرده. خروجی آن را نقطه شروع بگیرید و بعد با ابزارهای تفکیکی سراغ همان بازه زمانی بروید.