Ubuntu 24.04 पर Zabbix 7.0 LTS कैसे इंस्टॉल करें
Ubuntu 24.04 पर Zabbix 7.0 LTS इंस्टॉल करने की पूरी गाइड। इसमें रिपॉजिटरी सेटअप, MariaDB स्कीमा इम्पोर्ट, nginx कॉन्फ़िगरेशन और zabbix-agent2 सेटअप के स्टेप्स शामिल हैं।
आप क्या बना रहे हैं
एक सिंगल Ubuntu 24.04 VPS जिस पर पूरा Zabbix 7.0 LTS स्टैक चल रहा है: zabbix-server डेमन जो metrics को पोल (poll) करता है और अलर्ट भेजता है, एक MariaDB/MySQL डेटाबेस जो हर metric को स्टोर करता है, nginx द्वारा सर्व किया जाने वाला एक PHP फ्रंटएंड, और zabbix-agent2 जो खुद सर्वर से metrics कलेक्ट करता है। एक बार सेटअप हो जाने पर, आप इसे दूसरे सर्वर से जोड़ते हैं, एक टेम्पलेट अटैच करते हैं, और डिस्क भरते ही या सर्विस बंद होते ही आपको ईमेल मिल जाता है।
Zabbix एक साधारण स्टेटस-पेज टूल से कहीं अधिक शक्तिशाली है: यह टेम्पलेट्स, ट्रिगर्स, एस्केलेशन और हिस्ट्री रिटेंशन के साथ एक वास्तविक टाइम-सीरीज सिस्टम है। अधिकांश कठिनाइयाँ उन तीन चरणों में आती हैं जिन्हें लोग छोड़ देते हैं: डेटाबेस स्कीमा इम्पोर्ट करना, डेटाबेस का वह पासवर्ड सेट करना जिसे सर्वर वास्तव में पढ़ता है, और nginx कॉन्फ़िगरेशन में दो लाइनों से कमेंट हटाना। यदि आप इन्हें सही कर लेते हैं, तो बाकी काम बहुत आसान है। यदि आप केवल up/down चेक और एक शेयर करने योग्य स्टेटस पेज चाहते हैं, तो एक हल्का Uptime Kuma स्टेटस मॉनिटर एक कंटेनर में यह काम कर देता है; Zabbix तब उपयोगी होता है जब आपको कई होस्ट्स पर प्रति-metric थ्रेशोल्ड और एस्केलेशन की आवश्यकता होती है।
7.0 LTS लाइन का उपयोग करें: इसका सर्वर, फ्रंटएंड, agent2 और स्कीमा एक साथ वर्ज़न किए गए हैं, और इसे वर्षों तक सुरक्षा अपडेट मिलते रहेंगे। नीचे दिए गए रिपॉजिटरी फाइलनाम को कॉपी करने से पहले, आधिकारिक Zabbix डाउनलोड पेज पर एक नज़र डालें। latest रिलीज़ पैकेज केवल 7.0 रिपॉजिटरी को कॉन्फ़िगर करता है, यह किसी पॉइंट रिलीज़ को नहीं चुनता है: apt फिर उन सभी 7.0.x पैकेजों को इंस्टॉल करता है जो रिपॉजिटरी में उपलब्ध होते हैं, जिससे आप हमेशा नवीनतम वर्ज़न पर रहते हैं। पेज पर क्रमांकित 7.0-N रिलीज़ पैकेज भी हो सकते हैं, लेकिन वह नंबर रिपॉजिटरी सेटअप का वर्ज़न है, न कि Zabbix बिल्ड का। यहाँ दी गई अन्य सभी कमांड्स पूरी 7.0 लाइन में स्थिर हैं।
Sizing, ports and prerequisites
Ubuntu 24.04 पर आधारित एक नया KVM VPS लें जिसमें root या sudo access हो। संसाधनों के बारे में यथार्थवादी रहें: एक ही सर्वर पर server, database, nginx और PHP चलाने के लिए 2 GB RAM और दो vCPUs न्यूनतम आवश्यकता है। 1 GB का box boot तो हो जाएगा, लेकिन जैसे-जैसे history बढ़ेगी, database के लिए संसाधन कम पड़ जाएंगे। कुछ दर्जन hosts से अधिक होने पर 4 GB RAM की योजना बनाएं, और सौ से अधिक hosts होने पर database को एक अलग सर्वर पर स्थानांतरित कर दें। डिस्क का उपयोग इस पर निर्भर करता है कि आप कितनी जानकारी 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 box आपके द्वारा चलाए जा रहे अन्य सभी 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 का मतलब है कि रिलीज़ पैकेज ने अपनी की इंस्टॉल नहीं की है, इसलिए 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 कोलेशन (collation) के मामले में सख्त है: यह केवल utf8mb4 को utf8mb4_bin के साथ या पुराने utf8 (जिसे utf8mb3 भी कहा जाता है) को utf8_bin के साथ सपोर्ट करता है, और इसका डॉक्यूमेंटेशन विशेष रूप से utf8mb4 को utf8mb4_bin के साथ उपयोग करने की सलाह देता है, जिसका उपयोग इस गाइड में किया गया है। 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 स्कीमा इम्पोर्ट के दौरान डिटरमिनिस्टिक ट्रिगर्स बनाता है, और zabbix जैसा नॉन-SUPER अकाउंट बाइनरी लॉगिंग चालू होने पर उन्हें नहीं बना सकता। MySQL 8 डिफ़ॉल्ट रूप से बाइनरी लॉगिंग सक्षम करता है, और कुछ मैनेज्ड MariaDB बिल्ड्स भी ऐसा ही करते हैं (स्टॉक MariaDB नहीं करता)। यदि आप बाइनरी लॉगिंग सक्षम सर्वर पर इस फ्लैग को छोड़ देते हैं, तो इम्पोर्ट ERROR 1419 (HY000): You do not have the SUPER privilege and binary logging is enabled के साथ रुक जाएगा। इसे रूट के रूप में सेट करने से यह समस्या हल हो जाती है; इम्पोर्ट के बाद आप इसे वापस बंद कर सकते हैं। पासवर्ड को ध्यान से नोट करें, सर्वर कॉन्फ़िगरेशन को बिल्कुल वही स्ट्रिंग चाहिए।
चरण 4, schema को import करना (वह चरण जिसे लोग छोड़ देते हैं)
यह सबसे आम कारण है कि एक नया frontend लोड होने से मना कर देता है: आपके द्वारा बनाई गई database खाली है। zabbix-sql-scripts में दी गई schema को इसमें लोड करें।
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 का पासवर्ड या grant गलत है। एक बार जब यह पूरा हो जाए, तो safety flag को वापस बंद कर दें:
sudo mysql -e "SET GLOBAL log_bin_trust_function_creators = 0;"sudo mysql -e "SELECT COUNT(*) FROM zabbix.users;" के साथ लोड की पुष्टि करें, एक संख्या, न कि doesn't exist त्रुटि, का मतलब है कि schema लोड हो गई है।
चरण 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) शुरू होता है, लॉगिन करने में विफल रहता है, और बंद हो जाता है। स्क्रीन पर इसके बारे में कोई जानकारी नहीं मिलती, केवल लॉग में ही इसका पता चलता है।
Step 6, frontend को nginx की ओर निर्देशित करना
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 नहीं है तो server के 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 किसी तरह गायब है (एक ज्ञात packaging quirk), तो sudo ln -s /etc/zabbix/nginx.conf /etc/nginx/conf.d/zabbix.conf के साथ लिंक को मैन्युअल रूप से बनाएँ। फिर test करें और reload करें:
sudo nginx -t
sudo systemctl reload nginxnginx -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 है जो unmatched नाम पर जीत रही है, और इसे हटाने से समस्या ठीक हो जाती है।
चरण 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-fpmUbuntu 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एक सही log का अंत server के start होने और उसके housekeeper, poller तथा trapper processes के चलने के साथ होता है। यदि आपको [Z3001] connection to database 'zabbix' failed: [1045] Access denied for user 'zabbix'@'localhost' दिखाई देता है, तो चरण 5 का DBPassword मेल नहीं खाता है, उसे ठीक करें और restart करें। [Z3005] query failed: [1146] Table 'zabbix.dbversion' doesn't exist line का अर्थ है कि आपने चरण 4 में schema import छोड़ दिया था, इसलिए server के पास पढ़ने के लिए कुछ नहीं है।
चरण 8, वेब सेटअप विज़ार्ड पूरा करें
http://your-domain-or-ip पर ब्राउज़ करें। Zabbix सेटअप विज़ार्ड खुल जाएगा। इसे पूरा करने के लिए इन चरणों का पालन करें:
- Welcome, एक भाषा चुनें।
- Check of pre-requisites, हर पंक्ति में OK लिखा होना चाहिए; पैकेज्ड
/etc/zabbix/php-fpm.confपूल पहले से ही उन PHP सीमाओं को पूरा करता है जिनकी Zabbix को आवश्यकता है। - Configure DB connection, डेटाबेस प्रकार MySQL चुनें, होस्ट
localhost, पोर्ट0(जिसका अर्थ है डिफ़ॉल्ट पोर्ट या सॉकेट), डेटाबेस नामzabbix, उपयोगकर्ताzabbix, और चरण 3 का पासवर्ड दर्ज करें। गलत क्रेडेंशियल या गायब स्कीमा यहीं पर दिखाई देंगे। - Settings, Zabbix सर्वर होस्ट
localhost, पोर्ट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 पर क्लिक करें।
चरण 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])>90vfs.fs.dependent.size[/,pused] वह प्रतिशत-उपयोग वाला आइटम है जिसे टेम्पलेट का फाइलसिस्टम डिस्कवरी रूट फाइलसिस्टम के लिए बनाता है (7.0 का Linux टेम्पलेट vfs.fs.get को एक बार कलेक्ट करता है और प्रति-माउंट आश्रित आइटम प्राप्त करता है), इसलिए ट्रिगर बिना किसी अतिरिक्त डेटा कलेक्शन के फायर हो जाता है। इसे सेव करें।
एक ट्रिगर डैशबोर्ड पर केवल एक पंक्ति का रंग बदलता है जब तक कि कोई action किसी को सूचित न करे। Alerts → Media types → Email के अंतर्गत, SMTP सर्वर, पोर्ट, प्रेषक का पता, कनेक्शन सुरक्षा (आमतौर पर STARTTLS) और कोई भी रिले क्रेडेंशियल्स सेट करें, फिर Test का उपयोग करें। यदि वहाँ विफलता होती है, तो इसका मतलब है कि किसी वास्तविक अलर्ट के निर्भर होने से पहले ही SMTP पाथ गलत है। Users → Users → Admin → Media → Add के अंतर्गत एडमिन यूजर को एक ईमेल पता दें और चुनें कि किन गंभीरता स्तरों पर सूचित करना है। फिर इसे Alerts → Actions → Trigger actions → Create action के अंतर्गत कॉन्फ़िगर करें: Trigger severity >= Warning जैसी शर्त जोड़ें, और Operations के अंतर्गत ईमेल के माध्यम से एडमिन को भेजें। इसे सेव और इनेबल करें। क्या आप चैट पसंद करते हैं? Zabbix 7.0 में Slack, Discord और Telegram के लिए वेबहुक मीडिया प्रकार शामिल हैं, लेकिन प्रत्येक को SMTP सेटिंग्स के बजाय अपने स्वयं के सर्विस सेटअप की आवश्यकता होती है: उदाहरण के लिए, Telegram के लिए BotFather के माध्यम से एक बॉट बनाना पड़ता है, उसका टोकन मीडिया प्रकार के api_token पैरामीटर में डालना होता है, और प्राप्तकर्ता की चैट ID को यूजर के Send to फ़ील्ड में डालना होता है। इंटीग्रेशन की 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 को Zabbix सर्वर के IP पर सेट करें (passive polling के लिए)। active checks के लिए, ServerActive और एक अद्वितीय Hostname सेट करें जो frontend में आपके द्वारा बनाए गए होस्ट से मेल खाता हो:
Server=10.0.0.10
ServerActive=10.0.0.10
Hostname=web-01sudo systemctl restart zabbix-agent2 चलाएं और Zabbix सर्वर से इस मशीन के लिए TCP 10050 पोर्ट खोलें। रिस्टार्ट करना महत्वपूर्ण है: पैकेज ने इंस्टॉल होते ही एजेंट को डिफ़ॉल्ट Server=127.0.0.1 के साथ शुरू कर दिया था, और एजेंट अपनी फाइल केवल शुरू होते समय ही पढ़ता है। enable --now चलाने पर यह पहले से चल रहा होगा और कोई बदलाव नहीं करेगा, जिससे एजेंट आपके Zabbix सर्वर को रिजेक्ट करना जारी रखेगा। बूट पर शुरू होना पहले से ही सेट है, क्योंकि पैकेज ने यूनिट को भी इनेबल कर दिया था। वापस frontend में जाकर, एक ऐसा होस्ट बनाएं जिसका Agent interface उस मशीन के IP की ओर इशारा करता हो, Linux टेम्पलेट को लिंक करें, और यह एक मिनट के भीतर रिपोर्ट करने लगेगा।
विफलता के प्रकार और दिखाई देने वाले स्ट्रिंग्स
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 की जाँच करें और इसे start करें। सेवा चल रही है लेकिन अपने डेटाबेस तक नहीं पहुँच पा रही है, लॉग में [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" के बजाय timeout का अर्थ है कि फ़ायरवॉल port 10050 को ड्रॉप कर रहा है। संबंधित Received empty response from Zabbix Agent. Assuming that agent dropped connection because of access permissions. का अर्थ है कि एजेंट तक पहुँचा जा सकता है लेकिन उसकी Server= लाइन में Zabbix सर्वर का IP सूचीबद्ध नहीं है; इसे जोड़ें और एजेंट को restart करें।
साधारण nginx वेलकम पेज, या 502 Bad Gateway। वेलकम पेज का अर्थ है कि डिफ़ॉल्ट साइट अभी भी enabled है या Zabbix ब्लॉक लिंक नहीं है; /etc/nginx/sites-enabled/default को हटाएँ और पुष्टि करें कि /etc/nginx/conf.d/zabbix.conf मौजूद है, जैसा कि चरण 6 में बताया गया है। 502 का अर्थ है कि nginx PHP तक पहुँच गया है लेकिन PHP-FPM बंद है या किसी अलग socket पर listen कर रहा है; php8.3-fpm को start करें और जाँचें कि Zabbix ब्लॉक में fastcgi_pass socket चल रहे पूल से मेल खाता है।
Backups, upgrades, and TLS
Database ही पूरा इतिहास है, इसलिए इसे mysqldump के साथ एक schedule पर backup करें और dump को सर्वर से बाहर सुरक्षित रखें:
mysqldump --single-transaction zabbix | gzip > zabbix-$(date +%F).sql.gz/etc/zabbix config files छोटी होती हैं और उन्हें save करना उचित है, लेकिन उन्हें फिर से बनाया जा सकता है; data को नहीं। Restore करने की प्रक्रिया इसके विपरीत है: database बनाएँ, dump import करें और config को उसकी ओर point करें।
7.0 line के भीतर upgrades सामान्य apt update && apt upgrade runs हैं; सर्वर अगली बार start होने पर कोई भी schema migration लागू कर देता है, इसलिए packages को upgrade करें और zabbix-server को restart करें। भविष्य की कोई major line एक सोच-समझकर लिया गया कदम होना चाहिए, उसके upgrade notes पढ़ें, पहले database का dump लें और एक-तरफा (one-way) schema change की अपेक्षा रखें। यही एक-तरफा बदलाव वह कारण है कि आप LTS line को pin करते हैं और उसी पर बने रहते हैं।
Frontend को plain HTTP पर न छोड़ें। एक बार जब DNS सर्वर की ओर point करने लगे, तो Certbot and Let's Encrypt on nginx for Ubuntu 24.04 का उपयोग करके उस पर certificate लगाएँ, जो server block को 443 पर listen करने और 80 को redirect करने के लिए rewrite कर देता है। जब आप एक ऐसे सर्वर को सुरक्षित (harden) कर रहे हों जो आपके द्वारा चलाए जा रहे अन्य सभी servers की निगरानी करता है, तो fail2ban banning brute-force SSH attempts के साथ उसके SSH को भी lock down करें। Monitoring login को cleartext में नहीं जाना चाहिए, और उसका मुख्य द्वार password-guessers के लिए खुला नहीं होना चाहिए।
FAQ
क्या मुझे Zabbix agent की आवश्यकता है, या मैं इसके बिना मॉनिटरिंग कर सकता हूँ?
दोनों तरीके काम करते हैं। Agent (agent2) विस्तृत per-host metrics, CPU, memory, disks, processes, services और log files प्रदान करता है, और जिन सर्वर को आप नियंत्रित करते हैं उनके लिए यह सामान्य विकल्प है। Agentless मॉनिटरिंग उन उपकरणों के लिए है जहाँ आप software install नहीं कर सकते: switches और printers के लिए SNMP, reachability के लिए ICMP ping, endpoints के लिए HTTP checks, और hardware health के लिए IPMI। अधिकांश वास्तविक deployments में दोनों का मिश्रण उपयोग होता है।
Frontend यह क्यों कहता है कि Zabbix server नहीं चल रहा है?
Frontend काम करता है लेकिन एक live zabbix-server process तक नहीं पहुँच पा रहा है। आमतौर पर सर्वर 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 का उपयोग कर सकता हूँ?
दोनों पूरी तरह समर्थित हैं: इस गाइड की तरह MariaDB या MySQL के साथ zabbix-server-mysql, या PostgreSQL के साथ zabbix-server-pgsql। छोटे installs के लिए चुनाव का कोई खास फर्क नहीं पड़ता। बड़े installs के लिए, TimescaleDB extension के साथ PostgreSQL history tables को partition करता है और housekeeping को काफी सस्ता बनाता है, यही कारण है कि बड़ी साइटें इसकी ओर झुकती हैं। एक चुनें और उसी पर बने रहें, बाद में migrate करने का मतलब है पूरा export और re-import, न कि केवल config switch।
एक all-in-one Zabbix server को कितनी RAM चाहिए?
कुछ hosts को मॉनिटर करने वाले एक box के लिए, 2 GB एक यथार्थवादी न्यूनतम सीमा है और कुछ दर्जन hosts से अधिक के लिए 4 GB आरामदायक है; memory मुख्य रूप से database cache और सर्वर के pollers द्वारा उपयोग की जाती है। 1 GB का VPS चल तो जाता है लेकिन history बढ़ने पर database को संसाधन नहीं मिल पाते। सौ hosts से अधिक होने पर, database को अपने स्वयं के सर्वर पर अलग करें और एक ही मशीन में अधिक RAM डालने के बजाय उसके buffer pool को tune करें।
क्या कुछ सर्वर के लिए Zabbix का उपयोग करना बहुत अधिक है?
यह हो सकता है। यदि आपको केवल यह जानना है कि "क्या यह up है?" और एक ऐसा page चाहिए जिसे आप साझा कर सकें, तो uptime और status monitoring के लिए Uptime Kuma जैसे हल्के tool को set up करना तेज है और एक नजर में पढ़ना आसान है। Zabbix तब चुनें जब आपको per-metric thresholds, historical graphs, templated hosts और escalation rules चाहिए हों, जो एक साधारण pinger पूरे fleet के लिए नहीं दे सकता।