نصب Zabbix 7.0 LTS روی Ubuntu 24.04
آموزش کامل نصب Zabbix 7.0 LTS در Ubuntu 24.04 شامل تنظیمات MySQL، nginx و agent2. رفع خطاهای رایج در وارد کردن schema و تنظیمات فرانتاند.
آنچه در حال ساخت آن هستید
یک VPS تکواحدی با سیستمعامل Ubuntu 24.04 که پشته کامل Zabbix 7.0 LTS را اجرا میکند: دیمون zabbix-server که وظیفه پرسوجو و اطلاعرسانی را دارد، یک پایگاه داده MariaDB/MySQL که تمام متریکها را ذخیره میکند، یک فرانتاند PHP که توسط nginx سرو میشود، و zabbix-agent2 که متریکها را از خودِ سرور جمعآوری میکند. پس از راهاندازی، شما آن را به سرور دوم متصل میکنید، یک قالب (template) به آن میچسبانید و به محض پر شدن دیسک یا از کار افتادن یک سرویس، ایمیل دریافت میکنید.
Zabbix سنگینتر از ابزارهای صفحه وضعیت (status-page) است: یک سیستم واقعی سری زمانی (time-series) با قابلیتهای قالب، تریگر، اسکیلسازی (escalation) و نگهداری تاریخچه. تقریباً تمام مشکلات ناشی از سه مرحلهای است که کاربران نادیده میگیرند: وارد کردن (import) طرحواره (schema) پایگاه داده، تنظیم رمز عبور پایگاه دادهای که سرور واقعاً از آن استفاده میکند، و باز کردن کامنت (uncomment) دو خط در تنظیمات nginx. اگر این موارد را درست انجام دهید، مراحل بعدی بسیار ساده خواهد بود. اگر فقط به بررسی وضعیت بالا/پایین بودن (up/down) و یک صفحه وضعیت قابل اشتراکگذاری نیاز دارید، یک مانیتور وضعیت سبک مانند Uptime Kuma این کار را در یک کانتینر انجام میدهد؛ اما Zabbix زمانی ارزش خود را نشان میدهد که به آستانههای (thresholds) اختصاصی برای هر متریک و اسکیلسازی در میان میزبانهای متعدد نیاز داشته باشید.
از نسخه 7.0 LTS استفاده کنید: سرور، فرانتاند، agent2 و schema آن همگی با هم نسخهگذاری شدهاند و سالها اصلاحات امنیتی دریافت میکنند. قبل از کپی کردن نام فایل مخزن (repository) در ادامه، نگاهی به صفحه دانلود رسمی Zabbix بیندازید؛ بسته انتشار latest همیشه به جدیدترین نسخه فرعی 7.0 اشاره میکند، اما اگر میخواهید یک نسخه دقیق 7.0-N را ثابت نگه دارید، آن صفحه نام فایل مربوطه را نیز لیست کرده است. تمام دستورات دیگر در اینجا در کل سری 7.0 ثابت و بدون تغییر هستند.
ظرفیت، پورتها و پیشنیازها
فرض کنید یک VPS تازه با سیستمعامل Ubuntu 24.04 KVM و دسترسی root یا sudo دارید. در مورد منابع سیستم واقعبین باشید: برای اجرای همزمان server، database، nginx و PHP روی یک سیستم برای مانیتورینگ تعداد محدودی host، حداقل منابع مورد نیاز 2 GB RAM و دو vCPU است. یک سیستم با 1 GB RAM بوت میشود اما با افزایش حجم تاریخچه (history)، منابع database را تحلیل میکند؛ برای تعداد میزبانهای بیش از چند ده مورد، 4 GB را در نظر بگیرید و برای بیش از 100 مورد، database را به یک سرور مجزا منتقل کنید. حجم دیسک با تعداد آیتمهای جمعآوری شده و مدت زمان نگهداری تاریخچه افزایش مییابد؛ در ابتدا چند گیگابایت فضا در نظر بگیرید؛ سرویس housekeeper دادههای قدیمی را بر اساس بازههای زمانی تعیین شده (retention windows) حذف میکند.
پورتها: پورتهای 80 و 443 برای frontend هستند که میتوانند عمومی یا محدود به IP خودتان باشند. سرور روی TCP 10051 برای دریافت دادهها از سمت agentهای فعال گوش میدهد و هر agent روی TCP 10050 برای پاسخ به درخواستهای polling سرور گوش میدهد. اگر فایروال در جلوی سیستم قرار دارد، فقط پورتهای مورد نیاز را باز کنید. داشتن یک DNS A record برای frontend توصیه میشود، زیرا برای آن به یک گواهی (certificate) واقعی نیاز خواهید داشت. از آنجایی که یک Zabbix box تمام سرویسهای دیگر شما را مانیتور میکند، بهتر است به جای اینکه صرفاً در کنار سایر سرویسها اضافه شود، بخشی از مجموعه خود-میزبانی (self-hosting stack) که در سال 2026 ارزش اجرا دارد باشد.
Step 1 — افزودن مخزن رسمی Zabbix 7.0
بسته zabbix-release تنها یک کار انجام میدهد: فایل لیست منابع apt و کلید امضا را در سیستم شما قرار میدهد. آن را نصب کنید و سپس ایندکس را refresh کنید.
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 و بدون هشدار مربوط به key است؛ The following signatures couldn't be verified because the public key is not available به این معناست که بسته release هرگز کلید خود را نصب نکرده است، بنابراین دستور dpkg -i را مجدداً اجرا کرده و دوباره update کنید.
مرحله 2 — نصب server، frontend و agent
بستههای server (ساخته شده برای MySQL)، frontend (بر پایه PHP)، تنظیمات nginx، فایلهای SQL schema و 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 را نصب کرده و مراحل مربوط به database را در ادامه اصلاح کنید. zabbix-sql-scripts شامل schema است که در مرحله بعد وارد میکنید — در نسخه 7.0 این یک بسته مجزا است و فراموش کردن نصب آن باعث خطای missing در مسیر import میشود. هیچکدام از این بستهها شامل موتور database نیستند، بنابراین اگر سیستم فاقد آن است، اکنون MariaDB را نصب کنید.
sudo apt install -y mariadb-server
sudo systemctl enable --now mariadbStep 3 — ایجاد پایگاه داده با character set مناسب
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 این قابلیت را ندارد). اگر در سروری که binary logging در آن فعال است از این flag استفاده نکنید، import با خطای ERROR 1419 (HY000): You do not have the SUPER privilege and binary logging is enabled متوقف میشود. تنظیم آن با دسترسی root این مشکل را حل میکند؛ پس از اتمام import، آن را دوباره خاموش کنید. رمز عبور را دقیقاً یادداشت کنید — تنظیمات سرور به همان رشته، بیت به بیت، نیاز دارد.
Step 4 — Import the schema (the step people skip)
این رایجترین دلیل عدم بارگذاری یک frontend تازه است: دیتابیس ساخته شده شما خالی است. اسکیما (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 نصب نشده است (به Step 2 برگردید). ERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' به این معناست که رمز عبور یا دسترسی (grant) مرحله Step 3 اشتباه است. پس از اتمام فرآیند، پرچم ایمنی را دوباره خاموش کنید:
sudo mysql -e "SET GLOBAL log_bin_trust_function_creators = 0;"بارگذاری را با sudo mysql -e "SELECT COUNT(*) FROM zabbix.users;" تایید کنید — نمایش یک عدد به جای خطای doesn't exist به معنای وارد شدن اسکیما است.
Step 5 — Set the database password in zabbix_server.conf
سرور اطلاعات ورود به پایگاه داده را از /etc/zabbix/zabbix_server.conf میخواند. فقط باید رمز عبور را تنظیم کنید؛ مقادیر DBName و DBUser از قبل روی zabbix تنظیم شدهاند. خط # DBPassword= را از حالت کامنت خارج کرده و آن را تنظیم کنید:
DBName=zabbix
DBUser=zabbix
DBPassword=choose-a-strong-passwordرمز عبور باید دقیقاً مشابه رمزی باشد که در Step 3 تعیین کردید. خالی بودن یا اشتباه بودن DBPassword اصلیترین دلیل نمایش خطای "Zabbix server is not running" در مراحل بعد است: دیمون (daemon) اجرا میشود، در ورود به سیستم شکست میخورد و خارج میشود. هیچ پیامی روی صفحه نمایش داده نمیشود و علت فقط در log مشخص است.
Step 6 — تنظیم nginx برای frontend
بسته 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 در Ubuntu نیز روی port 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 بود، یعنی هم سایت پیشفرض و هم block مربوط به Zabbix هر دو از default_server استفاده میکنند؛ سایت پیشفرض را حذف و دوباره تست کنید. در بیشتر موارد، تست با تنها یک warning از نوع conflicting server name با موفقیت انجام میشود اما مرورگر همچنان صفحه welcome پیشفرض را نشان میدهد: این به دلیل اولویت یافتن سایت پیشفرض برای نامهای مطابقتنیافته است و با حذف آن مشکل حل میشود.
Step 7 — Start and enable the services
سرویسهای server، agent، PHP-FPM و nginx را اجرا کنید و آنها را enable کنید تا پس از 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 بخش frontend خود را تحت همان master اجرا میکند. از اجرا و پایداری server اطمینان حاصل کنید:
sudo systemctl status zabbix-server --no-pager
sudo tail -n 20 /var/log/zabbix/zabbix_server.logیک لاگ سالم با عبارت server started و فرآیندهای housekeeper، poller و trapper که در حال اجرا هستند، پایان مییابد. اگر [Z3001] connection to database 'zabbix' failed: [1045] Access denied for user 'zabbix'@'localhost' را مشاهده کردید، به این معناست که DBPassword در Step 5 مطابقت ندارد؛ آن را اصلاح و سرویس را restart کنید. مشاهده خط [Z3005] query failed: [1146] Table 'zabbix.dbversion' doesn't exist به این معناست که وارد کردن schema در Step 4 انجام نشده است، بنابراین server دادهای برای خواندن ندارد.
Step 8 — تکمیل مراحل نصب وب (web setup wizard)
به آدرس http://your-domain-or-ip بروید. راهنمای نصب Zabbix باز میشود. مراحل زیر را دنبال کنید:
- Welcome — یک زبان انتخاب کنید.
- Check of pre-requisites — تمام موارد باید در حالت پیشفرض OK باشند؛ پکیج
/etc/zabbix/php-fpm.confاز قبل محدودیتهای PHP مورد نیاز Zabbix را تنظیم کرده است. - Configure DB connection — نوع پایگاه داده MySQL، host برابر با
localhost، port برابر با0(که به معنای پورت یا socket پیشفرض است)، database name برابر باzabbix، user برابر باzabbix، و رمز عبور از Step 3. اگر اطلاعات ورود اشتباه باشد یا schema وجود نداشته باشد، خطا در همین مرحله نمایش داده میشود. - Settings — مقدار Zabbix server host را روی
localhostو port روی10051باقی بگذارید و نامی برای نصب انتخاب کنید. - Pre-installation summary، سپس Install — راهنما فایل
/etc/zabbix/web/zabbix.conf.phpرا ایجاد میکند. - Finish — با کاربر
Admin(حرف A بزرگ) و رمز عبورzabbixوارد شوید و بلافاصله رمز عبور را در بخش Users تغییر دهید.
اگر راهنما خطای Cannot create the configuration file را گزارش کرد، به این معناست که کاربر وب دسترسی نوشتن در /etc/zabbix/web/ را ندارد — فایل zabbix.conf.php پیشنهادی را دانلود کنید، آن را به صورت دستی با استفاده از sudo در آن مسیر قرار دهید و روی Finish کلیک کنید.
Step 9 — Add the local host and attach a template
Zabbix به صورت خودکار از خودش مانیتورینگ نمیکند. به مسیر Data collection → Hosts → Create host بروید، نام host را روی zabbix-server تنظیم کنید، آن را به گروه Linux servers اضافه کنید، و یک interface از نوع Agent با IP 127.0.0.1 و port 10050 اضافه کنید. در بخش Templates، قالب Linux by Zabbix agent را انتخاب کنید (این نسخه از نوع passive-poll است؛ در مقابل، Linux by Zabbix agent active از حالت agent push استفاده میکند). تنظیمات را ذخیره کنید.
در کمتر از یک دقیقه، در ردیف host، برچسب سبز رنگ ZBX ظاهر میشود و دادهها در بخش Monitoring → Latest data نمایش داده میشوند. برچسب قرمز ZBX به این معناست که سرور نمیتواند به agent متصل شود؛ این یک حالت خطا است که در ادامه بررسی میشود و اشتباه در این مرحله نیست.
Step 10 — یک Trigger کاربردی و یک هشدار ایمیلی
قالب Linux by Zabbix agent از قبل دارای Triggerهایی برای CPU بالا، حافظه کم و دیسکهای پر است؛ بنابراین بلافاصله پس از اتصال، هشدارها را دریافت خواهید کرد. برای مشاهده نحوه ساخت یک Trigger، خودتان یکی بسازید: Host را باز کنید، به مسیر 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 در این قالب برای روت فایلسیستم ساخته میشود (قالب Linux در نسخه 7.0 یک بار vfs.fs.get را جمعآوری کرده و آیتمهای وابسته به هر Mount را استخراج میکند)، بنابراین Trigger بدون نیاز به جمعآوری داده اضافی فعال میشود. آن را ذخیره کنید.
یک Trigger تنها رنگ یک ردیف را در داشبورد تغییر میدهد، مگر اینکه یک 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، پیام را از طریق Email برای Admin ارسال کنید. آن را ذخیره و فعال کنید. اگر چت را ترجیح میدهید؟ نسخه 7.0 Zabbix دارای Media typeهای Webhook برای Slack، Discord و Telegram است؛ یکی از آنها را دقیقاً مانند Email پیکربندی کرده و به یک کاربر اختصاص دهید.
Monitoring a second server with the 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 ساخته شده در frontend مطابقت داشته باشد، استفاده کنید:
Server=10.0.0.10
ServerActive=10.0.0.10
Hostname=web-01دستور sudo systemctl enable --now zabbix-agent2 را اجرا کنید و پورت TCP 10050 را از سمت سرور Zabbix به این ماشین باز کنید. در frontend، یک host ایجاد کنید که رابط کاربری Agent آن به IP این ماشین اشاره کند، قالب Linux را متصل کنید، و اطلاعات در کمتر از یک دقیقه گزارش میشود.
حالتهای خطا و رشتههای متنی مشاهده شده
نمایش Error connecting to database یا خطای پایگاه داده در Frontend. در مرحله DB در Wizard، کد Access denied for user 'zabbix'@'localhost' (using password: YES) به این معناست که رمز عبور با مرحله 3 مطابقت ندارد یا GRANT اجرا نشده است. اگر اتصال به پایگاه داده برقرار است اما Frontend خطای The frontend does not match Zabbix database یا Table 'zabbix.users' doesn't exist را گزارش میدهد، وارد کردن schema در مرحله 4 نادیده گرفته شده یا با شکست مواجه شده است — آن را در یک پایگاه داده تازه ایجاد شده مجدداً اجرا کنید.
بنر نارنجی: Zabbix server is not running: the information displayed may not be current. سرویس Frontend فعال است اما نمیتواند به یک سرور زنده متصل شود. سه علت وجود دارد که احتمال اول بیشتر است. سرویس متوقف شده است — systemctl status zabbix-server را بررسی و سرویس را start کنید. سرویس در حال اجرا است اما نمیتواند به پایگاه داده متصل شود — لاگ خطای [Z3001] connection to database 'zabbix' failed: [1045] Access denied نشاندهنده رمز عبور اشتباه یا خالی برای DBPassword است. یا Frontend به سرور اشتباهی اشاره میکند که به عنوان host localhost port 10051 در /etc/zabbix/web/zabbix.conf.php ذخیره شده است. در Ubuntu به صورت پیشفرض SELinux وجود ندارد، بنابراین علت SELinux-socket که در راهنماهای RHEL ذکر شده، در اینجا صدق نمیکند؛ در اینجا مشکل تقریباً همیشه مربوط به رمز عبور پایگاه داده یا متوقف شدن سرویس است.
نمایش برچسب قرمز ZBX در Host؛ خطای آیتم Get value from agent failed: cannot connect to [[127.0.0.1]:10050]: [111] Connection refused. Agent در حال اجرا نیست یا گوش به زنگ (listening) نیست. systemctl status zabbix-agent2 را بررسی و ListenPort=10050 را تایید کنید. بروز timeout به جای "connection refused" به این معناست که یک firewall در حال drop کردن پورت 10050 است. خطای مرتبط Received empty response from Zabbix Agent. Assuming that agent dropped connection because of access permissions. به این معناست که Agent قابل دسترسی است اما در خط Server= آن، IP سرور Zabbix لیست نشده است — آن را اضافه کرده و Agent را restart کنید.
نمایش صفحه خوشآمدگویی ساده nginx، یا 502 Bad Gateway. صفحه خوشآمدگویی به این معناست که سایت پیشفرض همچنان فعال است یا بلوک Zabbix لینک نشده است — /etc/nginx/sites-enabled/default را حذف کنید و مطمئن شوید /etc/nginx/conf.d/zabbix.conf مطابق با مرحله 6 وجود دارد. خطای 502 به این معناست که nginx به PHP دسترسی پیدا کرده اما PHP-FPM متوقف شده است یا روی یک socket متفاوت در حال listening است — سرویس php8.3-fpm را start کنید و بررسی کنید که socket fastcgi_pass در بلوک Zabbix با pool در حال اجرا مطابقت داشته باشد.
Backups, upgrades, and 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 را restart کنید. انتقال به یک نسخه اصلی (major line) جدید، یک حرکت آگاهانه است — یادداشتهای ارتقا آن را بخوانید، ابتدا از دیتابیس dump تهیه کنید، و انتظار تغییرات یکطرفه در schema را داشته باشید. همین تغییر یکطرفه است که دلیل اصلی استفاده از نسخههای LTS و ماندن روی آنهاست.
بخش frontend را روی پروتکل HTTP ساده رها نکنید. به محض اینکه DNS به سمت سرور اشاره کرد، با استفاده از Certbot and Let's Encrypt on nginx for Ubuntu 24.04 یک گواهی (certificate) روی آن نصب کنید؛ این ابزار server block را طوری بازنویسی میکند که روی پورت 443 گوش دهد و پورت 80 را redirect کند. در حالی که در حال ایمنسازی سروری هستید که برای نظارت بر سایر سرورهای خود به آن login میکند، دسترسی SSH آن را نیز با fail2ban banning brute-force SSH attempts محدود کنید. یک حساب کاربری مانیتورینگ نباید به صورت cleartext ارسال شود و درگاه ورود آن نباید برای حدسزنندگان رمز عبور باز باشد.
FAQ
آیا به Zabbix agent نیاز دارم یا میتوانم بدون آن مانیتورینگ انجام دهم؟
هر دو روش کار میکند. agent (نسخه agent2) متریکهای دقیق و متنوعی از هر host ارائه میدهد — شامل CPU، memory، disks، processes، services و log files — و انتخاب استاندارد برای سرورهایی است که مدیریت آنها در اختیار شماست. مانیتورینگ بدون agent (Agentless) برای دستگاههایی که امکان نصب نرمافزار روی آنها نیست استفاده میشود: مانند SNMP برای سوئیچها و پرینترها، ICMP ping برای بررسی اتصال، HTTP checks برای endpointها، و IPMI برای بررسی سلامت سختافزار. در اکثر پیادهسازیهای واقعی، از هر دو روش به صورت ترکیبی استفاده میشود.
چرا frontend اعلام میکند که Zabbix server در حال اجرا نیست؟
frontend در حال کار است اما نمیتواند به یک پروسه فعال zabbix-server متصل شود. معمولاً سرور اجرا شده، اما به دلیل اشتباه بودن یا خالی بودن DBPassword در zabbix_server.conf، عملیات login شکست خورده و سرور متوقف شده است. دستور systemctl status zabbix-server را اجرا کنید و خروجی /var/log/zabbix/zabbix_server.log را بخوانید؛ یک خط [Z3001] connection to database ... failed این موضوع را تایید میکند. پسورد را اصلاح و سرویس را restart کنید؛ پیغام خطا در کمتر از یک دقیقه برطرف میشود.
آیا حتماً باید از MySQL استفاده کنم یا میتوانم از PostgreSQL استفاده کنم؟
هر دو کاملاً پشتیبانی میشوند: zabbix-server-mysql به همراه MariaDB یا MySQL (مانند این راهنما)، یا zabbix-server-pgsql به همراه PostgreSQL. برای نصبهای کوچک، تفاوت انتخابها ناچیز است. برای نصبهای بزرگ، PostgreSQL به همراه افزونه TimescaleDB جداول تاریخچه (history) را پارتیشنبندی میکند و مدیریت آنها را بسیار ارزانتر میکند؛ به همین دلیل سایتهای بزرگ به سمت آن تمایل دارند. یکی را انتخاب کنید و از آن استفاده کنید؛ تغییر دیتابیس در آینده مستلزم export و import کامل است و صرفاً با تغییر یک تنظیمات انجام نمیشود.
یک سرور Zabbix all-in-one به چه میزان RAM نیاز دارد؟
برای یک سیستم که تعداد محدودی host را مانیتور میکند، 2 GB حداقل واقعبینانه و 4 GB برای بیش از چند ده host ایدهآل است؛ بیشتر حافظه مصرفی صرف cache دیتابیس و pollers سرور میشود. یک VPS با 1 GB رم کار میکند اما با افزایش حجم دادههای history، دیتابیس با کمبود منابع مواجه میشود. برای بیش از 100 host، دیتابیس را روی یک سرور مجزا قرار دهید و به جای اضافه کردن RAM به یک ماشین، buffer pool آن را تنظیم کنید.
آیا Zabbix برای مدیریت چند سرور، ابزاری بیش از حد سنگین است؟
میتواند باشد. اگر تنها نیاز شما به دانستن وضعیت "on/off" بودن سرورها و داشتن یک صفحه نمایش ساده است، ابزار سبکتری مانند Uptime Kuma برای مانیتورینگ وضعیت و uptime سریعتر راهاندازی میشود و خواندن آن سادهتر است. زمانی Zabbix را انتخاب کنید که به آستانههای (thresholds) اختصاصی برای هر متریک، نمودارهای تاریخی، قالبهای host (templates) و قوانین escalation نیاز دارید؛ مواردی که یک pinger ساده نمیتواند در مقیاس وسیع به شما ارائه دهد.