نصب Netdata روی لینوکس و هشدار تلگرام

برای نصب Netdata روی سرور لینوکس، اسکریپت نصب رسمی (kickstart) را دانلود و اجرا می‌کنید یا بسته آن را از مخزن توزیع نصب می‌کنید. بعد از نصب، داشبورد روی پورت 19999 در دسترس است و بدون تنظیم اضافه، ده‌ها هزار متریک از CPU، حافظه، دیسک، شبکه و سرویس‌ها را با دقت یک ثانیه نشان می‌دهد. مهم‌ترین نکته امنیتی این است که پورت 19999 را مستقیم روی اینترنت باز نگذارید و از Nginx با احراز هویت یا VPN استفاده کنید.

Netdata برای دیدن لحظه‌ای وضعیت سرور مناسب است و راه‌اندازی آن چند دقیقه طول می‌کشد. برای مقایسه آن با ابزارهای ذخیره‌سازی بلندمدت و هشدار پیچیده، مقایسه Zabbix، Prometheus و Nagios را ببینید.

Netdata چه چیزی نشان می‌دهد؟

  • مصرف CPU به‌تفکیک هسته و نوع، حافظه، swap، دیسک (IO و فضا)، شبکه و پردازش‌ها
  • آمار سرویس‌هایی مثل Nginx، MySQL، Redis و PHP-FPM با ماژول‌های خودکار
  • وضعیت کانتینرها، سیستم فایل، دمای سخت‌افزار (در صورت پشتیبانی) و هشدارهای آماده
  • نمودار زنده با نگهداری تاریخچه روی همان سرور

این ابزار روی همان سرور اجرا می‌شود و برای پایش خارجی (در دسترس بودن سایت از بیرون) جایگزین نیست؛ برای آن Uptime Kuma یا ابزار مشابه لازم است.

پیش از نصب

  • دسترسی root یا sudo
  • حدود 100 تا 300 مگابایت حافظه آزاد (بسته به تعداد متریک‌ها)
  • اگر سرور از بیرون در دسترس است، فایروال را طوری تنظیم کنید که پورت 19999 باز نباشد

مرحله اول: نصب Netdata با اسکریپت رسمی

wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh
less /tmp/netdata-kickstart.sh
sh /tmp/netdata-kickstart.sh --stable-channel --disable-telemetry

دو نکته: اول اینکه اسکریپت را قبل از اجرا بخوانید؛ اجرای هر اسکریپت دانلودشده با دسترسی root ریسک دارد و بهتر است محتوای آن را ببینید. دوم اینکه گزینه --disable-telemetry ارسال آمار ناشناس استفاده به سازنده را خاموش می‌کند. بسته‌های Netdata را در بعضی توزیع‌ها می‌توان با apt install netdata هم نصب کرد؛ نسخه آن ممکن است قدیمی‌تر باشد.

بعد از نصب وضعیت سرویس را ببینید:

sudo systemctl status netdata
sudo ss -tulpn | grep 19999

مرحله دوم: دیدن داشبورد

روی خود سرور یا از طریق تونل SSH باز کنید:

ssh -L 19999:127.0.0.1:19999 user@203.0.113.10

سپس در مرورگر خودتان http://127.0.0.1:19999 را باز کنید. این روش بدون باز کردن پورت روی اینترنت است و برای مدیر تنها کافی است. آدرس IP نمونه است.

مرحله سوم: بستن دسترسی به localhost

به‌طور پیش‌فرض ممکن است Netdata روی همه آدرس‌ها گوش بدهد. فایل تنظیم را باز کنید:

sudo /etc/netdata/edit-config netdata.conf

بخش [web]:

[web]
    bind to = 127.0.0.1

سپس sudo systemctl restart netdata. حالا فقط از خود سرور (یا تونل و پراکسی) در دسترس است.

مرحله چهارم: دسترسی امن با Nginx

اگر باید از راه دور و با دامنه دیده شود، Nginx با احراز هویت و SSL جلوی آن بگذارید:

sudo apt install apache2-utils
sudo htpasswd -c /etc/nginx/.htpasswd admin
server {
    listen 443 ssl;
    server_name netdata.example.com;
    auth_basic "Netdata";
    auth_basic_user_file /etc/nginx/.htpasswd;

    location / {
        proxy_pass http://127.0.0.1:19999;
        proxy_set_header Host $host;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

بدون auth_basic، هر کسی می‌تواند اطلاعات سرور (نام پردازش‌ها، منابع، آدرس‌ها) را ببیند. یک ایده بهتر محدود کردن به آدرس مجاز یا VPN است. توضیح پراکسی در Reverse Proxy چیست و گواهی در نصب SSL رایگان آمده است.

هشدارها

Netdata هشدارهای آماده دارد (مثلاً دیسک پر، CPU بالا، حافظه کم). فایل‌های هشدار در /etc/netdata/health.d/ هستند. برای تغییر یک هشدار:

sudo /etc/netdata/edit-config health.d/disks.conf

برای ارسال هشدار به تلگرام یا ایمیل، فایل health_alarm_notify.conf را تنظیم کنید:

sudo /etc/netdata/edit-config health_alarm_notify.conf

مقدارهای SEND_TELEGRAM، TELEGRAM_BOT_TOKEN و DEFAULT_RECIPIENT_TELEGRAM را بنویسید. توکن ربات مثل رمز نگه‌داری شود. بعد از تغییر، با sudo /usr/libexec/netdata/plugins.d/alarm-notify.sh test ارسال را آزمایش کنید (مسیر ممکن است بسته به نصب فرق کند).

مصرف منابع و نگهداری تاریخچه

Netdata متریک‌ها را در پوشه /var/cache/netdata و /var/lib/netdata نگه می‌دارد. مدت نگهداری و حجم دیسک را در بخش [db] همان netdata.conf تنظیم می‌کنید (مثلاً retention برای هر لایه). برای سرور کوچک، نگهداری چند روز تا چند هفته معمولاً کافی است. اگر مصرف CPU یا حافظه برایتان زیاد است، ماژول‌های بی‌استفاده را غیرفعال کنید.

به‌روزرسانی و حذف

sudo /usr/libexec/netdata/netdata-updater.sh

برای حذف کامل، اسکریپت netdata-uninstaller.sh در مستندات رسمی توضیح داده شده است. در نصب با بسته، از مدیر بسته (apt remove netdata) استفاده کنید. برای ردیابی دقیق مسیرها، مستندات رسمی نصب را ببینید، چون بسته به روش نصب فرق می‌کند.

خطاهای رایج

نشانهعلت و راه حل
داشبورد باز نمی‌شودسرویس بالا نیست یا فایروال/پراکسی مانع است؛ systemctl status netdata
پورت 19999 از اینترنت باز استbind to = 127.0.0.1 را بگذارید و فایروال را بررسی کنید
نمودار سرویس (مثلاً MySQL) نیستماژول نیاز به کاربر یا دسترسی دارد؛ مستندات collector را ببینید
هشدار تلگرام نمی‌آیدتوکن یا Chat ID اشتباه یا ربات در گروه نیست
مصرف دیسک بالا رفتهمدت نگهداری را در بخش [db] کم کنید
داشبورد پشت Nginx قطع می‌شودهدرهای WebSocket (Upgrade) را اضافه کنید

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

آیا Netdata رایگان است؟

Agent متن‌باز و رایگان است. سرویس ابری Netdata (Cloud) طرح‌های جداگانه دارد؛ برای پایش یک سرور به آن نیاز ندارید.

چقدر منابع مصرف می‌کند؟

بسته به تعداد متریک و ماژول‌ها فرق دارد و معمولاً برای سرورهای متوسط قابل قبول است. اگر سرور بسیار کوچک دارید، ماژول‌های غیرضروری را خاموش کنید.

آیا جای Zabbix را می‌گیرد؟

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

آیا اطلاعات به بیرون ارسال می‌شود؟

با --disable-telemetry آمار ناشناس ارسال نمی‌شود، و اگر حساب Cloud وصل نکنید، متریک‌ها فقط روی سرور خودتان می‌مانند.

منابع