SSD Nodes Learn Hosting plans →
راهنماها Matt Connorتوسط Matt Connor

آموزش نصب Zabbix 7.0 LTS روی Ubuntu 24.04

راهنمای کامل نصب Zabbix 7.0 LTS بر روی Ubuntu 24.04. نحوه افزودن مخازن، پیکربندی MariaDB، تنظیم nginx و رفع خطاهای رایج در وارد کردن schema پایگاه داده را بیاموزید.

آنچه در حال ساخت آن هستید

یک سرور مجازی (VPS) با سیستم‌عامل Ubuntu 24.04 که کل پشته Zabbix 7.0 LTS را اجرا می‌کند: دیمون zabbix-server که وظیفه نظرسنجی و ارسال هشدارها را بر عهده دارد، یک پایگاه‌داده MariaDB/MySQL که تمام معیارها (metrics) را ذخیره می‌کند، یک رابط کاربری PHP که توسط nginx ارائه می‌شود، و zabbix-agent2 که معیارها را از خودِ سرور جمع‌آوری می‌کند. پس از راه‌اندازی، آن را به سرور دوم متصل می‌کنید، یک قالب (template) به آن اختصاص می‌دهید و در لحظه پر شدن دیسک یا از کار افتادن یک سرویس، ایمیل دریافت می‌کنید.

Zabbix سنگین‌تر از یک ابزار ساده وضعیت‌سنجی (status-page) است: این یک سیستم سری زمانی (time-series) واقعی با قابلیت‌هایی نظیر قالب‌ها، تریگرها، تشدید هشدار (escalation) و نگهداری تاریخچه است. تقریباً تمام دشواری کار در سه مرحله‌ای است که افراد از آن غفلت می‌کنند: وارد کردن طرحواره (schema) پایگاه‌داده، تنظیم رمز عبور پایگاه‌داده که سرور واقعاً آن را می‌خواند، و حذف علامت کامنت از دو خط در پیکربندی nginx. اگر این موارد را به‌درستی انجام دهید، بقیه مراحل بسیار ساده خواهد بود. اگر فقط به بررسی وضعیت بالا/پایین بودن (up/down) و یک صفحه وضعیت قابل اشتراک‌گذاری نیاز دارید، یک مانیتور وضعیت سبک Uptime Kuma این کار را در یک کانتینر انجام می‌دهد؛ Zabbix زمانی ارزش خود را نشان می‌دهد که به آستانه‌های (thresholds) مبتنی بر معیار و تشدید هشدار در چندین میزبان نیاز داشته باشید.

از سری 7.0 LTS استفاده کنید: سرور، رابط کاربری، agent2 و طرحواره آن هم‌نسخه هستند و برای سال‌ها اصلاحات امنیتی دریافت می‌کنند. پیش از کپی کردن نام فایل مخزن در ادامه، نگاهی به صفحه رسمی دانلود Zabbix بیندازید. بسته انتشار latest فقط مخزن 7.0 را پیکربندی می‌کند و نسخه جزئی (point release) خاصی را انتخاب نمی‌کند: apt سپس هر بسته‌ای از 7.0.x که در مخزن موجود باشد را نصب می‌کند، که به این ترتیب مسیر نصب به جدیدترین نسخه ختم می‌شود. این صفحه ممکن است بسته‌های انتشار شماره‌دار 7.0-N را نیز فهرست کند، اما آن شماره مربوط به نسخه‌بندی تنظیمات مخزن است، نه ساخت (build) خود Zabbix. تمام دستورات دیگر در اینجا برای کل سری 7.0 پایدار هستند.

تخمین منابع، پورت‌ها و پیش‌نیازها

فرض کنید یک VPS با سیستم‌عامل Ubuntu 24.04 و دسترسی root یا sudo در اختیار دارید. در مورد منابع صادق باشید: 2 گیگابایت رم و 2 هسته vCPU حداقلِ واقع‌بینانه برای اجرای سرور، دیتابیس، Nginx و PHP روی یک ماشین جهت مانیتورینگ تعدادی میزبان است. یک سرور با 1 گیگابایت رم بوت می‌شود، اما با افزایش تاریخچه، دیتابیس با کمبود منابع مواجه خواهد شد؛ برای بیش از چند ده میزبان، 4 گیگابایت رم در نظر بگیرید و اگر تعداد میزبان‌ها از 100 عدد فراتر رفت، دیتابیس را به سرور جداگانه‌ای منتقل کنید. فضای دیسک با توجه به تعداد آیتم‌های جمع‌آوری‌شده و مدت زمان نگهداری تاریخچه افزایش می‌یابد؛ برای شروع چند گیگابایت در نظر بگیرید، چرا که housekeeper داده‌های قدیمی را بر اساس بازه‌های نگهداری که تنظیم کرده‌اید، پاکسازی می‌کند.

پورت‌ها: پورت‌های 80 و 443 برای رابط کاربری (frontend) که می‌تواند عمومی باشد یا دسترسی آن به IP شما محدود شود. سرور برای دریافت داده از agentهای فعال روی پورت TCP 10051 گوش می‌دهد و هر agent برای پاسخ به درخواست‌های polling سرور، روی پورت TCP 10050 گوش می‌دهد. اگر از فایروال استفاده می‌کنید، فقط پورت‌هایی را باز کنید که قصد دارید در معرض دید قرار دهید. داشتن یک رکورد DNS A برای رابط کاربری توصیه می‌شود، زیرا برای آن به یک گواهی معتبر نیاز خواهید داشت. از آنجایی که Zabbix تمام سرویس‌های دیگر شما را مانیتور می‌کند، بهتر است آن را در پشتهٔ جامع self-hosting که در سال 2026 ارزش اجرا دارد جای دهید، نه اینکه آن را به عنوان یک ابزار جانبی و ثانویه اضافه کنید.

گام 1، افزودن مخزن رسمی Zabbix 7.0

بسته zabbix-release تنها یک کار انجام می‌دهد: لیست منابع apt و کلید امضا را در سیستم شما قرار می‌دهد. آن را نصب کنید و سپس ایندکس را به‌روزرسانی نمایید.

wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.0+ubuntu24.04_all.deb
sudo dpkg -i zabbix-release_latest_7.0+ubuntu24.04_all.deb
sudo apt update

اگر wget مقدار 404 Not Found را برگرداند، یعنی نام فایل تغییر کرده است؛ صفحه دانلود Zabbix را باز کنید، Ubuntu 24.04 را انتخاب کرده و آدرس zabbix-release دقیقی که نمایش می‌دهد را کپی کنید. یک apt update تمیز، خط repo.zabbix.com را نشان می‌دهد و هیچ هشدار کلیدی ندارد؛ The following signatures couldn't be verified because the public key is not available به این معنی است که بسته انتشار، کلید خود را نصب نکرده است، بنابراین dpkg -i را دوباره اجرا کرده و مجدداً به‌روزرسانی کنید.

گام 2، نصب سرور، فرانت‌اند و ایجنت

سرور کامپایل‌شده با MySQL، فرانت‌اند PHP، پیکربندی nginx، فایل‌های طرح‌واره SQL و agent2 را به‌صورت یکجا نصب کنید.

sudo apt install -y zabbix-server-mysql zabbix-frontend-php \
  zabbix-nginx-conf zabbix-sql-scripts zabbix-agent2

zabbix-server-mysql سرور کامپایل‌شده برای MySQL/MariaDB است؛ برای PostgreSQL به‌جای آن zabbix-server-pgsql را نصب کرده و مراحل دیتابیس در ادامه را متناسب با آن تغییر دهید. zabbix-sql-scripts شامل طرح‌واره‌ای است که در مرحله بعد وارد می‌کنید؛ این یک بسته مجزا در نسخه 7.0 است و فراموش کردن آن دقیقاً همان دلیلی است که باعث می‌شود مسیر import در مراحل بعدی پیدا نشود. هیچ‌کدام از این بسته‌ها موتور دیتابیس را به‌صورت خودکار نصب نمی‌کنند، بنابراین اگر MariaDB روی سیستم نصب نیست، همین حالا آن را نصب کنید.

sudo apt install -y mariadb-server
sudo systemctl enable --now mariadb

گام 3، ایجاد دیتابیس با مجموعه کاراکتر مناسب

Zabbix در مورد collation بسیار سخت‌گیر است: این سیستم فقط از utf8mb4 با utf8mb4_bin یا نسخه قدیمی‌تر utf8 (معروف به utf8mb3) با utf8_bin پشتیبانی می‌کند، و مستندات آن به‌شدت استفاده از utf8mb4 با utf8mb4_bin را توصیه می‌کند که این راهنما نیز از همین استفاده می‌کند. یک شل روت با sudo mysql باز کنید و دستور زیر را اجرا کنید:

CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER zabbix@localhost IDENTIFIED BY 'choose-a-strong-password';
GRANT ALL PRIVILEGES ON zabbix.* TO zabbix@localhost;
SET GLOBAL log_bin_trust_function_creators = 1;
FLUSH PRIVILEGES;

آن خط SET GLOBAL یک سوپاپ اطمینان برای عملیات import است. طرح‌واره Zabbix در حین import تریگرهای قطعی (deterministic) ایجاد می‌کند و یک حساب کاربری غیر از SUPER مانند zabbix نمی‌تواند در حالی که binary logging فعال است آن‌ها را ایجاد کند. MySQL 8 به‌صورت پیش‌فرض binary logging را فعال می‌کند و برخی از نسخه‌های مدیریت‌شده MariaDB نیز همین‌طور هستند (نسخه استاندارد MariaDB این‌طور نیست). اگر این فلگ را روی سروری که binary logging در آن فعال است نادیده بگیرید، عملیات import با خطای ERROR 1419 (HY000): You do not have the SUPER privilege and binary logging is enabled متوقف می‌شود. تنظیم آن به‌عنوان روت این مشکل را حل می‌کند؛ پس از import می‌توانید آن را دوباره غیرفعال کنید. رمز عبور را دقیقاً یادداشت کنید، تنظیمات سرور به همان رشته کاراکتر به کاراکتر نیاز دارد.

گام 4، وارد کردن اسکیما (مرحله‌ای که معمولاً نادیده گرفته می‌شود)

این رایج‌ترین دلیل برای عدم بارگذاری یک فرانت‌اند تازه نصب‌شده است: دیتابیسی که ایجاد کرده‌اید خالی است. اسکیما موجود در zabbix-sql-scripts را در آن بارگذاری کنید.

zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | \
  mysql --default-character-set=utf8mb4 -uzabbix -p zabbix

این دستور رمز عبور zabbix را درخواست می‌کند، روی یک VPS کوچک بین 30 تا 60 ثانیه اجرا می‌شود و در صورت موفقیت هیچ خروجی‌ای نمایش نمی‌دهد؛ سکوت در اینجا به معنای موفقیت است. خطای zcat: /usr/share/zabbix-sql-scripts/mysql/server.sql.gz: No such file or directory به این معنی است که بسته zabbix-sql-scripts نصب نشده است (به گام 2 بازگردید). خطای ERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' به این معنی است که رمز عبور یا مجوزهای اعطا شده در گام 3 نادرست هستند. پس از پایان کار، پرچم امنیتی را دوباره غیرفعال کنید:

sudo mysql -e "SET GLOBAL log_bin_trust_function_creators = 0;"

بارگذاری را با sudo mysql -e "SELECT COUNT(*) FROM zabbix.users;" تأیید کنید؛ مشاهده یک عدد، و نه خطای doesn't exist، به این معنی است که اسکیما با موفقیت وارد شده است.

گام 5، تنظیم رمز عبور پایگاه داده در zabbix_server.conf

سرور اطلاعات ورود به پایگاه داده خود را از /etc/zabbix/zabbix_server.conf می‌خواند. تنها نیاز است رمز عبور تنظیم شود، زیرا DBName و DBUser به‌صورت پیش‌فرض روی zabbix تنظیم شده‌اند. خط # DBPassword= را از حالت کامنت خارج کرده و آن را مقداردهی کنید:

DBName=zabbix
DBUser=zabbix
DBPassword=choose-a-strong-password

رمز عبور باید دقیقاً همان مقداری باشد که در گام 3 تعیین کردید. خالی بودن یا اشتباه بودن DBPassword، اصلی‌ترین دلیل نمایش بنر "Zabbix server is not running" است که بعداً با آن مواجه می‌شوید: دیمون شروع به کار می‌کند، در ورود به سیستم ناموفق است و سپس متوقف می‌شود. هیچ پیامی روی صفحه این موضوع را اعلام نمی‌کند و تنها در لاگ‌ها قابل مشاهده است.

گام 6، تنظیم Nginx برای سرویس‌دهی به فرانت‌اند

بسته zabbix-nginx-conf یک server block در مسیر /etc/zabbix/nginx.conf نصب می‌کند و آن را از /etc/nginx/conf.d/zabbix.conf به Nginx لینک می‌دهد، اما این فایل با خطوط listen و server_name که کامنت شده‌اند عرضه می‌شود. بنابراین تا زمانی که آن‌ها را ویرایش نکنید، Nginx هیچ محتوایی برای Zabbix ارائه نمی‌دهد:

server {
    listen          80;
    server_name     zabbix.example.com;
    ...
}

از دامنه خود استفاده کنید، یا اگر هنوز DNS ندارید، از IP عمومی سرور استفاده کنید. دو نکته مهم وجود دارد. سایت پیش‌فرض Nginx در اوبونتو نیز روی پورت 80 گوش می‌دهد و به عنوان default server علامت‌گذاری شده است، بنابراین برای هر درخواستی که نام آن با تنظیماتش مطابقت نداشته باشد، این سایت نمایش داده می‌شود؛ آن را حذف کنید تا صفحه اشتباه بارگذاری نشود: sudo rm -f /etc/nginx/sites-enabled/default. و اگر /etc/nginx/conf.d/zabbix.conf به هر دلیلی وجود ندارد (یک خطای شناخته‌شده در بسته‌بندی)، لینک را به‌صورت دستی با sudo ln -s /etc/zabbix/nginx.conf /etc/nginx/conf.d/zabbix.conf ایجاد کنید. سپس تست کنید و reload نمایید:

sudo nginx -t
sudo systemctl reload nginx

دستور nginx -t باید خروجی test is successful را چاپ کند. اگر به جای آن nginx: [emerg] a duplicate default server for 0.0.0.0:80 را چاپ کرد، یعنی هم سایت پیش‌فرض و هم بلاک Zabbix ادعای مالکیت default_server را دارند؛ سایت پیش‌فرض را حذف کرده و دوباره تست کنید. در موارد رایج‌تر، تست با یک هشدار conflicting server name با موفقیت انجام می‌شود اما مرورگر همچنان صفحه خوش‌آمدگویی ساده را نشان می‌دهد: این به دلیل برتری سایت پیش‌فرض در نام‌های نامنطبق است و حذف آن مشکل را حل می‌کند.

گام 7، راه‌اندازی و فعال‌سازی سرویس‌ها

سرور، agent، PHP-FPM و nginx را اجرا کنید و آن‌ها را فعال کنید تا پس از reboot به‌طور خودکار بالا بیایند.

sudo systemctl restart zabbix-server zabbix-agent2 nginx php8.3-fpm
sudo systemctl enable  zabbix-server zabbix-agent2 nginx php8.3-fpm

نسخه Ubuntu 24.04 همراه با PHP 8.3 عرضه می‌شود، بنابراین سرویس FPM با نام php8.3-fpm شناخته می‌شود؛ بسته zabbix-nginx-conf نیز فرانت‌اند خود را تحت همان master اجرا می‌کند. اطمینان حاصل کنید که سرور اجرا شده و فعال باقی مانده است:

sudo systemctl status zabbix-server --no-pager
sudo tail -n 20 /var/log/zabbix/zabbix_server.log

لاگ سالم با پیام شروع به کار سرور و اجرای پردازش‌های housekeeper، poller و trapper پایان می‌یابد. اگر با خطای [Z3001] connection to database 'zabbix' failed: [1045] Access denied for user 'zabbix'@'localhost' مواجه شدید، به این معنی است که DBPassword تنظیم‌شده در گام 5 مطابقت ندارد؛ آن را اصلاح کرده و سرویس را restart کنید. مشاهده خطای [Z3005] query failed: [1146] Table 'zabbix.dbversion' doesn't exist به این معناست که شما وارد کردن schema در گام 4 را انجام نداده‌اید، بنابراین سرور داده‌ای برای خواندن ندارد.

گام 8، تکمیل ویزارد راه‌اندازی وب

به آدرس http://your-domain-or-ip بروید. ویزارد راه‌اندازی Zabbix باز می‌شود. مراحل را به ترتیب زیر دنبال کنید:

  1. Welcome (خوش‌آمدگویی)، یک زبان انتخاب کنید.
  2. Check of pre-requisites (بررسی پیش‌نیازها)، تمام ردیف‌ها باید به صورت پیش‌فرض وضعیت OK را نشان دهند؛ بسته /etc/zabbix/php-fpm.conf که نصب شده است، محدودیت‌های PHP مورد نیاز Zabbix را از قبل تنظیم کرده است.
  3. Configure DB connection (پیکربندی اتصال دیتابیس)، نوع دیتابیس را MySQL، میزبان را localhost، پورت را 0 (که به معنای پورت یا سوکت پیش‌فرض است)، نام دیتابیس را zabbix، نام کاربری را zabbix و رمز عبوری که در گام 3 تعیین کردید را وارد کنید. در صورت اشتباه بودن اطلاعات کاربری یا نبودن اسکیما، خطا در همین مرحله نمایش داده می‌شود.
  4. Settings (تنظیمات)، میزبان سرور Zabbix یعنی localhost و پورت 10051 را به همان صورت رها کنید و نامی برای این نصب انتخاب کنید.
  5. Pre-installation summary (خلاصه پیش از نصب)، سپس روی Install کلیک کنید؛ ویزارد فایل /etc/zabbix/web/zabbix.conf.php را ایجاد می‌کند.
  6. Finish (پایان)، با نام کاربری Admin (حرف A بزرگ) و رمز عبور zabbix وارد شوید و بلافاصله رمز عبور را در بخش Users تغییر دهید.

اگر ویزارد خطای Cannot create the configuration file را گزارش کرد، به این معناست که کاربر وب دسترسی نوشتن در /etc/zabbix/web/ را ندارد. فایل zabbix.conf.php ارائه‌شده را دانلود کنید، آن را به‌صورت دستی با دستور sudo در مسیر مربوطه قرار دهید و سپس روی Finish کلیک کنید.

گام 9، افزودن میزبان محلی و پیوست کردن قالب

نرم‌افزار Zabbix به‌صورت خودکار خودش را مانیتور نمی‌کند. به مسیر Data collection → Hosts → Create host بروید، نام میزبان را روی zabbix-server تنظیم کنید، آن را به گروه Linux servers بیفزایید و یک رابط Agent با IP 127.0.0.1 و پورت 10050 اضافه کنید. در بخش Templates، قالب Linux by Zabbix agent را لینک کنید (این نسخه مبتنی بر passive-poll است؛ Linux by Zabbix agent active از روش push توسط ایجنت استفاده می‌کند). تنظیمات را ذخیره کنید.

در کمتر از یک دقیقه، ردیف میزبان یک برچسب سبز رنگ ZBX نشان می‌دهد و معیارها در بخش Monitoring → Latest data ظاهر می‌شوند. برچسب قرمز ZBX به این معنی است که سرور نمی‌تواند به ایجنت متصل شود؛ این یک وضعیت خطا است که در ادامه بررسی می‌شود و به معنای اشتباه در این گام نیست.

گام 10، یک تریگر مفید و هشدار ایمیلی

قالب Linux by Zabbix agent از قبل دارای تریگرهایی برای CPU بالا، حافظه کم و دیسک‌های پر است، بنابراین به محض اتصال آن، هشدارها را دریافت خواهید کرد. برای دیدن نحوه ساخت یک تریگر، تریگر خود را اضافه کنید: میزبان را باز کنید، به مسیر Triggers → Create trigger بروید، نام آن را Root filesystem over 90% full on {HOST.NAME} بگذارید، شدت (severity) را روی High تنظیم کنید و از این عبارت استفاده کنید:

last(/zabbix-server/vfs.fs.dependent.size[/,pused])>90

vfs.fs.dependent.size[/,pused] همان آیتم درصد استفاده است که کشف سیستم‌فایل (filesystem discovery) در قالب برای سیستم‌فایل روت ایجاد می‌کند (قالب لینوکس نسخه 7.0، vfs.fs.get را یک‌بار جمع‌آوری کرده و آیتم‌های وابسته به هر mount را از آن استخراج می‌کند)، بنابراین تریگر بدون نیاز به جمع‌آوری داده‌های اضافی فعال می‌شود. آن را ذخیره کنید.

یک تریگر تنها تا زمانی که یک action به کسی اطلاع ندهد، فقط رنگ یک ردیف را در داشبورد تغییر می‌دهد. در مسیر Alerts → Media types → Email، سرور SMTP، پورت، آدرس فرستنده، امنیت اتصال (معمولاً STARTTLS) و هرگونه اعتبارنامه relay را تنظیم کنید، سپس از Test استفاده کنید؛ شکست در این مرحله به این معنی است که مسیر SMTP پیش از آنکه هشداری به آن وابسته شود، اشتباه است. به کاربر Admin یک آدرس در مسیر Users → Users → Admin → Media → Add بدهید و مشخص کنید کدام شدت‌های هشدار اطلاع‌رسانی شوند. سپس آن را در مسیر Alerts → Actions → Trigger actions → Create action تنظیم کنید: شرطی مانند Trigger severity >= Warning اضافه کنید و در بخش Operations، ارسال به Admin از طریق Email را انتخاب کنید. آن را ذخیره و فعال کنید. چت را ترجیح می‌دهید؟ Zabbix 7.0 دارای انواع رسانه webhook برای Slack، Discord و Telegram است، اما هر کدام به جای تنظیمات SMTP به راه‌اندازی سرویس مخصوص خود نیاز دارند: برای مثال، تلگرام به یک ربات نیاز دارد که از طریق BotFather ایجاد شده باشد، توکن آن در پارامتر api_token نوع رسانه قرار می‌گیرد و ID چت گیرنده در فیلد Send to کاربر وارد می‌شود. README مربوط به هر یکپارچه‌سازی را دنبال کنید، نوع رسانه را فعال کنید، آن را به یک کاربر اختصاص دهید و درست مانند ایمیل در یک action از آن استفاده کنید.

نظارت بر سرور دوم با استفاده از agent

برای نظارت بر یک سرور دیگر، مخزن Zabbix را روی آن نیز اضافه کنید؛ Ubuntu 24.04 هیچ بسته Zabbix داخلی ندارد. سپس فقط agent را نصب کنید:

wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.0+ubuntu24.04_all.deb
sudo dpkg -i zabbix-release_latest_7.0+ubuntu24.04_all.deb
sudo apt update
sudo apt install -y zabbix-agent2

فایل /etc/zabbix/zabbix_agent2.conf را ویرایش کنید، Server را روی IP سرور Zabbix تنظیم کنید (برای passive polling) و برای بررسی‌های فعال (active checks)، ServerActive و یک Hostname منحصربه‌فرد که با نام host ایجادشده در پنل کاربری مطابقت دارد را وارد کنید:

Server=10.0.0.10
ServerActive=10.0.0.10
Hostname=web-01

دستور sudo systemctl restart zabbix-agent2 را اجرا کنید و پورت TCP 10050 را از سمت سرور Zabbix به سمت این ماشین باز کنید. راه‌اندازی مجدد (restart) اهمیت دارد: بسته نصب‌شده، agent را بلافاصله پس از نصب با Server=127.0.0.1 پیش‌فرض اجرا کرده است و agent فایل تنظیمات خود را فقط هنگام شروع به کار می‌خواند. دستور enable --now متوجه می‌شود که سرویس از قبل در حال اجراست و تغییری ایجاد نمی‌کند، بنابراین agent همچنان درخواست‌های سرور Zabbix شما را رد خواهد کرد. اجرای خودکار در هنگام بوت از قبل تنظیم شده است، زیرا بسته نصب‌شده، unit مربوطه را نیز فعال کرده است. در پنل کاربری، یک host ایجاد کنید که رابط Agent آن به IP آن ماشین اشاره کند، قالب Linux را به آن متصل کنید؛ گزارش‌دهی ظرف یک دقیقه آغاز می‌شود.

حالت‌های شکست و پیام‌های مربوطه

فرانت‌اند خطای Error connecting to database یا خطای دیتابیس را نشان می‌دهد. در مرحله دیتابیسِ ویزارد، خطای Access denied for user 'zabbix'@'localhost' (using password: YES) به این معناست که رمز عبور با مرحله 3 مطابقت ندارد یا اسکریپت GRANT هرگز اجرا نشده است. اگر دیتابیس متصل می‌شود اما فرانت‌اند خطای The frontend does not match Zabbix database یا Table 'zabbix.users' doesn't exist را گزارش می‌کند، یعنی وارد کردن اسکیما در مرحله 4 نادیده گرفته شده یا با شکست مواجه شده است؛ آن را مجدداً در یک دیتابیس تازه ایجاد شده اجرا کنید.

بنر نارنجی: Zabbix server is not running: the information displayed may not be current. فرانت‌اند بالا است اما نمی‌تواند به سرور فعال دسترسی پیدا کند. سه علت وجود دارد که به ترتیب احتمال ذکر شده‌اند. سرویس متوقف شده است؛ وضعیت systemctl status zabbix-server را بررسی کرده و آن را استارت کنید. سرویس در حال اجراست اما نمی‌تواند به دیتابیس خود متصل شود؛ لاگ خطای [Z3001] connection to database 'zabbix' failed: [1045] Access denied را نشان می‌دهد که به معنای اشتباه بودن یا خالی بودن DBPassword است. یا فرانت‌اند به سرور اشتباهی اشاره می‌کند که به عنوان هاست localhost و پورت 10051 در فایل /etc/zabbix/web/zabbix.conf.php ذخیره شده است. در Ubuntu به‌صورت پیش‌فرض SELinux وجود ندارد، بنابراین علت مربوط به سوکت SELinux که در راهنماهای RHEL ذکر می‌شود در اینجا صدق نمی‌کند؛ در این سیستم، مشکل تقریباً همیشه مربوط به رمز عبور دیتابیس یا متوقف بودن سرویس است.

هاست برچسب قرمز ZBX را نشان می‌دهد؛ خطای آیتم Get value from agent failed: cannot connect to [[127.0.0.1]:10050]: [111] Connection refused. ایجنت در حال اجرا نیست یا به درخواست‌ها گوش نمی‌دهد. وضعیت systemctl status zabbix-agent2 را بررسی کرده و ListenPort=10050 را تأیید کنید. خطای timeout به‌جای "connection refused" به این معناست که فایروال پورت 10050 را مسدود کرده است. خطای مرتبط Received empty response from Zabbix Agent. Assuming that agent dropped connection because of access permissions. به این معناست که ایجنت در دسترس است اما خط Server= در تنظیمات آن، IP سرور Zabbix را لیست نکرده است؛ آن را اضافه کرده و ایجنت را ری‌استارت کنید.

صفحه خوش‌آمدگویی پیش‌فرض nginx یا خطای 502 Bad Gateway. صفحه خوش‌آمدگویی به این معناست که سایت پیش‌فرض همچنان فعال است یا بلاک Zabbix لینک نشده است؛ فایل /etc/nginx/sites-enabled/default را حذف کرده و وجود /etc/nginx/conf.d/zabbix.conf را مطابق مرحله 6 تأیید کنید. خطای 502 به این معناست که nginx به PHP دسترسی پیدا کرده اما PHP-FPM متوقف است یا روی سوکت متفاوتی گوش می‌دهد؛ سرویس php8.3-fpm را استارت کنید و بررسی کنید که سوکت fastcgi_pass در بلاک Zabbix با pool در حال اجرا مطابقت داشته باشد.

پشتیبان‌گیری، ارتقا و TLS

پایگاه داده تمام تاریخچه شماست، بنابراین با استفاده از mysqldump به‌صورت زمان‌بندی‌شده از آن نسخه پشتیبان تهیه کنید و فایل dump را خارج از سرور نگهداری کنید:

mysqldump --single-transaction zabbix | gzip > zabbix-$(date +%F).sql.gz

فایل‌های پیکربندی /etc/zabbix حجم کمی دارند و ذخیره کردن آن‌ها نیز ارزشمند است، اما این فایل‌ها قابل بازسازی هستند؛ در حالی که داده‌ها این‌طور نیستند. بازیابی شامل مراحل معکوس است: ایجاد پایگاه داده، وارد کردن (import) فایل dump و تنظیم فایل پیکربندی برای اتصال به آن.

ارتقا در سری 7.0 شامل اجرای عادی apt update && apt upgrade است؛ سرور در شروع بعدی خود، هرگونه مهاجرت شمای پایگاه داده (schema migration) را اعمال می‌کند، بنابراین بسته‌ها را ارتقا داده و zabbix-server را ری‌استارت کنید. ارتقا به یک نسخه اصلی (major) آینده، یک اقدام آگاهانه است؛ یادداشت‌های ارتقا را بخوانید، ابتدا از پایگاه داده dump بگیرید و انتظار تغییرات یک‌طرفه در شما را داشته باشید. دقیقاً به همین دلیل است که باید نسخه خود را روی یک شاخه LTS قفل (pin) کنید و روی همان بمانید.

فرانت‌اند را روی HTTP ساده رها نکنید. هنگامی که DNS به سرور اشاره کرد، با استفاده از Certbot و Let's Encrypt روی nginx برای Ubuntu 24.04 یک گواهی روی آن قرار دهید؛ این کار بلوک سرور را بازنویسی می‌کند تا روی پورت 443 گوش دهد و ترافیک پورت 80 را تغییر مسیر (redirect) دهد. در حالی که مشغول مقاوم‌سازی سروری هستید که برای نظارت بر سایر سرورهای شما استفاده می‌شود، SSH آن را نیز با مسدود کردن تلاش‌های brute-force SSH با fail2ban ایمن کنید. ورود به سیستم نظارتی نباید به‌صورت متن ساده (cleartext) انجام شود و درِ ورودی آن نباید برای حدس‌زنندگان رمز عبور باز بماند.

FAQ

آیا به Zabbix agent نیاز دارم یا می‌توانم بدون آن مانیتورینگ انجام دهم؟

هر دو روش کار می‌کنند. Agent (نسخه agent2) معیارهای دقیق هر میزبان، شامل CPU، حافظه، دیسک‌ها، پردازش‌ها، سرویس‌ها و فایل‌های لاگ را ارائه می‌دهد و انتخاب استاندارد برای سرورهایی است که کنترل آن‌ها را در دست دارید. مانیتورینگ بدون agent (Agentless) برای دستگاه‌هایی است که امکان نصب نرم‌افزار روی آن‌ها وجود ندارد: SNMP برای سوییچ‌ها و پرینترها، ICMP ping برای بررسی در دسترس بودن، بررسی‌های HTTP برای endpointها و IPMI برای سلامت سخت‌افزار. اکثر پیاده‌سازی‌های واقعی ترکیبی از هر دو هستند.

چرا فرانت‌اند می‌گوید Zabbix server در حال اجرا نیست؟

فرانت‌اند کار می‌کند اما نمی‌تواند به یک پردازش فعال zabbix-server متصل شود. معمولاً سرور شروع به کار کرده، اما به دلیل اشتباه یا خالی بودن DBPassword در zabbix_server.conf موفق به ورود نشده و بلافاصله متوقف شده است. دستور systemctl status zabbix-server را اجرا کنید و /var/log/zabbix/zabbix_server.log را بخوانید؛ یک خط حاوی [Z3001] connection to database ... failed علت را تأیید می‌کند. رمز عبور را اصلاح کرده و سرویس را ری‌استارت کنید؛ بنر خطا ظرف یک دقیقه ناپدید می‌شود.

آیا مجبور به استفاده از MySQL هستم یا می‌توانم از PostgreSQL استفاده کنم؟

هر دو کاملاً پشتیبانی می‌شوند: zabbix-server-mysql با MariaDB یا MySQL همان‌طور که در این راهنما آمده، یا zabbix-server-pgsql با PostgreSQL. برای نصب‌های کوچک، انتخاب بین این دو تفاوت چندانی ایجاد نمی‌کند. برای مقیاس‌های بزرگ، PostgreSQL با افزونه TimescaleDB جداول تاریخچه را پارتیشن‌بندی می‌کند و عملیات نگهداری (housekeeping) را بسیار کم‌هزینه‌تر می‌سازد؛ به همین دلیل سایت‌های بزرگ به سمت آن متمایل هستند. یکی را انتخاب کنید و همان را ادامه دهید، زیرا مهاجرت در آینده به معنای خروجی گرفتن کامل و وارد کردن مجدد داده‌هاست، نه فقط تغییر یک تنظیم در کانفیگ.

یک سرور Zabbix all-in-one به چه مقدار RAM نیاز دارد؟

برای یک سرور که تعداد کمی میزبان را مانیتور می‌کند، 2 گیگابایت حداقلِ واقع‌بینانه است و 4 گیگابایت برای بیش از چند ده میزبان مقدار مناسبی است؛ حافظه عمدتاً توسط کش دیتابیس و pollers سرور مصرف می‌شود. یک VPS با 1 گیگابایت رم اجرا می‌شود اما با رشد تاریخچه، دیتابیس دچار کمبود منابع خواهد شد. برای بیش از صد میزبان، دیتابیس را به سرور مجزایی منتقل کنید و به جای افزایش بی‌رویه رم در یک ماشین، buffer pool آن را بهینه کنید.

آیا Zabbix برای چند سرور محدود، بیش از حد پیچیده (Overkill) نیست؟

ممکن است باشد. اگر تنها چیزی که نیاز دارید این است که بدانید «آیا سرویس بالا است؟» و یک صفحه وضعیت که بتوانید به اشتراک بگذارید، ابزار سبک‌تری مانند Uptime Kuma برای مانیتورینگ آپ‌تایم و وضعیت سریع‌تر راه‌اندازی می‌شود و در یک نگاه خواناتر است. زمانی Zabbix را انتخاب کنید که به آستانه‌های هشدار برای هر معیار، نمودارهای تاریخی، قالب‌بندی میزبان‌ها و قوانین ارجاع هشدار (escalation rules) نیاز دارید؛ مواردی که یک پینگر ساده نمی‌تواند در مقیاس یک ناوگان از سرورها به شما ارائه دهد.