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 इंस्टॉल करने की पूरी गाइड। इसमें रिपॉजिटरी सेटअप, MariaDB स्कीमा इम्पोर्ट, nginx कॉन्फ़िगरेशन और agent2 सेटअप के चरण शामिल हैं ताकि कोई एरर न आए।

आप क्या बना रहे हैं

एक सिंगल Ubuntu 24.04 VPS जिस पर पूरा Zabbix 7.0 LTS स्टैक चल रहा है: zabbix-server डेमन जो पोलिंग और अलर्टिंग करता है, एक MariaDB/MySQL डेटाबेस जो हर मेट्रिक को स्टोर करता है, nginx द्वारा सर्व किया जाने वाला एक PHP फ्रंटएंड, और zabbix-agent2 जो स्वयं बॉक्स से मेट्रिक्स एकत्र करता है। एक बार जब यह चालू हो जाता है, तो आप इसे दूसरे सर्वर की ओर पॉइंट करते हैं, एक टेम्पलेट अटैच करते हैं, और डिस्क भर जाने या सर्विस बंद होने पर तुरंत ईमेल प्राप्त करते हैं।

Zabbix एक स्टेटस-पेज टूल की तुलना में अधिक भारी है: यह टेम्पलेट्स, ट्रिगर्स, एस्केलेशन और हिस्ट्री रिटेंशन के साथ एक वास्तविक टाइम-सीरीज सिस्टम है। अधिकांश कठिनाइयाँ उन तीन चरणों में होती हैं जिन्हें लोग छोड़ देते हैं: डेटाबेस स्कीमा को इम्पोर्ट करना, डेटाबेस पासवर्ड सेट करना जिसे सर्वर वास्तव में पढ़ता है, और nginx कॉन्फ़िगरेशन में दो लाइनों को अनकमेंट करना। यदि आप इन्हें सही कर लेते हैं, तो बाकी काम बहुत आसान है। यदि आप केवल अप/डाउन चेक और एक शेयर करने योग्य स्टेटस पेज चाहते हैं, तो एक हल्का Uptime Kuma स्टेटस मॉनिटर इसे एक कंटेनर में कर देता है; Zabbix तब उपयोगी होता है जब आप कई होस्ट्स पर प्रति-मेट्रिक थ्रेशोल्ड और एस्केलेशन चाहते हैं।

7.0 LTS लाइन का उपयोग करें: इसका सर्वर, फ्रंटएंड, agent2 और स्कीमा एक साथ वर्शन्ड हैं, और इसे वर्षों तक सुरक्षा फिक्स मिलते रहेंगे। नीचे दिए गए रिपॉजिटरी फ़ाइल नाम को कॉपी करने से पहले, आधिकारिक Zabbix डाउनलोड पेज पर एक नज़र डालें, latest रिलीज़ पैकेज हमेशा नवीनतम 7.0 पॉइंट रिलीज़ पर रिज़ॉल्व होता है, लेकिन यदि आप किसी सटीक 7.0-N बिल्ड को पिन करना चाहते हैं, तो पेज पर वह फ़ाइल नाम भी सूचीबद्ध है। यहाँ बाकी सभी कमांड्स पूरी 7.0 लाइन में स्थिर हैं।

Sizing, ports and prerequisites

मान लें कि आपके पास root या sudo एक्सेस के साथ एक नया Ubuntu 24.04 KVM VPS है। संसाधनों के बारे में यथार्थवादी रहें: एक ही सर्वर पर server, database, nginx और PHP चलाने के लिए 2 GB RAM और दो vCPUs न्यूनतम आवश्यकता है, यदि आप कुछ hosts की निगरानी कर रहे हैं। 1 GB वाला बॉक्स बूट तो हो जाएगा, लेकिन जैसे-जैसे history बढ़ेगी, database के लिए संसाधनों की कमी हो जाएगी; कुछ दर्जन hosts से अधिक के लिए 4 GB की योजना बनाएं, और सौ से अधिक hosts होने पर database को अलग सर्वर पर स्थानांतरित कर दें। डिस्क का उपयोग इस पर निर्भर करता है कि आप कितने items collect करते हैं और history को कितने समय तक रखते हैं; शुरुआत के लिए कुछ gigabytes का बजट रखें, और housekeeper आपके द्वारा सेट की गई retention windows के आधार पर पुराने डेटा को हटाता रहेगा।

Ports: frontend के लिए 80 और 443, जिन्हें public रखें या केवल अपने IP तक सीमित करें। सर्वर active agents से डेटा प्राप्त करने के लिए TCP 10051 पर listen करता है, और प्रत्येक agent सर्वर द्वारा polling के लिए TCP 10050 पर listen करता है। यदि सामने कोई firewall है, तो केवल उन्हीं ports को खोलें जिन्हें आप expose करना चाहते हैं। frontend के लिए एक DNS A record होना उपयोगी है, क्योंकि आप उस पर एक वास्तविक certificate चाहेंगे। एक Zabbix बॉक्स आपके द्वारा चलाए जा रहे अन्य सभी services की निगरानी करता है, इसलिए इसे बाद में जोड़ने के बजाय 2026 में चलाने योग्य व्यापक self-hosting stack का हिस्सा बनाना बेहतर है।

चरण 1, आधिकारिक Zabbix 7.0 रिपॉजिटरी जोड़ें

zabbix-release पैकेज केवल एक काम करता है: यह apt सोर्स लिस्ट और साइनिंग की (signing key) को आपके सिस्टम पर डाल देता है। इसे इंस्टॉल करें, फिर इंडेक्स को रिफ्रेश करें।

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 URL को कॉपी करें। एक सफल apt update में repo.zabbix.com लाइन दिखनी चाहिए और कोई की-वार्निंग (key warning) नहीं होनी चाहिए; The following signatures couldn't be verified because the public key is not available का मतलब है कि रिलीज़ पैकेज ने अपनी की (key) इंस्टॉल नहीं की है, इसलिए 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-agent2

zabbix-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, सही character set के साथ डेटाबेस बनाएँ

Zabbix collation को लेकर बहुत सख्त है: डेटाबेस का utf8mb4 होना और utf8mb4_bin पर सेट होना अनिवार्य है, अन्यथा foreign-key errors के कारण import प्रक्रिया बीच में ही रुक जाएगी। sudo mysql के साथ एक root shell खोलें और निम्नलिखित चलाएँ:

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 उन्हें तब नहीं बना सकता जब binary logging चालू हो। MySQL 8 डिफ़ॉल्ट रूप से binary logging सक्षम रखता है, और कुछ managed MariaDB builds भी ऐसा ही करते हैं (stock MariaDB में यह नहीं होता)। यदि सर्वर पर binary logging सक्षम है और आप इस flag को छोड़ देते हैं, तो import ERROR 1419 (HY000): You do not have the SUPER privilege and binary logging is enabled error के साथ रुक जाएगा। इसे root के रूप में सेट करने से यह समस्या हल हो जाती है; import के बाद आप इसे वापस बंद कर सकते हैं। पासवर्ड को ठीक वैसे ही नोट करें, सर्वर कॉन्फ़िगरेशन में बिल्कुल वही स्ट्रिंग byte-for-byte आवश्यक है।

चरण 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 server is not running" बैनर का मुख्य कारण है जो आपको बाद में दिखाई देता है: डेमन (daemon) शुरू होता है, लॉग इन करने में विफल रहता है, और बंद हो जाता है। स्क्रीन पर इसके बारे में कुछ नहीं दिखता, केवल लॉग में ही यह जानकारी मिलती है।

चरण 6, Nginx को frontend की ओर निर्देशित करें

zabbix-nginx-conf पैकेज /etc/zabbix/nginx.conf पर एक server block इंस्टॉल करता है और इसे /etc/nginx/conf.d/zabbix.conf से Nginx में लिंक करता है, लेकिन यह listen और server_name लाइनों को comment आउट करके आता है। इसलिए, जब तक आप इन्हें edit नहीं करते, Nginx Zabbix के लिए कुछ भी serve नहीं करेगा:

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

अपने domain का उपयोग करें, या यदि आपके पास अभी तक DNS नहीं है तो सर्वर के public IP का उपयोग करें। यहाँ दो सावधानियां बरतें। Ubuntu की default Nginx welcome site भी port 80 पर listen करती है और इसे default server के रूप में चिह्नित किया गया है। इसलिए, यह किसी भी ऐसे request के लिए प्रभावी हो जाती है जिसका नाम इससे मेल नहीं खाता है। इसे हटा दें अन्यथा गलत पेज लोड होगा: 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 के साथ मैन्युअल रूप से लिंक बनाएँ। फिर test करें और 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 प्रिंट करता है, तो default site और Zabbix block दोनों default_server का दावा कर रहे हैं; default site को हटा दें और पुनः test करें। अक्सर test केवल conflicting server name चेतावनी के साथ पास हो जाता है, फिर भी browser सादा welcome page दिखाता है: ऐसा इसलिए होता है क्योंकि default site बिना मेल खाने वाले नाम पर प्रभावी हो जाती है, और इसे हटाने से समस्या ठीक हो जाती है।

Step 7, services को start और enable करना

Server, agent, PHP-FPM और nginx को start करें और उन्हें 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 service php8.3-fpm है; zabbix-nginx-conf package अपना frontend उसी master के अंतर्गत चलाता है। पुष्टि करें कि server start हो गया है और चल रहा है:

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

एक healthy log का अंत server के start होने और उसके 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 छोड़ दिया था, इसलिए server के पास पढ़ने के लिए कुछ नहीं है।

चरण 8, वेब सेटअप विज़ार्ड पूरा करें

http://your-domain-or-ip पर ब्राउज़ करें। Zabbix सेटअप विज़ार्ड खुल जाएगा। इसे पूरा करने के लिए निम्नलिखित चरणों का पालन करें:

  1. Welcome, एक भाषा चुनें।
  2. Check of pre-requisites, हर पंक्ति में OK लिखा होना चाहिए; पैकेज्ड /etc/zabbix/php-fpm.conf पूल पहले से ही उन PHP सीमाओं को पूरा करता है जिनकी Zabbix को आवश्यकता है।
  3. Configure DB connection, डेटाबेस प्रकार MySQL, होस्ट localhost, पोर्ट 0 (जिसका अर्थ है डिफ़ॉल्ट पोर्ट या सॉकेट), डेटाबेस नाम zabbix, उपयोगकर्ता zabbix, और चरण 3 का पासवर्ड दर्ज करें। गलत क्रेडेंशियल या गायब स्कीमा यहीं दिखाई देंगे।
  4. Settings, Zabbix सर्वर होस्ट localhost, पोर्ट 10051 को वैसे ही रहने दें, और इंस्टॉलेशन को एक नाम दें।
  5. Pre-installation summary, फिर Install पर क्लिक करें, विज़ार्ड /etc/zabbix/web/zabbix.conf.php लिख देगा।
  6. Finish, 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 ग्रुप में जोड़ें, और 127.0.0.1 IP तथा 10050 पोर्ट के साथ एक Agent इंटरफेस जोड़ें। Templates के अंतर्गत, Linux by Zabbix agent को लिंक करें (यह passive-poll वैरिएंट है; Linux by Zabbix agent active में एजेंट डेटा पुश करता है)। सेव करें।

एक मिनट के भीतर होस्ट रो में एक हरा 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])>90

vfs.fs.dependent.size[/,pused] वह प्रतिशत-उपयोग वाला आइटम है जिसे टेम्पलेट का फाइलसिस्टम डिस्कवरी, रूट फाइलसिस्टम के लिए बनाता है (7.0 का Linux टेम्पलेट vfs.fs.get को एक बार कलेक्ट करता है और प्रति-माउंट आश्रित आइटम प्राप्त करता है), इसलिए ट्रिगर बिना किसी अतिरिक्त डेटा कलेक्शन के फायर हो जाता है। इसे सेव करें।

एक ट्रिगर डैशबोर्ड पर केवल एक पंक्ति का रंग बदलता है, जब तक कि कोई action किसी को सूचित न करे। Alerts → Media types → Email के अंतर्गत, SMTP सर्वर, पोर्ट, प्रेषक का पता, कनेक्शन सुरक्षा (आमतौर पर STARTTLS) और कोई भी रिले क्रेडेंशियल सेट करें, फिर Test का उपयोग करें। यदि वहां विफलता (failure) मिलती है, तो इसका मतलब है कि वास्तविक अलर्ट के निर्भर होने से पहले ही SMTP पथ गलत है। Users → Users → Admin → Media → Add के अंतर्गत Admin यूजर को एक ईमेल पता दें और चुनें कि किन गंभीरता स्तरों पर सूचित करना है। फिर इसे Alerts → Actions → Trigger actions → Create action के अंतर्गत वायर करें: Trigger severity >= Warning जैसी शर्त जोड़ें, और Operations के अंतर्गत Email के माध्यम से Admin को भेजें। इसे सेव और इनेबल करें। क्या आप चैट पसंद करते हैं? Zabbix 7.0 में Slack, Discord और Telegram के लिए वेबहुक मीडिया टाइप आते हैं, किसी एक को बिल्कुल Email की तरह कॉन्फ़िगर करें और उसे किसी यूजर को असाइन करें।

एजेंट के साथ दूसरे सर्वर की निगरानी करना

किसी अन्य सर्वर की निगरानी करने के लिए, वहाँ भी Zabbix repository जोड़ें। Ubuntu 24.04 में Zabbix के अपने packages नहीं होते हैं, इसलिए केवल agent install करें:

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 को edit करें, Server को Zabbix server के IP पर सेट करें (passive polling के लिए) और active checks के लिए ServerActive के साथ एक unique Hostname सेट करें जो frontend में आपके द्वारा बनाए गए host से मेल खाता हो:

Server=10.0.0.10
ServerActive=10.0.0.10
Hostname=web-01

sudo systemctl enable --now zabbix-agent2 चलाएं और Zabbix server से इस मशीन के लिए TCP 10050 port खोलें। Frontend में वापस जाकर, एक ऐसा host बनाएं जिसका Agent interface उस मशीन के IP की ओर इशारा करता हो, Linux template को link करें, और यह एक मिनट के भीतर रिपोर्ट करने लगेगा।

विफलता के प्रकार और दिखाई देने वाले स्ट्रिंग्स

Frontend में Error connecting to database या डेटाबेस त्रुटि दिखाई देती है। विज़ार्ड के DB चरण में, 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 रिपोर्ट करता है, तो चरण 4 में स्कीमा आयात छोड़ दिया गया था या विफल हो गया था; इसे एक नए बनाए गए डेटाबेस में फिर से चलाएं।

नारंगी बैनर: Zabbix server is not running: the information displayed may not be current Frontend चालू है लेकिन लाइव सर्वर तक नहीं पहुँच पा रहा है। इसके तीन कारण हो सकते हैं, सबसे संभावित कारण पहले दिए गए हैं। सेवा बंद है, systemctl status zabbix-server की जाँच करें और इसे शुरू करें। सेवा चल रही है लेकिन अपने डेटाबेस तक नहीं पहुँच पा रही है, लॉग में [Z3001] connection to database 'zabbix' failed: [1045] Access denied दिखाई देता है, जिसका अर्थ है गलत या खाली DBPassword। या फिर frontend गलत सर्वर की ओर इशारा कर रहा है, जो /etc/zabbix/web/zabbix.conf.php में host localhost और port 10051 के रूप में संग्रहीत है। Ubuntu पर डिफ़ॉल्ट रूप से SELinux नहीं होता है, इसलिए RHEL गाइड में बताए गए SELinux-socket का कारण यहाँ लागू नहीं होता; यहाँ समस्या लगभग हमेशा डेटाबेस पासवर्ड या बंद पड़ी सेवा की होती है।

Host पर लाल ZBX लेबल; आइटम त्रुटि Get value from agent failed: cannot connect to [[127.0.0.1]:10050]: [111] Connection refused एजेंट चल नहीं रहा है या सुन (listen) नहीं रहा है। systemctl status zabbix-agent2 की जाँच करें और ListenPort=10050 की पुष्टि करें। "connection refused" के बजाय टाइमआउट का अर्थ है कि फ़ायरवॉल port 10050 को ब्लॉक कर रहा है। संबंधित Received empty response from Zabbix Agent. Assuming that agent dropped connection because of access permissions. का अर्थ है कि एजेंट तक पहुँचा जा सकता है लेकिन उसकी Server= लाइन में 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 को शुरू करें और जाँचें कि Zabbix ब्लॉक में fastcgi_pass सॉकेट चल रहे पूल से मेल खाता है।

बैकअप, अपग्रेड और TLS

डेटाबेस ही पूरा इतिहास है, इसलिए mysqldump का उपयोग करके इसे एक निश्चित समय-सारणी पर बैकअप लें और डंप को सर्वर से बाहर कहीं सुरक्षित रखें:

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

/etc/zabbix कॉन्फ़िगरेशन फाइलें छोटी होती हैं और उन्हें सहेजना भी उचित है, लेकिन उन्हें दोबारा बनाया जा सकता है; डेटा को नहीं। रिस्टोर करने की प्रक्रिया इसके विपरीत है: डेटाबेस बनाएँ, डंप इम्पोर्ट करें और कॉन्फ़िगरेशन को उसकी ओर निर्देशित करें।

7.0 लाइन के भीतर अपग्रेड सामान्य apt update && apt upgrade रन होते हैं; सर्वर अगली बार स्टार्ट होने पर कोई भी स्कीमा माइग्रेशन लागू कर देता है, इसलिए पैकेज अपग्रेड करें और zabbix-server को रीस्टार्ट करें। भविष्य की कोई मेजर लाइन एक सोची-समझी प्रक्रिया है, इसके अपग्रेड नोट्स पढ़ें, पहले डेटाबेस का डंप लें और एक तरफा (one-way) स्कीमा परिवर्तन की अपेक्षा रखें। यही एक तरफा बदलाव मुख्य कारण है कि आपको LTS लाइन पर पिन रहना चाहिए और उसी पर बने रहना चाहिए।

फ्रंटएंड को सादे HTTP पर न छोड़ें। एक बार जब DNS सर्वर की ओर निर्देशित हो जाए, तो Ubuntu 24.04 पर nginx के लिए Certbot और Let's Encrypt का उपयोग करके उस पर एक सर्टिफिकेट लगाएँ, जो सर्वर ब्लॉक को 443 पर सुनने और 80 को रीडायरेक्ट करने के लिए फिर से लिखता है। जब आप एक ऐसे सर्वर को सुरक्षित (harden) कर रहे हों जो आपके द्वारा चलाए जा रहे अन्य सभी सर्वरों की निगरानी करता है, तो fail2ban के साथ SSH ब्रूट-फोर्स प्रयासों को रोकना का उपयोग करके इसके SSH को भी लॉक कर दें। मॉनिटरिंग लॉगिन को कभी भी क्लियरटेक्स्ट में नहीं जाना चाहिए, और इसका मुख्य द्वार पासवर्ड का अनुमान लगाने वालों के लिए खुला नहीं रहना चाहिए।

FAQ

क्या मुझे Zabbix agent की आवश्यकता है, या मैं इसके बिना monitor कर सकता हूँ?

दोनों तरीके काम करते हैं। Agent (agent2) हर host के विस्तृत metrics देता है, जैसे CPU, memory, disks, processes, services, log files, और जिन servers को आप control करते हैं उनके लिए यह सामान्य विकल्प है। Agentless monitoring उन devices को cover करती है जहाँ आप software install नहीं कर सकते: switches और printers के लिए SNMP, reachability के लिए ICMP ping, endpoints के लिए HTTP checks, और hardware health के लिए IPMI। अधिकांश वास्तविक deployments में दोनों का मिश्रण इस्तेमाल होता है।

Frontend यह क्यों कहता है कि Zabbix server नहीं चल रहा है?

Frontend काम करता है लेकिन एक live zabbix-server process तक नहीं पहुँच पा रहा है। आमतौर पर server start तो होता है, लेकिन login करने में विफल रहता है क्योंकि zabbix_server.conf में DBPassword गलत या खाली है, और यह तुरंत बंद हो जाता है। systemctl status zabbix-server चलाएं और /var/log/zabbix/zabbix_server.log पढ़ें; एक [Z3001] connection to database ... failed लाइन इसकी पुष्टि करती है। Password ठीक करें और restart करें, banner एक मिनट के भीतर हट जाएगा।

क्या मुझे MySQL का ही उपयोग करना होगा, या मैं PostgreSQL का उपयोग कर सकता हूँ?

दोनों पूरी तरह समर्थित हैं: इस guide की तरह MariaDB या MySQL के साथ zabbix-server-mysql, या PostgreSQL के साथ zabbix-server-pgsql। छोटे installs के लिए चुनाव का कोई खास फर्क नहीं पड़ता। बड़े installs के लिए, TimescaleDB extension के साथ PostgreSQL history tables को partition करता है और housekeeping को काफी सस्ता बनाता है, यही कारण है कि बड़ी sites इसकी ओर झुकती हैं। एक चुनें और उसी के साथ रहें, बाद में migrate करने का मतलब है पूरा export और re-import, न कि केवल एक config switch।

एक all-in-one Zabbix server को कितनी RAM चाहिए?

कुछ hosts को monitor करने वाले एक box के लिए, 2 GB एक यथार्थवादी न्यूनतम सीमा है और कुछ दर्जन hosts से ऊपर के लिए 4 GB आरामदायक है; memory मुख्य रूप से database cache और server के pollers में जाती है। 1 GB का VPS चल तो जाता है लेकिन जैसे-जैसे history बढ़ती है, database को memory की कमी होने लगती है। सौ hosts से ऊपर जाने पर, database को अपने अलग server पर ले जाएं और एक ही machine में और RAM डालने के बजाय उसके buffer pool को tune करें।

क्या कुछ servers के लिए Zabbix का उपयोग करना बहुत जटिल है?

यह हो सकता है। यदि आपको केवल यह जानना है कि "क्या यह up है?" और एक ऐसा page चाहिए जिसे आप share कर सकें, तो uptime और status monitoring के लिए Uptime Kuma जैसा हल्का tool जल्दी set up हो जाता है और एक नज़र में पढ़ना आसान होता है। Zabbix तब चुनें जब आपको per-metric thresholds, historical graphs, templated hosts और escalation rules चाहिए हों, जो एक साधारण pinger आपको पूरे fleet के लिए नहीं दे सकता।