دليل النشر

‏Zabbix على VPS: مراقبة الخوادم والخدمات والشبكة

انشر على VPS Cloud ←

دليل عملي

الاستضافة الذاتية

‏Zabbix على VPS: مراقبة الخوادم والخدمات والشبكة

قرص يمتلئ ليلًا، وخدمة تتوقف دون إنذار، ورابط شبكة مزدحم: من دون مراقبة، يخبرك بها عميل. ‏Zabbix منصة مراقبة مفتوحة المصدر (رخصة AGPL-3.0) تراقب الخوادم والتطبيقات وأجهزة الشبكة، وتنبّه الشخص المناسب فور تجاوز أي عتبة. يثبّته هذا الدليل على خادم افتراضي باستخدام Docker Compose، ويضعه خلف nginx عبر HTTPS، ويربط الخادم بوكيله الخاص، ثم يضيف خوادمك الأخرى وتنبيهاتك.

6 دقائق للقراءةعدد الخطوات: 3
المحتويات· ما الذي يفعله Zabbix1/12
  1. 01ما الذي يفعله Zabbix
  2. 02ما يقدّمه Zabbix
  3. 03‏Zabbix مقارنةً بالخيارات الأخرى
  4. 04المتطلبات
  5. 05تثبيت Zabbix باستخدام Docker Compose
  6. 06غيّر كلمة مرور المصنع قبل أي شيء
  7. 07وضع Zabbix خلف nginx عبر HTTPS
  8. 08ربط المضيف «Zabbix server» بوكيل الخادم الافتراضي
  9. 09مراقبة خوادمك الأخرى
  10. 10تلقي التنبيهات
  11. 11النسخ الاحتياطي والتحديث
  12. 12التثبيت بنقرة واحدة على ServOrbit

ما الذي يفعله Zabbix

يجمع Zabbix قياسات — حمل المعالج، والذاكرة الحرة، ومساحة القرص، وحالة خدمة، وزمن استجابة صفحة — ويقارنها بـمشغّلات. وعندما يتحقق تعبير ما، مثل «أقل من 10% من المساحة الحرة لمدة خمس دقائق»، يفتح Zabbix مشكلة ويعرضها في لوحات معلوماته وينفّذ الإجراءات المقررة: رسالة بريد إلكتروني، أو رسالة Telegram، أو webhook.

تصل القياسات عبر عدة طرق: وكيل Zabbix المثبّت على كل خادم، وبروتوكول SNMP لأجهزة التوجيه والمبدّلات ووحدات الطاقة، وسيناريوهات الويب للمواقع وواجهات API، أو استعلامات مباشرة لقاعدة بيانات. وتجمع القوالب الجاهزة القياسات والمشغّلات المناسبة لـ Linux وWindows وnginx وMySQL وPostgreSQL وDocker.

ما يقدّمه Zabbix

  • وكلاء Linux وWindows — المعالج والذاكرة والأقراص والشبكة والخدمات والعمليات والسجلات.
  • ‏SNMP — مراقبة أجهزة الشبكة دون وكيل، مع اكتشاف تلقائي للمنافذ.
  • المشغّلات والتصعيد — عتبات واضحة، وتبعيات بين المضيفين، وتنبيهات ترتفع مستوى إذا لم يتفاعل أحد.
  • سيناريوهات الويب — توفّر سلسلة من الصفحات أو استدعاءات API وزمن استجابتها ومحتواها.
  • لوحات المعلومات والخرائط والتقارير — لفريق التشغيل ولعملائك أيضًا.
  • صلاحيات حسب مجموعة المضيفين — لا يرى كل مستخدم إلا ما يعنيه.

‏Zabbix مقارنةً بالخيارات الأخرى

مرّر الجدول أفقيًا

‏Zabbix‏Prometheus + Grafana‏Uptime Kuma
ما الذي يُراقَبالخوادم والخدمات والشبكة والمواقعمقاييس التطبيقات والحاوياتتوفّر المواقع والمنافذ
الجمعوكيل وSNMP وHTTP وقواعد البياناتمصدّرات تُستعلَممجسّات HTTP وTCP وping
الإعدادواجهة ويبملفات YAMLواجهة ويب
التنبيهاتمدمجة مع التصعيد‏Alertmanager منفصلمدمجة
التكلفةسعر الخادم الافتراضيسعر الخادم الافتراضيسعر الخادم الافتراضي

المتطلبات

خادم افتراضي بنظام Ubuntu 24.04 بذاكرة 2 غيغابايت وقرص 20 غيغابايت لبضع عشرات من المضيفين، مع Docker وإضافة Compose، ونطاق فرعي يشير إلى الخادم، مثل zabbix.example.com. خطّط لمساحة قرص أكبر إذا احتفظت بسجل طويل: فقاعدة PostgreSQL تكبر مع عدد القياسات.

تثبيت Zabbix باستخدام Docker Compose

  1. تحضير المجلد وكلمة مرور قاعدة البيانات

    يحمل الملف .env كلمة مرور PostgreSQL التي يتشاركها الخادم والواجهة الويب.

    mkdir -p /opt/zabbix && cd /opt/zabbix
    echo "DB_PASSWORD=$(openssl rand -hex 16)" > .env
    chmod 600 .env
  2. كتابة الملف docker-compose.yml

    أربع خدمات: خادم Zabbix، والواجهة الويب (nginx وPHP)، ووكيل الخادم الافتراضي، وPostgreSQL. لا تُنشر إلا الواجهة الويب، وعلى الواجهة المحلية فقط: سيتولى nginx أمر HTTPS.

    services:
      zabbix-server:
        image: zabbix/zabbix-server-pgsql:alpine-8.0.0
        restart: unless-stopped
        depends_on:
          database:
            condition: service_healthy
        environment:
          DB_SERVER_HOST: database
          POSTGRES_USER: zabbix
          POSTGRES_PASSWORD: ${DB_PASSWORD}
          POSTGRES_DB: zabbix
      zabbix-web:
        image: zabbix/zabbix-web-nginx-pgsql:alpine-8.0.0
        restart: unless-stopped
        depends_on:
          - zabbix-server
        ports:
          - "127.0.0.1:8080:8080"
        environment:
          ZBX_SERVER_HOST: zabbix-server
          DB_SERVER_HOST: database
          POSTGRES_USER: zabbix
          POSTGRES_PASSWORD: ${DB_PASSWORD}
          POSTGRES_DB: zabbix
          PHP_TZ: Africa/Casablanca
      zabbix-agent:
        image: zabbix/zabbix-agent2:alpine-8.0.0
        restart: unless-stopped
        environment:
          ZBX_HOSTNAME: "Zabbix server"
          ZBX_SERVER_HOST: zabbix-server
      database:
        image: postgres:17.11-alpine
        restart: unless-stopped
        environment:
          POSTGRES_USER: zabbix
          POSTGRES_PASSWORD: ${DB_PASSWORD}
          POSTGRES_DB: zabbix
        volumes:
          - zabbix-db:/var/lib/postgresql/data
        healthcheck:
          test: ["CMD-SHELL", "pg_isready -U zabbix -d zabbix"]
          interval: 5s
          retries: 12
    volumes:
      zabbix-db: {}
  3. تشغيل الحزمة

    عند التشغيل الأول، ينشئ الخادم مخطط قاعدة البيانات؛ انتظر دقيقة قبل أن تستجيب الواجهة.

    docker compose up -d
    docker compose ps
    curl -fsS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8080/

غيّر كلمة مرور المصنع قبل أي شيء

يفتح تثبيت Zabbix الجديد الحساب Admin بكلمة المرور zabbix المعروفة للجميع. سجّل الدخول فورًا واستبدلها من User settings ثم Profile ثم Change password، حتى قبل وضع الواجهة خلف اسم نطاقها.

وضع Zabbix خلف nginx عبر HTTPS

لا يستمع المنفذ 8080 إلا على 127.0.0.1: يستقبل nginx المثبّت على المضيف الحركة العامة ويمرّرها. ثم يضيف Certbot الشهادة وإعادة التوجيه إلى HTTPS.

server {
    listen 80;
    server_name zabbix.example.com;
    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
certbot --nginx -d zabbix.example.com

ربط المضيف «Zabbix server» بوكيل الخادم الافتراضي

ينشئ Zabbix افتراضيًا مضيفًا باسم «Zabbix server» يستعلم وكيلًا على 127.0.0.1. وفي Docker يعيش الوكيل في حاويته الخاصة: افتح Data collection ثم Hosts، وانقر على «Zabbix server» واستبدل واجهة Agent باسم DNS ‏zabbix-agent، مع ضبط «Connect to» على DNS. وبعد دقيقة يصبح مؤشر ZBX أخضر، وتعرض Latest data المعالج والذاكرة والحمل على الخادم.

مراقبة خوادمك الأخرى

على كل خادم، ثبّت حزمة zabbix-agent2 من توزيعتك أو من مستودع Zabbix الرسمي، ثم صرّح بعنوان IP العام لخادم Zabbix كخادم مسموح به. في الوضع السلبي، يستعلم خادم Zabbix الوكيلَ على المنفذ 10050: افتح هذا المنفذ لهذا العنوان وحده.

# /etc/zabbix/zabbix_agent2.conf
Server=203.0.113.10
Hostname=web-01
systemctl restart zabbix-agent2
ufw allow from 203.0.113.10 to any port 10050 proto tcp

في Data collection ثم Hosts، أنشئ المضيف web-01 بعنوانه والقالب «Linux by Zabbix agent». أما الوضع النشط، الذي يرسل فيه الوكيل بياناته إلى المنفذ 10051 للخادم، فيتطلب فتح هذا المنفذ على خادم Zabbix: احصره في عناوين خوادمك.

تلقي التنبيهات

في Alerts ثم Media types، فعّل واضبط البريد الإلكتروني (خادم SMTP والمرسل) أو Telegram أو Slack، إذ يوفّر Zabbix أنواعًا جاهزة لعشرات الخدمات. ثم أضف الوسيلة إلى مستخدمك من User settings ثم Profile ثم Media، وفعّل الإجراء «Report problems to Zabbix administrators» من Alerts ثم Actions. جرّب ذلك بإيقاف وكيل أحد الخوادم: يجب أن تصلك مشكلة «Zabbix agent is not available».

النسخ الاحتياطي والتحديث

يعيش كل الإعداد والسجل في PostgreSQL، وتكفي نسخة احتياطية يومية عبر pg_dump:

cd /opt/zabbix
docker compose exec -T database pg_dump -U zabbix zabbix | gzip > zabbix-$(date +%F).sql.gz

للتحديث، غيّر رقم إصدار صور Zabbix الثلاث في docker-compose.yml، ثم نفّذ docker compose pull && docker compose up -d: يحدّث الخادم المخطط عند التشغيل. خذ نسخة احتياطية من القاعدة قبل ذلك مباشرة، واقرأ ملاحظات الإصدار قبل الانتقال إلى فرع رئيسي جديد.

التثبيت بنقرة واحدة على ServOrbit

من المتجر في مساحة العميل، يُثبَّت Zabbix على خادم ServOrbit الافتراضي دون كتابة سطر واحد: يُنشر الخادم والواجهة الويب وPostgreSQL ووكيل الخادم، ويكون المضيف «Zabbix server» مرتبطًا بوكيله، وتُستبدل كلمة مرور المصنع بكلمة مولّدة تظهر في مساحة العميل، وتُنشر الواجهة عبر HTTPS على نطاقك أو على النطاق الفرعي المجاني للخادم.

راقب خوادمك من خادمك الافتراضي

يكفي خادم ServOrbit افتراضي بنظام Ubuntu 24.04 وذاكرة 2 غيغابايت لتشغيل Zabbix. تثبيت بنقرة واحدة من المتجر، وHTTPS على نطاقك أو على النطاق الفرعي المجاني للخادم، وكلمة مرور المدير مولّدة لك.