مانیتورینگ سرور با Zabbix؛ نصب، Agent و هشدار

مانیتورینگ سرور با Zabbix؛ نصب، Agent و هشدار

جدول محتوا 👇

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

Zabbix چیست و کی مناسب است؟

Zabbix یک سامانه مانیتورینگ کامل است که معیارها را از سرورها و تجهیزات جمع‌آوری، در دیتابیس ذخیره و بر اساس قوانین (Trigger) تحلیل می‌کند. Zabbix برای این موارد انتخاب خوبی است:

  • چند سرور تا صدها سرور و تجهیزات شبکه.
  • محیط‌های ترکیبی لینوکس، ویندوز، روتر و سوییچ (از طریق SNMP).
  • نیاز به تاریخچه طولانی، گزارش و هشدارهای چندمرحله‌ای.

اگر فقط می‌خواهید بدانید سایت بالاست یا نه، Uptime Kuma ساده‌تر است. مقایسه ابزارها در مانیتورینگ سرور چیست.

معماری Zabbix

  • Zabbix Server: هسته سامانه؛ داده‌ها را جمع‌آوری و Triggerها را ارزیابی و هشدار ارسال می‌کند.
  • دیتابیس: MySQL/MariaDB یا PostgreSQL برای تنظیمات و تاریخچه.
  • Frontend: رابط وب PHP برای تنظیم و مشاهده داشبوردها.
  • Agent: برنامه سبکی روی هر سرور که معیارها را جمع‌آوری می‌کند. Zabbix Agent ۲ نسخه جدیدتر با افزونه‌های داخلی برای Docker، دیتابیس‌ها و سرویس‌های دیگر است.
  • Proxy (اختیاری): برای جمع‌آوری داده در شبکه‌ها یا دیتاسنترهای دیگر و ارسال یکجا به سرور.

Agent در دو حالت کار می‌کند: Passive (سرور از Agent روی پورت ۱۰۰۵۰ داده می‌خواهد) و Active (Agent خودش داده را به سرور روی پورت ۱۰۰۵۱ می‌فرستد). حالت Active برای سرورهای پشت NAT یا فایروال سخت‌گیر مناسب‌تر است.

سرور مورد نیاز

برای پایش تا چند ده سرور، یک VPS با ۲ هسته، ۴ گیگابایت RAM و دیسک NVMe کافی است. فشار اصلی روی دیتابیس است؛ با افزایش تعداد Itemها و طول تاریخچه، دیسک سریع و RAM بیشتر لازم می‌شود. تفاوت انواع دیسک را در NVMe، SSD و HDD ببینید. Zabbix را روی سروری جدا از سرورهای پایش‌شونده نصب کنید.

نصب Zabbix Server

Zabbix برای هر توزیع و نسخه، بسته‌های رسمی و دستورالعمل گام‌به‌گام در صفحه دانلود سایت خود دارد. استفاده از نسخه‌های LTS برای محیط عملیاتی توصیه می‌شود. روند کلی روی Ubuntu با MariaDB و Nginx:

  1. بسته مخزن رسمی Zabbix را برای نسخه LTS و توزیع خود از سایت Zabbix دانلود و نصب کنید و apt update بزنید.
  2. بسته‌های سرور، Frontend و Agent را نصب کنید:
    sudo apt install -y zabbix-server-mysql zabbix-frontend-php zabbix-nginx-conf \
      zabbix-sql-scripts zabbix-agent2 mariadb-server
  3. دیتابیس و کاربر را بسازید:
    sudo mysql -e "CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
    CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'STRONG_PASSWORD';
    GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';
    SET GLOBAL log_bin_trust_function_creators = 1;"
    zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql -uzabbix -p zabbix
    sudo mysql -e "SET GLOBAL log_bin_trust_function_creators = 0;"
  4. رمز دیتابیس را در /etc/zabbix/zabbix_server.conf (پارامتر DBPassword) وارد کنید.
  5. در /etc/zabbix/nginx.conf پورت و نام دامنه را تنظیم کنید و سرویس‌ها را فعال کنید:
    sudo systemctl enable --now zabbix-server zabbix-agent2 nginx php8.3-fpm
  6. آدرس Frontend را باز کنید، مراحل نصب وب را طی کنید و رمز پیش‌فرض کاربر Admin را فوراً تغییر دهید.

نام بسته PHP-FPM و مسیر فایل‌ها ممکن است بسته به نسخه توزیع و Zabbix متفاوت باشد؛ دستورالعمل رسمی همان نسخه را مرجع قرار دهید. Frontend را حتماً پشت HTTPS قرار دهید؛ راهنما در SSL چیست.

نصب Agent روی سرورها

روی هر سرور، پس از افزودن مخزن رسمی:

sudo apt install -y zabbix-agent2

در /etc/zabbix/zabbix_agent2.conf:

Server=10.0.0.5
ServerActive=10.0.0.5
Hostname=web-01
sudo systemctl enable --now zabbix-agent2
sudo ufw allow from 10.0.0.5 to any port 10050 proto tcp

Server مشخص می‌کند چه IPهایی اجازه درخواست داده دارند. ارتباط Agent و سرور را از طریق شبکه خصوصی برقرار کنید و پورت ۱۰۰۵۰ را فقط برای IP سرور Zabbix باز بگذارید. اگر ارتباط از اینترنت عبور می‌کند، رمزنگاری PSK یا گواهی را فعال کنید.

افزودن Host و Template

  1. در Frontend به Data collection › Hosts بروید و Host جدید بسازید.
  2. نام را دقیقاً برابر Hostname در Agent وارد کنید و Interface از نوع Agent با IP سرور اضافه کنید.
  3. Template مناسب را متصل کنید؛ مثلاً «Linux by Zabbix agent» که CPU، حافظه، دیسک، شبکه و سرویس‌ها را با Triggerهای آماده پایش می‌کند.
  4. برای Nginx، MySQL، Docker و سرویس‌های دیگر هم Templateهای رسمی وجود دارد.

پس از چند دقیقه، در Monitoring › Latest data داده‌ها را می‌بینید.

Triggerها و هشدارها

Trigger شرطی روی داده‌هاست؛ مثلاً «فضای آزاد دیسک کمتر از ۱۰ درصد» یا «سرویس به مدت ۵ دقیقه پاسخ نداده است». هر Trigger شدت (Severity) دارد. برای ارسال هشدار:

  1. در Alerts › Media types، کانالی مثل تلگرام یا ایمیل را تنظیم کنید؛ Zabbix برای تلگرام Media type آماده دارد.
  2. به کاربر خود در بخش Media، شناسه تلگرام یا ایمیل اضافه کنید.
  3. در Alerts › Actions › Trigger actions یک Action بسازید که برای شدت‌های High و Disaster پیام بفرستد.

Triggerهای پیش‌فرض Templateها را مرور و آستانه‌ها را با واقعیت سرورهای خود تنظیم کنید تا هشدارهای بی‌اهمیت، هشدارهای واقعی را پنهان نکنند. Triggerهای پیش‌بینی‌محور مثل «دیسک تا ۲۴ ساعت دیگر پر می‌شود» (تابع timeleft) بسیار مفیدند.

پایش وب‌سایت و SSL

Zabbix با «Web scenarios» می‌تواند چند مرحله از یک سایت را مثل کاربر بررسی کند (مثلاً صفحه اصلی و ورود) و زمان پاسخ و کد وضعیت را ثبت کند. برای انقضای گواهی SSL هم Template آماده وجود دارد. این بررسی‌ها از سرور Zabbix انجام می‌شوند؛ پس وقتی Zabbix در شبکه دیگری است، دید واقعی‌تری از دسترس‌پذیری می‌دهد.

امنیت Zabbix

  • رمز پیش‌فرض Admin را تغییر دهید یا آن را غیرفعال و کاربر جدید بسازید.
  • Frontend را فقط از IPهای مشخص یا VPN در دسترس قرار دهید.
  • Agent را با کاربر غیر root اجرا کنید (حالت پیش‌فرض) و دستورهای دلخواه از راه دور (system.run) را فعال نکنید.
  • Zabbix و سیستم‌عامل را به‌روز نگه دارید و از دیتابیس آن بکاپ بگیرید.

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

Zabbix بهتر است یا Prometheus و Grafana؟

Zabbix برای زیرساخت کلاسیک (سرورها، تجهیزات شبکه، SNMP) با یک ابزار یکپارچه مناسب‌تر است. Prometheus و Grafana در محیط‌های کانتینری و Kubernetes و برای تیم‌های DevOps رایج‌ترند.

Zabbix Agent یا Agent ۲؟

برای نصب‌های جدید Agent ۲ توصیه می‌شود؛ افزونه‌های داخلی بیشتری دارد و با Templateهای جدید سازگارتر است.

Zabbix می‌تواند روترهای میکروتیک را پایش کند؟

بله، از طریق SNMP و Templateهای آماده برای MikroTik، ترافیک رابط‌ها، منابع و وضعیت تجهیزات پایش می‌شود.

دیتابیس Zabbix خیلی بزرگ شده؛ چه کنم؟

مدت نگهداری تاریخچه (History) و روندها (Trends) را در Itemها و تنظیمات Housekeeping کاهش دهید و Itemهای بلااستفاده را غیرفعال کنید.

مانیتورینگ زیرساخت توسط متخصص

اگر نمی‌خواهید Zabbix را خودتان راه‌اندازی و نگهداری کنید، خدمات مانیتورینگ ۲۴ ساعته تراست هاست سرورها و سرویس‌های شما را پایش و هشدارها را از طریق پیامک، ایمیل و تلگرام ارسال می‌کند.

سرور مجازی ابری تراست هاست

مشاوره تراست‌هاست​

با متخصصان و کارشناسان به صورت رایگان!

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *