SSD Nodes Learn Hosting plans →
تعلیمی Matt Connorتحریر: Matt Connor · اپ ڈیٹ شدہ 2026-08-07

Ubuntu 24.04 پر Zabbix 7.0 LTS انسٹال کریں

Ubuntu 24.04 پر Zabbix 7.0 LTS مکمل کریں: repository شامل کریں، MySQL schema import کریں، nginx frontend اور agent2 جوڑیں، اور عام setup errors حل کریں۔

آپ کیا بنا رہے ہیں

ایک single Ubuntu 24.04 VPS جس پر مکمل Zabbix 7.0 LTS stack چل رہا ہو: zabbix-server daemon جو polling اور alerts انجام دیتا ہے، MariaDB/MySQL database جو ہر metric محفوظ کرتا ہے، nginx کے ذریعے فراہم کیا جانے والا PHP frontend، اور zabbix-agent2 جو خود اسی box سے metrics جمع کرتا ہے۔ سیٹ اپ مکمل ہونے کے بعد اسے دوسرے server کی طرف point کریں، ایک template attach کریں، اور disk بھرنے یا service بند ہونے کے فوراً بعد email حاصل کریں۔

Zabbix، status-page tool سے زیادہ وسائل استعمال کرتا ہے۔ یہ templates، triggers، escalation اور history retention کے ساتھ ایک حقیقی time-series system ہے۔ زیادہ تر دشواری ان تین مراحل میں ہوتی ہے جنہیں لوگ چھوڑ دیتے ہیں: database schema import کرنا، وہ database password set کرنا جسے server واقعی پڑھتا ہے، اور nginx config میں دو lines کو uncomment کرنا۔ یہ مراحل درست ہوں تو باقی کام wizard کے ذریعے ہو جاتا ہے۔ اگر آپ کو صرف up/down checks اور shareable status page چاہیے تو ہلکا پھلکا Uptime Kuma status monitor یہ کام ایک container میں کر دیتا ہے؛ جب آپ کو بہت سے hosts پر ہر metric کے thresholds اور escalation درکار ہوں تو Zabbix اپنے اضافی وسائل کا جواز فراہم کرتا ہے۔

7.0 LTS line استعمال کریں۔ اس کا server، frontend، agent2 اور schema ایک ساتھ version کیے جاتے ہیں، اور اسے کئی سال تک security fixes ملتی رہتی ہیں۔ ذیل میں repository filename کو copy کرنے سے پہلے official Zabbix download page دیکھ لیں۔ latest release package ہمیشہ جدید ترین 7.0 point release پر resolve ہوتا ہے، لیکن اگر آپ exact 7.0-N build کو pin کرنا چاہتے ہیں تو page پر اس کا filename بھی موجود ہے۔ یہاں موجود باقی تمام commands پوری 7.0 line میں مستحکم ہیں۔

حجم، ports اور prerequisites

ایک تازہ Ubuntu 24.04 KVM VPS فرض کریں جس پر root یا sudo دستیاب ہو۔ وسائل کے بارے میں حقیقت پسند رہیں: ایک ہی سرور پر server، database، nginx اور PHP چلانے کے لیے، جو چند hosts کی monitoring کرے، 2 GB RAM اور دو vCPUs کم از کم عملی ضرورت ہیں۔ 1 GB کا server boot ہو جاتا ہے، لیکن history بڑھنے کے ساتھ database کے لیے memory کم پڑ جاتی ہے۔ چند درجن hosts سے زیادہ کے لیے 4 GB RAM رکھیں، اور 100 hosts سے زیادہ ہونے پر database کو اپنے الگ server پر منتقل کریں۔ Disk کا استعمال اس بات کے ساتھ بڑھتا ہے کہ آپ کتنے items جمع کرتے ہیں اور history کتنے عرصے تک محفوظ رکھتے ہیں۔ ابتدا کے لیے چند gigabytes مختص کریں۔ housekeeper آپ کی مقرر کردہ retention windows کے مطابق پرانا data حذف کرتا رہے گا۔

Ports: frontend کے لیے 80 اور 443 استعمال کریں۔ انہیں public رکھیں یا صرف اپنے IP تک محدود کریں۔ Server، active agents کی جانب سے بھیجے گئے data کے لیے TCP 10051 پر listen کرتا ہے، جبکہ ہر agent، server کی polling کے لیے TCP 10050 پر listen کرتا ہے۔ اگر سامنے firewall موجود ہے تو صرف وہی ports کھولیں جنہیں آپ expose کرتے ہیں۔ Frontend کے لیے DNS A record بنانا مفید ہے، کیونکہ آپ اس پر حقیقی certificate لگانا چاہیں گے۔ Zabbix box آپ کی چلائی ہوئی ہر دوسری service کو monitor کرتا ہے، اس لیے اسے بعد میں شامل کیے گئے جزو کے بجائے 2026 میں چلانے کے قابل وسیع self-hosting stack کا حصہ سمجھیں۔

مرحلہ 1، سرکاری Zabbix 7.0 repository شامل کریں

zabbix-release package صرف ایک کام کرتا ہے: یہ apt source list اور signing key کو آپ کے system میں شامل کرتا ہے۔ اسے install کریں، پھر index کو 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 ہو تو filename تبدیل ہو چکا ہے۔ Zabbix download page کھولیں، Ubuntu 24.04 منتخب کریں، اور وہاں دکھایا گیا درست zabbix-release URL copy کریں۔ صاف apt update میں repo.zabbix.com line دکھائی دیتی ہے اور key warning نہیں ہوتی؛ The following signatures couldn't be verified because the public key is not available کا مطلب ہے کہ release package نے اپنی key install نہیں کی۔ اس لیے dpkg -i دوبارہ چلائیں اور پھر update کریں۔

مرحلہ 2، server، frontend اور agent انسٹال کریں

MySQL کے لیے build کیا گیا server، PHP frontend، nginx config، SQL schema files اور agent2 ایک ہی بار میں انسٹال کریں۔

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

zabbix-server-mysql وہ server ہے جو MySQL/MariaDB کے لیے compile کیا گیا ہے؛ PostgreSQL کے لیے اس کے بجائے zabbix-server-pgsql انسٹال کریں اور نیچے دیے گئے database مراحل میں اسی کے مطابق تبدیلی کریں۔ zabbix-sql-scripts وہ schema فراہم کرتا ہے جسے آپ اگلے مرحلے میں import کریں گے۔ 7.0 میں یہ الگ package ہے، اور اسے بھول جانے کی وجہ سے بعد میں import path missing نظر آتا ہے۔ ان میں سے کوئی بھی database engine انسٹال نہیں کرتا، اس لیے اگر اس server پر پہلے سے database engine موجود نہیں ہے تو ابھی MariaDB انسٹال کریں۔

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

درست character set کے ساتھ database بنائیں

Zabbix collation کے معاملے میں سخت تقاضے رکھتا ہے: database میں utf8mb4 کو utf8mb4_bin کے ساتھ استعمال کیا جانا چاہیے، ورنہ import دورانِ عمل foreign-key errors کے ساتھ رک جاتا ہے۔ sudo mysql کے ذریعے root shell کھولیں اور یہ command چلائیں:

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 schema stored functions بناتا ہے، اور zabbix جیسا non-SUPER account اس وقت یہ functions نہیں بنا سکتا جب binary logging فعال ہو۔ MySQL 8 میں binary logging by default فعال ہوتی ہے، اور کچھ managed MariaDB builds بھی اسے فعال رکھتے ہیں، تاہم stock MariaDB میں ایسا نہیں ہوتا۔ binary logging فعال ہونے والے server پر یہ flag چھوڑ دیں تو import ERROR 1419 (HY000): You do not have the SUPER privilege and binary logging is enabled کے ساتھ رک جاتا ہے۔ اسے root کے طور پر set کرنے سے مسئلہ حل ہو جاتا ہے؛ import مکمل ہونے کے بعد اسے دوبارہ بند کر دیں۔ password بالکل اسی طرح نوٹ کریں، کیونکہ server config میں وہی string byte for byte درکار ہے۔

مرحلہ 4، schema درآمد کریں (یہ وہ مرحلہ ہے جسے لوگ چھوڑ دیتے ہیں)

نئے frontend کے لوڈ نہ ہونے کی سب سے عام وجہ یہی ہے: آپ کا بنایا ہوا database خالی ہے۔ zabbix-sql-scripts میں شامل schema کو اس database میں لوڈ کریں۔

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

یہ zabbix password طلب کرتا ہے، چھوٹے VPS پر تیس سے ساٹھ سیکنڈ میں مکمل ہو جاتا ہے، اور کامیابی پر کچھ بھی پرنٹ نہیں کرتا۔ یہاں خاموشی درست ہے۔ zcat: /usr/share/zabbix-sql-scripts/mysql/server.sql.gz: No such file or directory کا مطلب ہے کہ zabbix-sql-scripts package نصب نہیں ہے (واپس مرحلہ 2 پر جائیں)۔ ERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' کا مطلب ہے کہ مرحلہ 3 میں دیا گیا password یا grant غلط ہے۔ مکمل ہونے کے بعد safety flag دوبارہ بند کریں:

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

لوڈ کی تصدیق sudo mysql -e "SELECT COUNT(*) FROM zabbix.users;" سے کریں۔ ایک number، نہ کہ doesn't exist error، اس بات کی علامت ہے کہ schema شامل ہو چکا ہے۔

مرحلہ 5، zabbix_server.conf میں database password مقرر کریں

سرور اپنے database credentials /etc/zabbix/zabbix_server.conf سے پڑھتا ہے۔ صرف password مقرر کرنا ضروری ہے؛ DBName اور DBUser پہلے ہی zabbix پر default ہیں۔ # DBPassword= والی سطر کا comment ختم کریں اور اسے مقرر کریں:

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

Password لازماً Step 3 میں استعمال کیے گئے password کے عین مطابق، byte-for-byte، ہونا چاہیے۔ خالی یا غلط DBPassword بعد میں نظر آنے والے "Zabbix server is not running" banner کی سب سے عام وجہ ہے: daemon شروع ہوتا ہے، login کرنے میں ناکام رہتا ہے، اور بند ہو جاتا ہے۔ اس کی کوئی اطلاع screen پر ظاہر نہیں ہوتی؛ صرف log میں یہ وجہ ملتی ہے۔

فرنٹ اینڈ کے لیے nginx کو configure کریں

zabbix-nginx-conf package، /etc/zabbix/nginx.conf میں server block انسٹال کرتا ہے اور اسے /etc/nginx/conf.d/zabbix.conf سے nginx میں link کرتا ہے، لیکن listen اور server_name lines کو comment out رکھتا ہے۔ اس لیے جب تک آپ ان میں ترمیم نہ کریں، nginx Zabbix کے لیے کچھ serve نہیں کرے گا:

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

اپنا domain استعمال کریں، یا اگر ابھی DNS موجود نہیں ہے تو server کا public IP استعمال کریں۔ دو اہم نکات ہیں۔ Ubuntu کی default nginx welcome site بھی port 80 پر listen کرتی ہے اور اسے default server کے طور پر نشان زد کیا گیا ہے۔ اس لیے جس request کا name اس سے match نہ ہو، اس کے لیے یہی site منتخب ہوتی ہے۔ اسے remove کریں، ورنہ غلط page load ہوگا: sudo rm -f /etc/nginx/sites-enabled/default۔ اگر /etc/nginx/conf.d/zabbix.conf کسی وجہ سے موجود نہ ہو، جو packaging کا ایک معلوم مسئلہ ہے، تو sudo ln -s /etc/zabbix/nginx.conf /etc/nginx/conf.d/zabbix.conf کے ذریعے link دستی طور پر بنائیں۔ پھر configuration test کریں اور nginx reload کریں:

sudo nginx -t
sudo systemctl reload nginx

nginx -t کو test is successful print کرنا چاہیے۔ اگر اس کے بجائے nginx: [emerg] a duplicate default server for 0.0.0.0:80 print ہو تو default site اور Zabbix block دونوں default_server کا دعویٰ کر رہے ہیں۔ default site کو remove کرکے دوبارہ test کریں۔ زیادہ عام صورت میں test صرف conflicting server name warning کے ساتھ کامیاب ہو جاتا ہے، لیکن browser پھر بھی سادہ welcome page دکھاتا ہے۔ اس کا مطلب ہے کہ unmatched name کی وجہ سے default site منتخب ہو رہی ہے۔ اسے remove کرنے سے مسئلہ حل ہو جاتا ہے۔

مرحلہ 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 service php8.3-fpm ہے؛ zabbix-nginx-conf package اسی master process کے تحت اپنا frontend چلاتا ہے۔ تصدیق کریں کہ سرور شروع ہو گیا ہے اور چلتا رہا:

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

صحت مند log کے آخر میں server started اور اس کے housekeeper، poller اور trapper processes کے چلنے کا اندراج ہوتا ہے۔ اگر [Z3001] connection to database 'zabbix' failed: [1045] Access denied for user 'zabbix'@'localhost' نظر آئے تو Step 5 کا DBPassword مطابقت نہیں رکھتا؛ اسے درست کریں اور restart کریں۔ [Z3005] query failed: [1146] Table 'zabbix.dbversion' doesn't exist لائن کا مطلب ہے کہ آپ نے Step 4 میں schema import چھوڑ دیا، اس لیے سرور کے پاس پڑھنے کے لیے کچھ نہیں ہے۔

مرحلہ 8، ویب سیٹ اپ وزرڈ مکمل کریں

http://your-domain-or-ip پر جائیں۔ Zabbix سیٹ اپ وزرڈ کھل جائے گا۔ اس میں درج ذیل مراحل مکمل کریں:

  1. خوش آمدید، زبان منتخب کریں۔
  2. ضروری شرائط کی جانچ، ہر قطار میں شروع سے ہی OK ظاہر ہونا چاہیے؛ پیکیج میں شامل /etc/zabbix/php-fpm.conf pool پہلے ہی Zabbix کے لیے درکار PHP limits بڑھا دیتا ہے۔
  3. DB connection تشکیل دیں، database type MySQL، host localhost، port 0 (یعنی default port یا socket)، database name zabbix، user zabbix، اور Step 3 میں دیا گیا password درج کریں۔ غلط credentials یا missing schema اسی مرحلے پر ظاہر ہو جاتے ہیں۔
  4. Settings، Zabbix server host localhost اور port 10051 برقرار رکھیں، اور install کا نام درج کریں۔
  5. Pre-installation summary دیکھیں، پھر Install منتخب کریں؛ وزرڈ /etc/zabbix/web/zabbix.conf.php لکھ دے گا۔
  6. Finish، Admin (capital A) کے نام سے login کریں، password zabbix استعمال کریں، اور فوراً Users کے تحت یہ password تبدیل کریں۔

اگر وزرڈ Cannot create the configuration file کی اطلاع دے تو web user /etc/zabbix/web/ میں لکھ نہیں سکتا۔ وزرڈ کی پیش کردہ zabbix.conf.php download کریں، اسے sudo کے ذریعے دستی طور پر وہاں رکھیں، اور Finish پر کلک کریں۔

مرحلہ 9، مقامی host شامل کریں اور template منسلک کریں

Zabbix خودکار طور پر اپنے آپ کو monitor نہیں کرتا۔ Data collection → Hosts → Create host پر جائیں، host name کو zabbix-server مقرر کریں، اسے Linux servers group میں شامل کریں، اور IP 127.0.0.1 اور port 10050 کے ساتھ Agent interface شامل کریں۔ Templates کے تحت Linux by Zabbix agent کو link کریں؛ یہ passive-poll variant ہے، جبکہ Linux by Zabbix agent active میں agent push استعمال ہوتا ہے۔ Save کریں۔

ایک منٹ کے اندر host row میں سبز ZBX label دکھائی دے گا اور metrics Monitoring → Latest data کے تحت موصول ہونا شروع ہو جائیں گے۔ سرخ ZBX label کا مطلب ہے کہ server agent تک نہیں پہنچ سکتا۔ یہ failure mode نیچے بیان کیا گیا ہے، اس step کی غلطی نہیں ہے۔

مرحلہ 10، ایک مفید trigger اور email alert

Linux by Zabbix agent template میں پہلے ہی high CPU، low memory اور full disks کے لیے triggers شامل ہیں، اس لیے اسے link کرتے ہی alerts دستیاب ہو جاتے ہیں۔ یہ دیکھنے کے لیے کہ trigger کیسے بنایا جاتا ہے، اپنا trigger شامل کریں: host کھولیں، Triggers → Create trigger پر جائیں، اسے Root filesystem over 90% full on {HOST.NAME} نام دیں، severity High مقرر کریں، اور یہ expression استعمال کریں:

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

vfs.fs.dependent.size[/,pused] وہ percent-used item ہے جو template کی filesystem discovery root filesystem کے لیے بناتی ہے (7.0 کا Linux template vfs.fs.get ایک بار collect کرتا ہے اور ہر mount کے لیے dependent items اخذ کرتا ہے)، اس لیے trigger کے لیے اضافی data collection درکار نہیں ہوتی۔ اسے save کریں۔

Dashboard پر کوئی action کسی شخص کو notification بھیجنے تک trigger صرف row کا رنگ بدلتا ہے۔ Alerts → Media types → Email کے تحت SMTP server، port، sender address، connection security (عام طور پر STARTTLS) اور relay credentials مقرر کریں، پھر Test استعمال کریں۔ اگر test ناکام ہو تو اس کا مطلب ہے کہ کسی حقیقی alert پر انحصار کرنے سے پہلے SMTP path درست کرنا ضروری ہے۔ Users → Users → Admin → Media → Add کے تحت Admin user کا address شامل کریں اور منتخب کریں کہ کن severities پر notification بھیجی جائے۔ پھر اسے Alerts → Actions → Trigger actions → Create action کے تحت configure کریں: Trigger severity >= Warning جیسی condition شامل کریں، اور Operations کے تحت Admin کو Email کے ذریعے notification بھیجیں۔ اسے save اور enable کریں۔ Chat کو ترجیح دیتے ہیں؟ Zabbix 7.0 میں Slack، Discord اور Telegram کے لیے webhook media types پہلے سے شامل ہیں؛ کسی ایک کو Email کی طرح configure کریں اور اسے کسی user کو assign کریں۔

ایجنٹ کے ذریعے دوسرے سرور کی نگرانی

دوسرے سرور کی نگرانی کے لیے وہاں بھی Zabbix repository شامل کریں۔ Ubuntu 24.04 اپنی طرف سے Zabbix packages فراہم نہیں کرتا، اس لیے صرف 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 میں ترمیم کریں۔ passive polling کے لیے Server کو Zabbix server کے IP پر set کریں۔ active checks کے لیے ServerActive کے ساتھ ایک منفرد Hostname بھی set کریں۔ یہ نام frontend میں بنائے گئے host کے نام سے مطابقت رکھنا چاہیے:

Server=10.0.0.10
ServerActive=10.0.0.10
Hostname=web-01

sudo systemctl enable --now zabbix-agent2 چلائیں اور Zabbix server سے اس machine تک TCP 10050 کھولیں۔ پھر frontend میں ایسا host بنائیں جس کا Agent interface اس machine کے IP کی طرف اشارہ کرے۔ Linux template link کریں۔ یہ ایک منٹ کے اندر report بھیجنا شروع کر دے گا۔

خرابی کی صورتیں، اور ظاہر ہونے والے پیغامات

Frontend پر Error connecting to database یا database error دکھائی دیتا ہے۔ Wizard کے DB مرحلے میں Access denied for user 'zabbix'@'localhost' (using password: YES) کا مطلب ہے کہ password Step 3 سے مطابقت نہیں رکھتا، یا GRANT کبھی نہیں چلایا گیا۔ اگر database سے connection قائم ہو جائے لیکن frontend The frontend does not match Zabbix database یا Table 'zabbix.users' doesn't exist دکھائے، تو Step 4 میں schema import چھوڑ دیا گیا یا ناکام ہو گیا ہے۔ اسے نئی بنائی گئی database میں دوبارہ چلائیں۔

Orange banner: Zabbix server is not running: the information displayed may not be current۔ Frontend چل رہا ہے، لیکن live server تک نہیں پہنچ سکتا۔ اس کی 3 وجوہات ہیں، اور ذیل میں زیادہ ممکنہ وجہ پہلے دی گئی ہے۔ Service بند ہے؛ systemctl status zabbix-server دیکھیں اور اسے start کریں۔ Service چل رہی ہے، لیکن اپنی database تک نہیں پہنچ سکتی؛ log میں [Z3001] connection to database 'zabbix' failed: [1045] Access denied دکھائی دیتا ہے، جس کا مطلب غلط یا خالی DBPassword ہے۔ یا frontend غلط server کی طرف اشارہ کر رہا ہے؛ یہ host localhost اور port 10051 کے طور پر /etc/zabbix/web/zabbix.conf.php میں محفوظ ہے۔ Ubuntu میں default طور پر SELinux موجود نہیں ہوتا، اس لیے RHEL guides میں بیان کردہ SELinux-socket وجہ یہاں لاگو نہیں ہوتی۔ یہاں تقریباً ہمیشہ مسئلہ database password یا بند service ہوتا ہے۔

Host پر سرخ ZBX label دکھائی دیتا ہے؛ item error Get value from agent failed: cannot connect to [[127.0.0.1]:10050]: [111] Connection refused۔ Agent چل نہیں رہا یا listen نہیں کر رہا۔ systemctl status zabbix-agent2 دیکھیں اور ListenPort=10050 کی تصدیق کریں۔ "connection refused" کے بجائے timeout کا مطلب ہے کہ firewall port 10050 کو drop کر رہا ہے۔ متعلقہ Received empty response from Zabbix Agent. Assuming that agent dropped connection because of access permissions. کا مطلب ہے کہ agent تک رسائی ممکن ہے، لیکن اس کی Server= line میں Zabbix server کا IP درج نہیں ہے۔ اسے شامل کریں اور agent کو restart کریں۔

سادہ nginx welcome page یا 502 Bad Gateway۔ Welcome page کا مطلب ہے کہ default site ابھی enabled ہے یا Zabbix block linked نہیں ہے۔ /etc/nginx/sites-enabled/default کو remove کریں اور تصدیق کریں کہ /etc/nginx/conf.d/zabbix.conf موجود ہے، جیسا کہ Step 6 میں ہے۔ 502 کا مطلب ہے کہ nginx، PHP تک پہنچ گیا، لیکن PHP-FPM بند ہے یا کسی دوسرے socket پر listen کر رہا ہے۔ php8.3-fpm کو start کریں اور تصدیق کریں کہ Zabbix block میں موجود fastcgi_pass socket چلنے والے pool سے مطابقت رکھتا ہے۔

بیک اپ، اپ گریڈ اور TLS

Database مکمل تاریخ محفوظ رکھتا ہے، اس لیے مقررہ schedule کے مطابق mysqldump سے اس کا بیک اپ لیں اور dump کو اس سرور سے باہر محفوظ رکھیں:

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

/etc/zabbix کی config files چھوٹی ہیں اور انہیں بھی محفوظ کرنا مفید ہے، لیکن انہیں دوبارہ بنایا جا سکتا ہے؛ data دوبارہ نہیں بنایا جا سکتا۔ بحالی اس عمل کے الٹ ہوتی ہے: database بنائیں، dump import کریں، اور config میں اس database کی طرف اشارہ کریں۔

7.0 لائن کے اندر اپ گریڈ معمول کے apt update && apt upgrade runs ہوتے ہیں؛ server اگلی بار start ہونے پر schema migrations خود لاگو کرتا ہے، اس لیے packages اپ گریڈ کریں اور zabbix-server restart کریں۔ مستقبل کی major line پر منتقل ہونا ایک سوچا سمجھا اقدام ہے۔ اس کے upgrade notes پڑھیں، پہلے database کا dump لیں، اور one-way schema change کے لیے تیار رہیں۔ یہی one-way تبدیلی اس وجہ سے ہے کہ آپ LTS line کو pin کرتے ہیں اور اسی پر قائم رہتے ہیں۔

Frontend کو plain HTTP پر نہ چھوڑیں۔ DNS کے اس server کی طرف اشارہ کرنے کے بعد Ubuntu 24.04 پر nginx کے لیے Certbot اور Let's Encrypt کے ذریعے certificate لگائیں۔ اس سے server block کو 443 پر listen کرنے اور 80 سے redirect کرنے کے لیے rewrite کیا جاتا ہے۔ اس server کو harden کرتے وقت، جو آپ کے چلائے ہوئے ہر دوسرے server کی نگرانی کے لیے login کرتا ہے، brute-force SSH کوششوں کو fail2ban کے ذریعے روکنا استعمال کرکے اس کا SSH بھی محفوظ کریں۔ Monitoring login کو cleartext میں منتقل نہیں ہونا چاہیے، اور اس کا front door password guess کرنے والوں کے لیے کھلا نہیں رہنا چاہیے۔

FAQ

کیا مجھے Zabbix agent درکار ہے، یا میں اس کے بغیر بھی monitoring کر سکتا ہوں؟

دونوں طریقے کارآمد ہیں۔ agent (agent2) ہر host کے لیے تفصیلی metrics فراہم کرتا ہے، جن میں CPU، memory، disks، processes، services اور log files شامل ہیں، اور جن servers کو آپ manage کرتے ہیں ان کے لیے یہی معمول کا انتخاب ہے۔ Agentless monitoring ان devices کے لیے ہے جن پر آپ software install نہیں کر سکتے: switches اور printers کے لیے SNMP، reachability کے لیے ICMP ping، endpoints کے لیے HTTP checks، اور hardware health کے لیے IPMI۔ زیادہ تر حقیقی deployments میں دونوں طریقے ساتھ استعمال ہوتے ہیں۔

frontend یہ کیوں بتاتا ہے کہ Zabbix server نہیں چل رہا؟

frontend کام کر رہا ہوتا ہے، لیکن اسے چلتے ہوئے zabbix-server process تک رسائی نہیں ملتی۔ عموماً server start ہوتا ہے، پھر zabbix_server.conf میں موجود DBPassword کے غلط یا خالی ہونے کی وجہ سے login نہیں کر پاتا، اور فوراً بند ہو جاتا ہے۔ systemctl status zabbix-server چلائیں اور /var/log/zabbix/zabbix_server.log پڑھیں؛ [Z3001] connection to database ... failed لائن اس کی تصدیق کرتی ہے۔ password درست کریں اور server restart کریں۔ banner ایک منٹ کے اندر ختم ہو جائے گا۔

کیا MySQL ہی استعمال کرنا ضروری ہے، یا PostgreSQL بھی استعمال کر سکتا ہوں؟

دونوں مکمل طور پر supported ہیں: اس guide کی طرح MariaDB یا MySQL کے ساتھ zabbix-server-mysql، یا PostgreSQL کے ساتھ zabbix-server-pgsql۔ چھوٹی installations میں انتخاب سے تقریباً کوئی فرق نہیں پڑتا۔ بڑی installations میں PostgreSQL، TimescaleDB extension کے ساتھ history tables کو partition کرتا ہے اور housekeeping کی لاگت بہت کم کر دیتا ہے۔ اسی لیے بڑے sites عموماً اسے ترجیح دیتے ہیں۔ ایک database منتخب کریں اور اسی پر قائم رہیں۔ بعد میں migration کے لیے مکمل export اور re-import درکار ہوتا ہے، صرف configuration switch کافی نہیں ہوتا۔

Zabbix all-in-one server کے لیے کتنی RAM درکار ہے؟

ایک ایسے server کے لیے جو چند hosts کو monitor کرتا ہو، 2 GB ایک حقیقت پسندانہ کم از کم مقدار ہے، جبکہ چند درجن hosts سے آگے 4 GB بہتر رہتی ہے۔ memory کا زیادہ حصہ database cache اور server کے pollers استعمال کرتے ہیں۔ 1 GB VPS چل تو جاتا ہے، لیکن history بڑھنے کے ساتھ database کے لیے memory ناکافی ہو جاتی ہے۔ 100 hosts سے زیادہ ہونے پر database کو اپنے الگ server پر منتقل کریں اور اس کے buffer pool کو tune کریں، بجائے اس کے کہ ایک ہی machine میں مزید RAM شامل کرتے جائیں۔

کیا چند servers کے لیے Zabbix ضرورت سے زیادہ پیچیدہ ہے؟

ایسا ہو سکتا ہے۔ اگر آپ کو صرف یہ معلوم کرنا ہو کہ service up ہے یا نہیں، اور ایک ایسا page چاہیے جسے share کیا جا سکے، تو uptime اور status monitoring کے لیے Uptime Kuma جیسا ہلکا tool جلد deploy ہو جاتا ہے اور ایک نظر میں سمجھنا آسان ہوتا ہے۔ Zabbix اس وقت منتخب کریں جب آپ کو ہر metric کے لیے thresholds، historical graphs، templated hosts اور escalation rules درکار ہوں۔ یہ وہ خصوصیات ہیں جو ایک سادہ pinger پورے fleet میں فراہم نہیں کر سکتا۔