بلاگ/راه‌اندازی Netdata برای مانیتورینگ لحظه‌ای سرور روی VPS و سرور اختصاصی
به‌روز شده

راه‌اندازی Netdata برای مانیتورینگ لحظه‌ای سرور روی VPS و سرور اختصاصی

1405/08/180 بازدید
راه‌اندازی Netdata برای مانیتورینگ لحظه‌ای سرور روی VPS و سرور اختصاصی

راه‌اندازی Netdata برای مانیتورینگ لحظه‌ای سرور روی VPS و سرور اختصاصی

وقتی سایت یک‌دفعه کند می‌شود یا سرور قفل می‌کند، اولین سوال همیشه یکی است: الان دقیقا کجای سیستم گیر کرده؟ CPU؟ رم؟ دیسک؟ بدون ابزار مناسب، جواب این سوال حدس زدن است. مانیتورینگ لحظه‌ای سرور با Netdata یکی از سریع‌ترین راه‌ها برای جواب دادن به همین سوال است، آن هم با یک خط نصب.

در این مطلب نصب Netdata روی VPS یا سرور اختصاصی، کار با داشبورد لحظه‌ایش و مهم‌تر از همه، بستن دسترسی عمومی به آن را قدم‌به‌قدم می‌بینیم.

Netdata چیست و چه فرقی با Prometheus یا Zabbix دارد؟

Netdata یک عامل مانیتورینگ متن‌باز است که روی خود سرور نصب می‌شود و بدون نیاز به پایگاه‌داده یا سرور مرکزی جدا، هزاران متریک را هر ثانیه جمع می‌کند و در یک داشبورد وب نشان می‌دهد. برخلاف ابزارهایی که باید اول یک سری زمانی (time series database) راه بیندازید و بعد نمودار بسازید، Netdata از لحظه نصب داشبورد کامل دارد.

این سادگی قیمتی هم دارد: Netdata برای دیدن وضعیت لحظه‌ای یک یا چند سرور عالی است، اما برای نگه‌داشتن تاریخچه چند ماهه یا هشدار پیچیده روی ده‌ها سرور، مانیتورینگ با Prometheus و Grafana یا Zabbix برای چند سرور همزمان ابزار مناسب‌تری هستند. اگر فقط یک یا چند سرور دارید و می‌خواهید همین الان ببینید چه اتفاقی دارد می‌افتد، Netdata جواب سریع‌تری می‌دهد.

نصب Netdata با اسکریپت kickstart

خود تیم Netdata یک اسکریپت نصب رسمی ارائه کرده که روی اوبونتو، دبین، الماالینوکس، سنتاس و بقیه توزیع‌های رایج لینوکس کار می‌کند و خودش تشخیص می‌دهد چه پکیج‌هایی لازم است:

curl -Ss https://get.netdata.cloud/kickstart.sh | bash

نصب چند دقیقه طول می‌کشد و در پایان، Netdata به‌صورت سرویس systemd بالا می‌آید. برای اطمینان از اینکه سرویس روشن است:

sudo systemctl status netdata

اگر سرور شما رم کم دارد (مثلا یک VPS با ۱ گیگابایت)، نگران سربار Netdata نباشید؛ عامل آن معمولا زیر ۱۰۰ مگابایت رم و بخش کوچکی از یک هسته CPU مصرف می‌کند، چون داده‌ها را به‌صورت فشرده و در حافظه نگه می‌دارد، نه در یک پایگاه‌داده سنگین.

سناریوکافی بودن منابعنکته
VPS با ۱ گیگ رم، ۱ هستهبلهمصرف Netdata معمولا زیر ۱۰۰ مگ رم است
VPS با چند هسته و چند گیگ رمبله، با جا برای تاریخچه بیشترمی‌توانید بازه نگه‌داری متریک‌ها را در تنظیمات بالا ببرید
سرور اختصاصی با چند دیسک و چند کارت شبکهبلهNetdata هر دیسک و هر اینترفیس شبکه را جدا نشان می‌دهد

مشاهده لحظه‌ای CPU، رم، دیسک و شبکه

بعد از نصب، داشبورد روی آدرس زیر در دسترس است (به‌جای IP-SERVER آی‌پی واقعی سرور را بگذارید):

http://IP-SERVER:19999

داشبورد Netdata با نمودارهای لحظه‌ای مصرف CPU، رم، دیسک و شبکه

همین که صفحه را باز کنید، نمودارهای زنده مصرف CPU به تفکیک هسته، رم (شامل بافر و کش)، I/O هر دیسک جدا، و ترافیک ورودی/خروجی هر کارت شبکه را می‌بینید؛ همه با بازه‌بندی یک‌ثانیه‌ای. برای مرور سریع وضعیت یک سرور یا بررسی اینکه الان دقیقا کدام پردازش CPU را خورده، کافی است روی نمودار CPU کلیک کنید و بخش «Applications» را باز کنید.

نکته کاربردی: اگر فقط می‌خواهید سریع ببینید مصرف رم چقدر نزدیک به سقف است، سراغ بخش System Overview بروید؛ RAM Available همان عددی است که باید قبل از سفارش ارتقای پلن چک کنید. Netdata به‌صورت پیش‌فرض هم چند هشدار آماده دارد (مثلا پر شدن دیسک یا بالا رفتن Load Average) که در بخش Alarms قابل مشاهده‌اند، بدون این‌که خودتان چیزی تنظیم کرده باشید.

داده‌ها به‌صورت پیش‌فرض چند ساعت تا چند روز در حافظه نگه داشته می‌شوند، نه ماه‌ها. اگر تاریخچه بیشتری لازم دارید، می‌توانید در فایل /etc/netdata/netdata.conf مقدار dbengine multihost disk space را بالا ببرید و بعد سرویس را ری‌استارت کنید.

دریافت هشدار خودکار وقتی مصرف سرور بالا می‌رود

باز کردن داشبورد و نگاه کردن به نمودارها خوب است، اما کسی که بیست‌وچهار ساعته پای مانیتور نمی‌نشیند. نقطه قوت Netdata اینجاست که هشدارهای پیش‌فرض (health.d) را از همان لحظه نصب فعال دارد — مثلا پر شدن دیسک بالای ۹۰ درصد، بالا رفتن Load Average یا کم شدن حافظه آزاد — و فقط کافی است مقصد اعلان را مشخص کنید تا پیام به‌جای ماندن در داشبورد، به شما برسد.

تنظیم این بخش در فایل /etc/netdata/health_alarm_notify.conf انجام می‌شود. برای مثال، برای ارسال هشدار به تلگرام، شناسه بات و چت‌آیدی را در همین فایل وارد می‌کنید:

SEND_TELEGRAM="YES"
TELEGRAM_BOT_TOKEN="your-bot-token"
DEFAULT_RECIPIENT_TELEGRAM="your-chat-id"

همین الگو برای ایمیل (SEND_EMAIL) یا اسلک هم وجود دارد؛ فقط متغیرهای مربوط به همان کانال را پر می‌کنید. بعد از ذخیره فایل، سرویس را ری‌استارت کنید تا تنظیمات جدید بار شود:

sudo systemctl restart netdata

از این به بعد، هر بار یکی از آستانه‌های پیش‌فرض رد شود — مثلا دیسک به ۹۰ درصد برسد — پیام هشدار مستقیم به تلگرام یا ایمیل شما می‌رسد، بدون این‌که مجبور باشید هر چند دقیقه داشبورد را چک کنید. اگر چند سرور دارید و می‌خواهید همه را از یک‌جا ببینید، گزینه رایگان دیگر این است که سرورها را به حساب Netdata Cloud متصل (claim) کنید؛ این کار فقط یک دید مرکزی روی همان داده‌های محلی هر سرور اضافه می‌کند و نصب فعلی شما را تغییر نمی‌دهد.

امن‌سازی داشبورد: چرا پورت 19999 نباید باز بماند

داشبورد Netdata به‌صورت پیش‌فرض بدون رمز عبور است و روی همه اینترفیس‌ها (0.0.0.0) گوش می‌دهد. یعنی اگر فقط پورت 19999 را در فایروال باز بگذارید، هر کسی که IP سرور را بداند می‌تواند مصرف منابع، پردازش‌های در حال اجرا و حتی برخی اطلاعات پیکربندی سرور را ببیند. برای یک سرور عمومی این قابل قبول نیست.

راه ساده: در فایروال سرور (ufw یا firewalld) پورت 19999 را فقط برای IP خودتان باز کنید یا اصلا از بیرون باز نکنید:

sudo ufw allow from YOUR-IP to any port 19999

راه بهتر برای استفاده روزمره: داشبورد را فقط روی localhost بدهید و از طریق ریورس‌پراکسی Nginx با SSL و رمز عبور به آن برسید. در /etc/netdata/netdata.conf:


    bind to = 127.0.0.1

و در Nginx:

location /netdata/ {
    proxy_pass http://127.0.0.1:19999/;
    auth_basic "Netdata";
    auth_basic_user_file /etc/nginx/.htpasswd;
}

بعد از این تغییر، سرویس Netdata را ری‌استارت کنید (sudo systemctl restart netdata) و داشبورد را فقط از آدرس https://your-domain/netdata/ و با رمز عبوری که در .htpasswd ساختید باز کنید. همین دو قدم — بستن پورت و گذاشتن پراکسی با احراز هویت — بیشترین ریسک امنیتی Netdata را از بین می‌برد.

Netdata روی VPS یا سرور اختصاصی: فرقی دارد؟

مراحل نصب و تنظیم یکسان است، چه روی VPS باشید چه روی سرور اختصاصی. تفاوت اصلی در تعداد چیزهایی است که Netdata نشان می‌دهد: روی یک سرور Bare Metal با چند دیسک فیزیکی یا چند کارت شبکه، هر کدام را جدا می‌بینید، در حالی که روی یک VPS معمولا با یک دیسک مجازی و یک اینترفیس شبکه سروکار دارید. اگر همین حالا روی یک سرور مجازی آریانت کار می‌کنید، همین یک خط نصب کافی است تا وضعیت لحظه‌ای سرور را جلوی چشم داشته باشید.

سؤالات متداول

آیا Netdata روی سرور با منابع کم کار می‌کند؟ بله. عامل Netdata معمولا زیر ۱۰۰ مگابایت رم مصرف می‌کند و روی یک VPS با ۱ گیگ رم و ۱ هسته هم بدون مشکل بالا می‌آید.

فرق Netdata با Prometheus و Grafana در چیست؟ Netdata بدون نصب و تنظیم جدا، از لحظه اول داشبورد کامل دارد و برای دید لحظه‌ای عالی است. Prometheus و Grafana برای تاریخچه بلندمدت و هشدارهای پیچیده روی چند سرور مناسب‌ترند.

چطور فقط خودم به داشبورد Netdata دسترسی داشته باشم؟ پورت 19999 را در فایروال فقط برای IP خودتان باز کنید، یا بهتر، Netdata را روی 127.0.0.1 ببندید و از طریق ریورس‌پراکسی Nginx با رمز عبور به آن برسید.

آیا Netdata رایگان است؟ نصب و استفاده از عامل Netdata روی سرور رایگان و متن‌باز است. امکانات اضافه مثل داشبورد مرکزی چند سرور در Netdata Cloud جدا از نصب محلی است و بیرون از این آموزش قرار می‌گیرد.