تثبيت Zabbix 7.0 LTS على Ubuntu 24.04
ثبّت Zabbix 7.0 LTS على Ubuntu 24.04 خطوة بخطوة: أضف المستودع، استورد مخطط MySQL، اضبط nginx وagent2، وحل أخطاء الإعداد الشائعة.
ما الذي تنشئه
خادم VPS واحد يعمل بنظام Ubuntu 24.04 ويشغّل حزمة Zabbix 7.0 LTS كاملة: برنامج zabbix-server الذي يجمع البيانات ويصدر التنبيهات، وقاعدة بيانات MariaDB/MySQL التي تخزّن كل المقاييس، وواجهة PHP الأمامية التي يقدّمها nginx، وzabbix-agent2 الذي يجمع المقاييس من الخادم نفسه. بعد تشغيلها، توجّهها إلى خادم ثانٍ، وتربط قالباً، وتتلقى رسالة بريد إلكتروني فور امتلاء قرص أو توقف خدمة.
Zabbix أثقل من أداة لصفحة حالة. فهو نظام سلاسل زمنية فعلي يوفّر القوالب والمشغلات والتصعيد والاحتفاظ بالسجل. تحدث معظم المشكلات في ثلاث خطوات يتجاوزها المستخدمون: استيراد مخطط قاعدة البيانات، وضبط كلمة مرور قاعدة البيانات التي يقرأها الخادم فعلياً، وإلغاء التعليق عن سطرين في إعداد nginx. نفّذ هذه الخطوات بشكل صحيح، وستصبح بقية العملية معالجاً إرشادياً. إذا كنت تريد فقط فحوصات التشغيل والتوقف وصفحة حالة قابلة للمشاركة، فإن مراقب حالة خفيف مثل Uptime Kuma ينفّذ ذلك داخل حاوية واحدة؛ أما Zabbix فيبرر حجمه عندما تحتاج إلى حدود لكل مقياس وتصعيد عبر عدة مضيفين.
استخدم سلسلة 7.0 LTS. إذ إن الخادم والواجهة الأمامية وagent2 والمخطط تستخدم الإصدارات المتوافقة نفسها، وتحصل على إصلاحات أمنية لسنوات. قبل نسخ اسم ملف المستودع أدناه، ألقِ نظرة على صفحة تنزيل Zabbix الرسمية. تحصر حزمة الإصدار latest إعداد المستودع في 7.0 فقط، ولا تختار إصداراً فرعياً؛ بعد ذلك يثبّت apt حزم 7.0.x التي يحتوي عليها المستودع، وبذلك تحصل على أحدث إصدار متاح. قد تسرد الصفحة أيضاً حزم إصدارات 7.0-N مرقّمة، لكن ذلك الرقم يحدد إصدار إعداد المستودع، لا إصدار بنية Zabbix. تبقى جميع الأوامر الأخرى هنا مستقرة عبر سلسلة 7.0 بأكملها.
المتطلبات المسبقة والمنافذ وتحديد الموارد
افترض أن لديك KVM VPS جديداً يعمل بنظام Ubuntu 24.04، مع صلاحيات root أو sudo. كن واقعياً بشأن الموارد: يُعدّ 2 GB من الذاكرة و2 من vCPU الحد الأدنى العملي لتشغيل الخادم وقاعدة البيانات وnginx وPHP على جهاز واحد يراقب عدداً محدوداً من المضيفات. سيقلع جهاز بسعة 1 GB، لكنه سيحرم قاعدة البيانات من الموارد مع نمو السجل التاريخي. خطط لاستخدام 4 GB عند تجاوز عدد المضيفات بضعة عشرات، وبعد تجاوز 100 مضيف انقل قاعدة البيانات إلى خادم مستقل. يزداد حجم القرص بحسب عدد العناصر التي تجمعها ومدة الاحتفاظ بالسجل التاريخي. خصص بضعة GB عند البداية، وستحذف housekeeper البيانات القديمة وفق فترات الاحتفاظ التي تحددها.
المنافذ: استخدم 80 و443 للواجهة الأمامية، سواء أكانت عامة أو مقيدة بعنوان IP الخاص بك. يستمع الخادم على TCP 10051 لاستقبال البيانات التي ترسلها active agents، ويستمع كل agent على 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، وانسخ عنوان 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، ونسيانها هو سبب ظهور مسار الاستيراد مفقوداً لاحقاً. لا تثبّت أي من هذه الحزم محرك قاعدة بيانات، لذلك ثبّت MariaDB الآن إذا لم يكن موجوداً على الخادم.
sudo apt install -y mariadb-server
sudo systemctl enable --now mariadbالخطوة 3، إنشاء قاعدة البيانات بمجموعة المحارف الصحيحة
يتعامل Zabbix بصرامة مع ترتيب المحارف: فهو يدعم فقط utf8mb4 مع utf8mb4_bin، أو utf8 الأقدم، المعروف أيضاً باسم utf8mb3، مع utf8_bin. وتوصي وثائقه بشدة باستخدام utf8mb4 مع utf8mb4_bin، وهذا ما يستخدمه هذا الدليل. افتح جلسة 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 إجراءً احتياطياً لعملية الاستيراد. ينشئ مخطط Zabbix مشغلات حتمية أثناء الاستيراد، ولا يستطيع حساب غير SUPER مثل zabbix إنشاءها عند تفعيل التسجيل الثنائي. يفعّل MySQL 8 التسجيل الثنائي افتراضياً، وتفعّله أيضاً بعض إصدارات MariaDB المُدارة، بينما لا تفعّله MariaDB القياسية. إذا حذفت الخيار من خادم يستخدم التسجيل الثنائي، تتوقف عملية الاستيراد مع ظهور ERROR 1419 (HY000): You do not have the SUPER privilege and binary logging is enabled. يؤدي ضبطه بصلاحيات root إلى تجاوز ذلك؛ وأوقفه مجدداً بعد اكتمال الاستيراد. دوّن كلمة المرور بدقة، لأن إعداد الخادم يحتاج إلى السلسلة نفسها بايتاً مقابل بايت.
الخطوة 4، استيراد المخطط (الخطوة التي يتخطاها البعض)
هذا هو السبب الأكثر شيوعاً لرفض الواجهة الأمامية الجديدة التحميل: قاعدة البيانات التي أنشأتها فارغة. حمّل المخطط المضمّن في zabbix-sql-scripts إليها.
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | \
mysql --default-character-set=utf8mb4 -uzabbix -p zabbixيطالبك بإدخال كلمة مرور zabbix، ويستغرق التنفيذ من ثلاثين إلى ستين ثانية على VPS صغير، ولا يطبع شيئاً عند النجاح. الصمت صحيح في هذه الحالة. يعني 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 لا يعمل" التي ستصادفها لاحقاً: يبدأ البرنامج الخفي، ويفشل في تسجيل الدخول، ثم يتوقف. لا يعرض ذلك أي شيء على الشاشة؛ ويظهر في السجل فقط.
الخطوة 6، وجّه nginx إلى الواجهة الأمامية
تثبّت حزمة zabbix-nginx-conf كتلة خادم في /etc/zabbix/nginx.conf، وتربطها بـ nginx من /etc/nginx/conf.d/zabbix.conf، لكنها تترك السطرين listen وserver_name في حالة تعليق. لذلك لا يقدّم nginx أي محتوى لـ Zabbix إلى أن تعدّلهما:
server {
listen 80;
server_name zabbix.example.com;
...
}استخدم نطاقك، أو عنوان IP العام للخادم إذا لم يكن لديك DNS بعد. انتبه إلى نقطتين. يستمع موقع ترحيب nginx الافتراضي في Ubuntu أيضاً على المنفذ 80، ويكون مضبوطاً كخادم افتراضي. لذلك يفوز بأي طلب لا يطابق اسمه. احذفه، وإلا فستُعرض الصفحة الخاطئة: 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. ثم اختبر الإعداد وأعد تحميل nginx:
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، ومكّنها حتى تستمر في العمل بعد إعادة التشغيل.
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 أنك تخطيت استيراد المخطط في الخطوة 4، ولذلك لا يملك الخادم شيئاً ليقرأه.
الخطوة 8، إكمال معالج إعداد الويب
انتقل إلى http://your-domain-or-ip. سيفتح معالج إعداد Zabbix. نفّذ الخطوات التالية:
- الترحيب، اختر اللغة.
- التحقق من المتطلبات المسبقة، يجب أن تظهر الحالة OK في كل صف تلقائياً؛ إذ يرفع مجمع
/etc/zabbix/php-fpm.confالمضمّن حدود PHP التي يحتاج إليها Zabbix. - إعداد اتصال قاعدة البيانات، اختر MySQL لنوع قاعدة البيانات، واستخدم المضيف
localhost، والمنفذ0(وهذا يعني المنفذ أو socket الافتراضي)، واسم قاعدة البياناتzabbix، والمستخدمzabbix، وكلمة المرور من الخطوة 3. ستظهر بيانات الاعتماد الخاطئة أو schema المفقودة هنا مباشرة. - الإعدادات، اترك مضيف خادم Zabbix على
localhost، والمنفذ على10051، وأدخل اسماً للتثبيت. - ملخص ما قبل التثبيت، ثم اختر التثبيت؛ سيكتب المعالج
/etc/zabbix/web/zabbix.conf.php. - الإنهاء، سجّل الدخول باستخدام
Admin(بحرف A كبير) وكلمة المرورzabbix، ثم غيّر كلمة المرور فوراً من المستخدمون.
إذا أبلغ المعالج عن Cannot create the configuration file، فهذا يعني أن مستخدم الويب لا يستطيع الكتابة إلى /etc/zabbix/web/. نزّل zabbix.conf.php الذي يعرضه المعالج، وضعه هناك يدوياً باستخدام sudo، ثم انقر على «إنهاء».
الخطوة 9: أضف المضيف المحلي واربط قالباً
لا يراقب Zabbix نفسه تلقائياً. انتقل إلى Data collection → Hosts → Create host، واضبط اسم المضيف على zabbix-server، وأضفه إلى المجموعة Linux servers، ثم أضف واجهة Agent بعنوان IP 127.0.0.1 ومنفذ 10050. ضمن Templates، اربط Linux by Zabbix agent (وهو نوع الاستقصاء السلبي؛ أما Linux by Zabbix agent active فيستخدم دفع البيانات من الوكيل). احفظ التغييرات.
خلال دقيقة، سيظهر في صف المضيف تصنيف ZBX باللون الأخضر، وستصل المقاييس ضمن Monitoring → Latest data. يعني ظهور تصنيف ZBX باللون الأحمر أن الخادم لا يستطيع الوصول إلى الوكيل. هذه حالة فشل موضحة أدناه، وليست خطأً في هذه الخطوة.
الخطوة 10، مشغل مفيد وتنبيه عبر البريد الإلكتروني
يأتي قالب Linux by Zabbix agent مزوداً مسبقاً بمشغلات لوحدة المعالجة المركزية المرتفعة، والذاكرة المنخفضة، وامتلاء الأقراص، ولذلك تحصل على التنبيهات فور ربطه. لمعرفة طريقة إنشاء أحدها، أضف مشغلاً خاصاً بك: افتح المضيف، وانتقل إلى المشغلات → إنشاء مشغل، وسمّه Root filesystem over 90% full on {HOST.NAME}، واضبط مستوى الخطورة على مرتفع، واستخدم التعبير التالي:
last(/zabbix-server/vfs.fs.dependent.size[/,pused])>90يمثل vfs.fs.dependent.size[/,pused] العنصر الذي يعبّر عن النسبة المئوية للمساحة المستخدمة، والذي ينشئه اكتشاف نظام الملفات في القالب لنظام الملفات الجذر. يجمع قالب Linux في الإصدار 7.0 قيمة vfs.fs.get مرة واحدة، ثم يشتق العناصر التابعة لكل نقطة تحميل؛ لذلك يعمل المشغل من دون جمع بيانات إضافية. احفظه.
لا يغيّر المشغل لون صف في لوحة المعلومات إلا أن يرسل إجراء إشعاراً إلى شخص ما. ضمن التنبيهات → أنواع الوسائط → البريد الإلكتروني، اضبط خادم SMTP والمنفذ وعنوان المرسل وأمان الاتصال، وعادةً STARTTLS، وأي بيانات اعتماد للترحيل. ثم استخدم اختبار؛ فإذا فشل، فهذا يعني أن مسار SMTP غير صحيح قبل اعتماد أي تنبيه فعلي عليه. أضف عنواناً إلى المستخدم Admin ضمن المستخدمون → المستخدمون → Admin → الوسائط → إضافة، واختر مستويات الخطورة التي ترسل تنبيهات. بعد ذلك اربطه ضمن التنبيهات → الإجراءات → إجراءات المشغلات → إنشاء إجراء: أضف شرطاً مثل Trigger severity >= Warning، وضمن العمليات أرسل الإشعار إلى Admin عبر البريد الإلكتروني. احفظ الإجراء وفعّله. هل تفضّل تطبيقات المحادثة؟ يأتي Zabbix 7.0 مزوداً بأنواع وسائط webhook لخدمات Slack وDiscord وTelegram، لكن كل خدمة تحتاج إلى إعدادها الخاص بدلاً من إعدادات SMTP. يحتاج Telegram، مثلاً، إلى إنشاء bot عبر BotFather، ووضع رمزه المميز في المعلمة api_token لنوع الوسائط، ووضع معرّف محادثة المستلم في حقل إرسال إلى لدى المستخدم. اتبع README الخاص بالتكامل، وفعّل نوع الوسائط، وعيّنه إلى مستخدم، واستخدمه في إجراء بالطريقة نفسها المستخدمة مع البريد الإلكتروني.
مراقبة خادم ثانٍ باستخدام الوكيل
لمراقبة خادم آخر، أضف مستودع Zabbix إليه أيضاً؛ إذ لا يتضمن Ubuntu 24.04 حزم Zabbix خاصة به. ثم ثبّت الوكيل فقط:
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، وذلك للاستطلاع السلبي. وللفحوصات النشطة، اضبط أيضاً ServerActive مع Hostname فريد يطابق المضيف الذي تنشئه في الواجهة الأمامية:
Server=10.0.0.10
ServerActive=10.0.0.10
Hostname=web-01شغّل sudo systemctl restart zabbix-agent2 وافتح المنفذ TCP 10050 للسماح بالاتصالات من خادم Zabbix إلى هذا الخادم. إعادة التشغيل مهمة: فقد بدأت الحزمة الوكيل فور تثبيته، باستخدام Server=127.0.0.1 المضمّن في الحزمة، ولا يقرأ الوكيل ملفه إلا عند بدء تشغيله. كان enable --now سيجد الوكيل قيد التشغيل بالفعل ولن يغيّر شيئاً، ولذلك كان الوكيل سيستمر في رفض خادم Zabbix. يبدأ الوكيل تلقائياً عند الإقلاع، لأن الحزمة فعّلت الوحدة أيضاً. عُد إلى الواجهة الأمامية، وأنشئ مضيفاً تشير واجهة 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. الواجهة الأمامية تعمل، لكنها لا تستطيع الوصول إلى خادم نشط. هناك 3 أسباب، مرتبة من الأكثر احتمالاً إلى الأقل. الخدمة متوقفة؛ افحص systemctl status zabbix-server وشغّلها. أو أن الخدمة تعمل، لكنها لا تستطيع الوصول إلى قاعدة بياناتها؛ يعرض السجل [Z3001] connection to database 'zabbix' failed: [1045] Access denied، ما يعني أن DBPassword خاطئ أو فارغ. أو أن الواجهة الأمامية تشير إلى خادم خاطئ، وهو مخزّن باعتباره المضيف localhost والمنفذ 10051 في /etc/zabbix/web/zabbix.conf.php. لا يوجد SELinux افتراضياً على Ubuntu، لذلك لا ينطبق هنا سبب مقبس 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. يعني انتهاء المهلة بدلاً من ظهور "connection refused" أن جداراً نارياً يسقط الاتصالات على المنفذ 10050. ويعني Received empty response from Zabbix Agent. Assuming that agent dropped connection because of access permissions. المرتبط بذلك أن الوكيل يمكن الوصول إليه، لكن سطر Server= لا يتضمن IP الخاص بخادم Zabbix. أضف IP ثم أعد تشغيل الوكيل.
صفحة ترحيب 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 يطابق مجموعة العمليات قيد التشغيل.
النسخ الاحتياطية والترقيات وTLS
قاعدة البيانات هي السجل الكامل، لذلك أنشئ نسخة احتياطية منها باستخدام mysqldump وفق جدول زمني، واحتفظ بالتفريغ خارج الخادم:
mysqldump --single-transaction zabbix | gzip > zabbix-$(date +%F).sql.gzملفات إعداد /etc/zabbix صغيرة ويستحق حفظها أيضاً، لكن يمكن إعادة إنشائها؛ أما البيانات فلا يمكن ذلك. الاستعادة هي العملية العكسية: أنشئ قاعدة البيانات، واستورد التفريغ، ووجّه الإعدادات إليها.
تُعد الترقيات ضمن سلسلة 7.0 عمليات apt update && apt upgrade عادية؛ يطبّق الخادم أي عمليات ترحيل للمخطط عند بدء تشغيله التالي، لذلك رقِّ الحزم وأعد تشغيل zabbix-server. أما الانتقال إلى سلسلة رئيسية مستقبلية فهو تغيير مقصود؛ اقرأ ملاحظات الترقية، وأنشئ نسخة احتياطية من قاعدة البيانات أولاً، وتوقّع تغييراً أحادي الاتجاه في المخطط. وهذا الانتقال الأحادي الاتجاه هو بالضبط سبب تثبيتك على سلسلة LTS والاستمرار عليها.
لا تترك الواجهة الأمامية تعمل عبر HTTP العادي. بعد أن يشير DNS إلى الخادم، ثبّت عليه شهادة باستخدام Certbot وLet's Encrypt على nginx في Ubuntu 24.04؛ إذ يعيد ذلك كتابة server block ليستمع على 443 ويعيد توجيه 80. وأثناء تحصين خادم يسجّل الدخول إليه لمراقبة كل خادم آخر تديره، أمِّن SSH عليه أيضاً باستخدام fail2ban لحظر محاولات SSH القسرية. يجب ألا تنتقل بيانات تسجيل الدخول إلى نظام المراقبة بنص واضح، كما يجب ألا تبقى نقطة الدخول الأمامية مفتوحة أمام من يحاولون تخمين كلمات المرور.
FAQ
هل أحتاج إلى وكيل Zabbix، أم يمكنني إجراء المراقبة من دونه؟
كلا الخيارين ممكن. يوفّر الوكيل (agent2) مقاييس تفصيلية لكل مضيف، مثل المعالج والذاكرة والأقراص والعمليات والخدمات وملفات السجل، وهو الخيار المعتاد للخوادم التي تتحكم بها. تغطي المراقبة من دون وكيل الأجهزة التي لا يمكنك تثبيت البرامج عليها: يستخدم SNMP للمبدلات والطابعات، وICMP ping للتحقق من إمكانية الوصول، وفحوص HTTP لنقاط النهاية، وIPMI للتحقق من سلامة العتاد. تجمع معظم عمليات النشر الفعلية بين الخيارين.
لماذا تقول الواجهة الأمامية إن خادم Zabbix لا يعمل؟
تعمل الواجهة الأمامية، لكنها لا تستطيع الوصول إلى عملية 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 جداول السجل التاريخي، ويجعل أعمال التنظيف أقل تكلفة بكثير، ولذلك تميل المواقع الكبيرة إلى استخدامه. اختر أحدهما والتزم به؛ فالترحيل لاحقاً يتطلب تصديراً وإعادة استيراد كاملين، وليس مجرد تغيير في الإعدادات.
ما مقدار RAM الذي يحتاج إليه خادم Zabbix المتكامل؟
بالنسبة إلى خادم واحد يراقب عدداً قليلاً من المضيفين، يُعد 2 GB حداً أدنى واقعياً، بينما تكون 4 GB مريحة عند تجاوز عدد المضيفين بضع عشرات؛ إذ تذهب الذاكرة غالباً إلى ذاكرة التخزين المؤقت لقاعدة البيانات وعمليات الاستطلاع في الخادم. يمكن لـVPS بسعة 1 GB أن يعمل، لكنه يقيّد قاعدة البيانات مع نمو السجل التاريخي. بعد تجاوز 100 مضيف، انقل قاعدة البيانات إلى خادم مستقل واضبط buffer pool الخاص بها بدلاً من إضافة المزيد من RAM إلى جهاز واحد.
هل يُعد Zabbix مبالغاً فيه بالنسبة إلى خادمين فقط؟
قد يكون كذلك. إذا كان كل ما تحتاج إليه هو معرفة ما إذا كانت الخدمة تعمل وصفحة يمكنك مشاركتها، فستكون أداة أخف مثل Uptime Kuma لمراقبة وقت التشغيل والحالة أسرع في الإعداد وأسهل في القراءة بنظرة واحدة. اختر Zabbix عندما تحتاج إلى حدود لكل مقياس، ورسوم بيانية تاريخية، ومضيفين يعتمدون على القوالب، وقواعد تصعيد؛ وهي أمور لا يستطيع أداة ping بسيطة توفيرها لك عبر مجموعة من الخوادم.