آموزش نصب Zabbix 7.0 LTS روی Ubuntu 24.04
نصب کامل Zabbix 7.0 LTS روی Ubuntu 24.04 شامل افزودن مخازن، پیکربندی MariaDB، تنظیم nginx و رفع خطاهای رایج در زمان اجرای schema دیتابیس و اتصال agent2.
آنچه میسازید
یک VPS با سیستمعامل Ubuntu 24.04 که کل پشته Zabbix 7.0 LTS را اجرا میکند: دیمون zabbix-server که وظیفه نظرسنجی (polling) و ارسال هشدارها را بر عهده دارد، یک دیتابیس MariaDB/MySQL که تمام متریکها را ذخیره میکند، یک رابط کاربری 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 اشاره میکند، اما اگر ترجیح میدهید یک بیلد 7.0-N دقیق را ثابت نگه دارید، آن صفحه نام فایل مربوطه را نیز فهرست کرده است. تمام دستورات دیگر در اینجا در کل سری 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 تمام سرویسهای دیگر شما را مانیتور میکند، بهتر است آن را به عنوان بخشی از مجموعه سرویسهای خودمیزبانی که در سال 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 را انتخاب نمایید و دقیقاً همان URL مربوط به 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-agent2zabbix-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 باشد، در غیر این صورت فرآیند import در میانه راه با خطاهای foreign-key متوقف میشود. یک shell با دسترسی root توسط 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 است. طرحواره (schema) Zabbix توابع ذخیرهشده (stored functions) ایجاد میکند و یک حساب کاربری غیر از SUPER مانند zabbix نمیتواند در حالی که binary logging فعال است، آنها را ایجاد کند. MySQL 8 بهصورت پیشفرض binary logging را فعال میکند و برخی نسخههای مدیریتشده MariaDB نیز همینطور هستند (نسخه استاندارد MariaDB اینگونه نیست). اگر این flag را روی سروری که binary logging در آن فعال است نادیده بگیرید، عملیات import با خطای ERROR 1419 (HY000): You do not have the SUPER privilege and binary logging is enabled متوقف میشود. تنظیم آن به عنوان root این مشکل را برطرف میکند؛ پس از پایان import میتوانید آن را دوباره غیرفعال کنید. رمز عبور را دقیقاً یادداشت کنید، چرا که پیکربندی سرور به همان رشته دقیق و بایتبهبایت نیاز دارد.
گام 4، وارد کردن طرحواره (مرحلهای که معمولاً نادیده گرفته میشود)
این رایجترین دلیل برای عدم بارگذاری یک فرانتاند تازه است: پایگاه دادهای که ایجاد کردهاید خالی است. طرحواره (schema) موجود در 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" در مراحل بعدی است: دیمون (daemon) شروع به کار میکند، در ورود به سیستم ناموفق است و سپس متوقف میشود. هیچ پیامی روی صفحه نمایش داده نمیشود و تنها در لاگها قابل مشاهده است.
گام 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، راهاندازی و فعالسازی سرویسها
سرور، ایجنت، 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 نیز فرانتاند خود را تحت همان مستر اجرا میکند. تأیید کنید که سرور شروع به کار کرده و فعال مانده است:
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 مطابقت ندارد؛ آن را اصلاح کرده و سرویس را ریاستارت کنید. مشاهده خطای [Z3005] query failed: [1146] Table 'zabbix.dbversion' doesn't exist به این معنی است که شما وارد کردن اسکیما (schema import) در گام 4 را انجام ندادهاید و سرور دادهای برای خواندن ندارد.
گام 8، تکمیل ویزارد راهاندازی وب
به http://your-domain-or-ip بروید. ویزارد راهاندازی Zabbix باز میشود. مراحل زیر را دنبال کنید:
- خوشآمدگویی، یک زبان انتخاب کنید.
- بررسی پیشنیازها، تمام ردیفها باید بهصورت پیشفرض OK باشند؛ پکیج
/etc/zabbix/php-fpm.confبهطور خودکار محدودیتهای PHP مورد نیاز Zabbix را افزایش میدهد. - پیکربندی اتصال دیتابیس، نوع دیتابیس را MySQL، میزبان را
localhost، پورت را0(که به معنای پورت یا سوکت پیشفرض است)، نام دیتابیس راzabbix، نام کاربری راzabbixو رمز عبوری که در گام 3 ایجاد کردید وارد کنید. اعتبارنامههای نادرست یا نبود schema در همین مرحله مشخص میشود. - تنظیمات، میزبان سرور Zabbix را
localhost، پورت را10051بگذارید و نامی برای این نصب انتخاب کنید. - خلاصه پیش از نصب، سپس روی Install کلیک کنید؛ ویزارد فایل
/etc/zabbix/web/zabbix.conf.phpرا ایجاد میکند. - پایان، با نام کاربری
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])>90vfs.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 یک آدرس بدهید و مشخص کنید کدام سطوح شدت (severities) اطلاعرسانی شوند. سپس آن را در مسیر Alerts → Actions → Trigger actions → Create action متصل کنید: شرطی مانند Trigger severity >= Warning اضافه کنید و در بخش Operations، ارسال به Admin از طریق Email را انتخاب کنید. آن را ذخیره و فعال کنید. چت را ترجیح میدهید؟ Zabbix 7.0 دارای انواع رسانه (media types) مبتنی بر webhook برای Slack، Discord و Telegram است؛ یکی از آنها را دقیقاً مانند Email پیکربندی کرده و به یک کاربر اختصاص دهید.
نظارت بر سرور دوم با استفاده از 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 enable --now zabbix-agent2 را اجرا کنید و پورت TCP 10050 را از سمت سرور Zabbix به سمت این ماشین باز کنید. در پنل کاربری، یک host ایجاد کنید که Agent interface آن به 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 را گزارش میدهد، وارد کردن اسکیما (schema import) در مرحله 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 کمحجم هستند و ارزش ذخیرهسازی دارند، اما قابل بازسازیاند؛ دادهها اینطور نیستند. بازیابی فرآیند معکوس است: پایگاه داده را ایجاد کنید، dump را وارد کنید و پیکربندی را به آن متصل کنید.
ارتقا در سری 7.0 با اجرای معمول apt update && apt upgrade انجام میشود؛ سرور در شروع بعدی خود، هرگونه تغییر در طرحواره (schema) را اعمال میکند، بنابراین بستهها را ارتقا دهید و zabbix-server را ریاستارت کنید. ارتقا به یک نسخه اصلی (major) جدید یک اقدام آگاهانه است؛ یادداشتهای ارتقا را بخوانید، ابتدا از پایگاه داده dump بگیرید و انتظار تغییرات یکطرفه در طرحواره را داشته باشید. همین تغییر یکطرفه دلیل اصلی قفل کردن نسخه روی یک شاخه LTS و ماندن روی آن است.
فرانتاند را روی 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 checks برای 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 GB حداقلِ منطقی و 4 GB برای بیش از چند ده میزبان مقدار مناسبی است؛ حافظه عمدتاً توسط کش دیتابیس و pollers سرور مصرف میشود. یک VPS با 1 GB رم اجرا میشود اما با رشد تاریخچه، دیتابیس دچار کمبود منابع خواهد شد. برای بیش از صد میزبان، دیتابیس را به سرور مجزایی منتقل کنید و به جای افزایش بیرویه RAM در یک ماشین، buffer pool آن را بهینه کنید.
آیا Zabbix برای چند سرور محدود، بیش از حد سنگین (overkill) نیست؟
ممکن است باشد. اگر تنها چیزی که نیاز دارید این است که بدانید «آیا سرویس بالاست؟» و یک صفحه وضعیت که بتوانید به اشتراک بگذارید، ابزار سبکتری مانند Uptime Kuma برای مانیتورینگ آپتایم و وضعیت سریعتر راهاندازی میشود و در یک نگاه خواناتر است. زمانی Zabbix را انتخاب کنید که به آستانههای هشدار برای هر معیار، نمودارهای تاریخی، قالبهای میزبان (templates) و قوانین ارجاع هشدار نیاز دارید؛ مواردی که یک pinger ساده نمیتواند در یک ناوگان سرور به شما ارائه دهد.