SSD Nodes Learn Hosting plans →
নির্দেশিকা Matt Connorদ্বারা Matt Connor

Ubuntu 24.04-এ Zabbix 7.0 LTS ইনস্টল ও কনফিগারেশন

Ubuntu 24.04-এ Zabbix 7.0 LTS ইনস্টল করুন: repo যোগ, MySQL schema import, nginx frontend ও agent2 চালু করুন, এবং সেটআপের সব error ঠিক করুন।

আপনি যা তৈরি করছেন

একটি Ubuntu 24.04 VPS-এ সম্পূর্ণ Zabbix 7.0 LTS stack চলবে: metrics poll ও alert পাঠানোর zabbix-server daemon, প্রতিটি metric সংরক্ষণকারী MariaDB/MySQL database, nginx-এর মাধ্যমে পরিবেশিত PHP frontend এবং সার্ভারটির নিজস্ব metrics সংগ্রহকারী zabbix-agent2। এটি চালু হলে দ্বিতীয় একটি server-এ নির্দেশ করে একটি template সংযুক্ত করুন। কোনো disk পূর্ণ হলে বা কোনো service বন্ধ হয়ে গেলে সঙ্গে সঙ্গে email পাবেন।

Zabbix একটি status-page tool-এর চেয়ে ভারী। এটি templates, triggers, escalation এবং history retention-সহ একটি পূর্ণাঙ্গ real-time series system। বেশিরভাগ সমস্যা তিনটি ধাপ এড়িয়ে যাওয়ার কারণে হয়: database schema import করা, server যে database password সত্যিই পড়ে সেটি নির্ধারণ করা এবং nginx config-এ দুটি line uncomment করা। এগুলো ঠিকভাবে করলে বাকি কাজ wizard-এর মাধ্যমে করা যায়। আপনার যদি শুধু up/down check এবং share করা যায় এমন status page দরকার হয়, একটি lightweight Uptime Kuma status monitor একটি container-এই তা করতে পারে। অনেক host জুড়ে প্রতি-metric threshold ও escalation দরকার হলে Zabbix-এর অতিরিক্ত ওজন সার্থক।

7.0 LTS line ব্যবহার করুন। এর server, frontend, agent2 এবং schema একই version অনুযায়ী প্রকাশিত হয়, এবং বহু বছর security fix পায়। নিচের repository filename কপি করার আগে official Zabbix download page দেখে নিন। latest release package শুধু 7.0 repository configure করে; এটি কোনো নির্দিষ্ট point release বেছে নেয় না। এরপর apt repository-তে থাকা যেকোনো 7.0.x package install করে, ফলে সর্বশেষ package-ই ইনস্টল হয়। পৃষ্ঠাটিতে numbered 7.0-N release package-ও থাকতে পারে, কিন্তু সেই number repository setup-এর version নির্দেশ করে, Zabbix build-এর নয়। এখানে থাকা অন্যান্য command পুরো 7.0 line-এ অপরিবর্তিত থাকে।

আকার, port এবং পূর্বশর্ত

ধরা হচ্ছে, এটি root বা sudo-সহ একটি নতুন Ubuntu 24.04 KVM VPS। resource সম্পর্কে বাস্তবসম্মত থাকুন: এক সার্ভারে server, database, nginx এবং PHP চালিয়ে অল্পসংখ্যক host monitor করার জন্য 2 GB RAM এবং দুইটি vCPU বাস্তবসম্মত সর্বনিম্ন। 1 GB-এর server boot হয়, কিন্তু history বাড়ার সঙ্গে database পর্যাপ্ত resource পায় না। কয়েক ডজন host পার হলে 4 GB RAM ধরুন। একশোর বেশি host হলে database আলাদা server-এ সরিয়ে নিন। কতগুলো item collect করবেন এবং কতদিন history রাখবেন, তার ওপর disk-এর ব্যবহার বাড়ে। শুরুতে কয়েক gigabyte বরাদ্দ রাখুন। আপনার নির্ধারিত retention window অনুযায়ী housekeeper পুরোনো data মুছে দেয়।

Port: frontend-এর জন্য 80 এবং 443 ব্যবহার করুন। এগুলো public রাখতে পারেন বা শুধু নিজের IP-তে সীমাবদ্ধ করতে পারেন। Active agent data পাঠালে server TCP 10051 port-এ listen করে। Server কোনো agent-কে poll করলে প্রতিটি agent TCP 10050 port-এ listen করে। সামনে firewall থাকলে শুধু যেসব port বাইরে expose করবেন, সেগুলোই খুলুন। Frontend-এর জন্য একটি DNS A record রাখা ভালো, কারণ এতে একটি প্রকৃত certificate ব্যবহার করতে পারবেন। আপনি চালানো প্রতিটি service একটি Zabbix box monitor করে। তাই এটিকে পরে যোগ করা কোনো অতিরিক্ত উপাদান হিসেবে না দেখে 2026 সালে চালানোর মতো বৃহত্তর self-hosting stack-এর অংশ হিসেবে রাখুন।

ধাপ 1, অফিসিয়াল Zabbix 7.0 repository যোগ করুন

zabbix-release package-এর কাজ একটিই: এটি আপনার system-এ apt source list এবং signing key যোগ করে। এটি 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 output-এ একটি 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-এর জন্য তৈরি server, PHP frontend, nginx config, SQL schema file এবং agent2 ইনস্টল করুন।

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

zabbix-server-mysql হলো MySQL/MariaDB-এর জন্য compile করা server; PostgreSQL ব্যবহার করতে হলে এর পরিবর্তে zabbix-server-pgsql ইনস্টল করুন এবং নিচের database ধাপগুলো সেই অনুযায়ী পরিবর্তন করুন। পরের ধাপে যে schema import করবেন, zabbix-sql-scripts-এ সেটিই থাকে। 7.0-এ এটি আলাদা package, তাই এটি বাদ দিলে পরে import path পাওয়া যাবে না। এগুলোর কোনোটিই database engine ইনস্টল করে না। তাই সিস্টেমে আগে থেকে না থাকলে এখন MariaDB ইনস্টল করুন।

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

ধাপ 3, সঠিক character set দিয়ে database তৈরি করুন

Zabbix collation-এর ক্ষেত্রে কঠোর। এটি শুধু utf8mb4-কে utf8mb4_bin-এর সঙ্গে অথবা পুরোনো utf8 (অর্থাৎ utf8mb3)-কে utf8_bin-এর সঙ্গে সমর্থন করে। Documentation-এ utf8mb4-এর সঙ্গে utf8mb4_bin ব্যবহারের জোরালো পরামর্শ দেওয়া হয়েছে, এবং এই guide-এ সেটিই ব্যবহার করা হয়েছে। 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 line-টি import-এর জন্য একটি safety valve। Import চলাকালে Zabbix schema deterministic trigger তৈরি করে। Binary logging চালু থাকলে zabbix-এর মতো non-SUPER account সেগুলো তৈরি করতে পারে না। MySQL 8-এ binary logging default হিসেবে চালু থাকে, এবং কিছু managed MariaDB build-এও এটি চালু থাকে; stock MariaDB-তে থাকে না। Binary logging চালু থাকা server-এ flag-টি বাদ দিলে import ERROR 1419 (HY000): You do not have the SUPER privilege and binary logging is enabled দিয়ে থেমে যায়। Root হিসেবে এটি সেট করলে সমস্যা দূর হয়। Import শেষ হলে এটি আবার বন্ধ করুন। Password-টি হুবহু লিখে রাখুন। Server config-এ একই string byte for byte প্রয়োজন হবে।

ধাপ 4, schema আমদানি করুন (যে ধাপটি অনেকে বাদ দেন)

নতুন 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 password চাইবে। ছোট VPS-এ প্রক্রিয়াটি ত্রিশ থেকে ষাট সেকেন্ড চলে। সফল হলে কোনো output দেখাবে না; এই নীরবতাই স্বাভাবিক। 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;" দিয়ে load নিশ্চিত করুন। doesn't exist error নয়, একটি সংখ্যা দেখা গেলে বুঝবেন schema সফলভাবে লোড হয়েছে।

ধাপ 5, zabbix_server.conf-এ database password সেট করুন

সার্ভার তার database credential /etc/zabbix/zabbix_server.conf থেকে পড়ে। শুধু password সেট করতে হবে; DBName এবং DBUser-এর default মান ইতিমধ্যেই zabbix। # DBPassword= line-এর 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-এ কারণটি থাকে।

ধাপ 6, nginx-কে frontend-এর দিকে নির্দেশ করুন

zabbix-nginx-conf package /etc/zabbix/nginx.conf-এ একটি server block ইনস্টল করে এবং /etc/nginx/conf.d/zabbix.conf থেকে সেটিকে nginx-এর সঙ্গে link করে। তবে এতে listen এবং server_name লাইন comment করা থাকে। তাই এগুলো সম্পাদনা না করা পর্যন্ত nginx Zabbix-এর জন্য কোনো content পরিবেশন করে না:

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

আপনার domain ব্যবহার করুন। DNS না থাকলে server-এর public IP ব্যবহার করুন। এখানে দুটি বিষয় মনে রাখুন। Ubuntu-এর default nginx welcome site-ও port 80-এ listening করে এবং সেটিকে default server হিসেবে চিহ্নিত করা থাকে। তাই যে request-এর name-এর সঙ্গে এটি মেলে না, সেটির জন্য ওই site-ই ব্যবহৃত হয়। এটি সরিয়ে না দিলে ভুল page লোড হবে: 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 পরীক্ষা করে 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 সরিয়ে আবার পরীক্ষা করুন। আরও সাধারণ ক্ষেত্রে পরীক্ষায় শুধু একটি conflicting server name warning দেখিয়ে সফল হয়, কিন্তু browser-এ এখনও সাধারণ welcome page দেখা যায়। এর কারণ unmatched name-এর জন্য default site নির্বাচিত হচ্ছে। এটি সরিয়ে দিলে সমস্যার সমাধান হবে।

ধাপ 7, service চালু ও enable করুন

server, agent, PHP-FPM এবং nginx চালু করুন। Reboot-এর পরেও এগুলো যেন স্বয়ংক্রিয়ভাবে চালু থাকে, সে জন্য enable করুন।

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-এর অধীনে frontend চালায়। server চালু হয়েছে এবং চালু অবস্থায় আছে কি না নিশ্চিত করুন:

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

স্বাভাবিক log-এর শেষে server চালু হওয়ার বার্তা এবং তার housekeeper, poller ও trapper process চলমান থাকার তথ্য থাকে। [Z3001] connection to database 'zabbix' failed: [1045] Access denied for user 'zabbix'@'localhost' দেখা গেলে Step 5-এর DBPassword-এর সঙ্গে মিল নেই। সেটি ঠিক করে server restart করুন। [Z3005] query failed: [1146] Table 'zabbix.dbversion' doesn't exist line-এর অর্থ হলো আপনি Step 4-এ schema import বাদ দিয়েছেন। তাই server-এর পড়ার মতো কোনো schema নেই।

ধাপ 8, ওয়েব সেটআপ wizard সম্পন্ন করুন

http://your-domain-or-ip-এ যান। Zabbix setup wizard খুলবে। নিচের ধাপগুলো অনুসরণ করুন:

  1. স্বাগতম, একটি ভাষা নির্বাচন করুন।
  2. পূর্বশর্ত পরীক্ষা, শুরুতেই প্রতিটি সারিতে OK দেখানো উচিত; packaged /etc/zabbix/php-fpm.conf pool ইতিমধ্যে Zabbix-এর প্রয়োজনীয় PHP limit বাড়িয়ে দেয়।
  3. DB connection কনফিগার করুন, database type হিসেবে MySQL, host হিসেবে localhost, port হিসেবে 0 (অর্থাৎ default port বা socket), database name হিসেবে zabbix, user হিসেবে zabbix এবং Step 3-এর password দিন। ভুল credential বা schema অনুপস্থিত থাকলে এখানেই তা দেখা যাবে।
  4. Settings, Zabbix server host localhost এবং port 10051 অপরিবর্তিত রাখুন এবং installation-এর নাম দিন।
  5. Pre-installation summary দেখুন, তারপর Install নির্বাচন করুন। wizard /etc/zabbix/web/zabbix.conf.php লিখবে।
  6. Finish নির্বাচন করুন। Admin (capital A) user হিসেবে zabbix password দিয়ে লগ ইন করুন এবং অবিলম্বে Users-এর অধীনে সেই password পরিবর্তন করুন।

wizard যদি Cannot create the configuration file জানায়, তার অর্থ web user /etc/zabbix/web/-এ লিখতে পারছে না। wizard যে zabbix.conf.php download করতে বলবে, সেটি download করুন, sudo ব্যবহার করে হাতে সেখানে রাখুন এবং Finish-এ ক্লিক করুন।

ধাপ 9, local 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 করে)। সংরক্ষণ করুন।

এক মিনিটের মধ্যে host row-তে সবুজ ZBX label দেখা যাবে এবং Monitoring → Latest data-এর অধীনে metrics আসতে শুরু করবে। লাল ZBX label-এর অর্থ server agent-এ পৌঁছাতে পারছে না। এই failure mode নিচে আলোচনা করা হয়েছে; এটি এই ধাপে করা কোনো ভুল নয়।

ধাপ 10, একটি কার্যকর trigger এবং email alert

Linux by Zabbix agent template-এ high CPU, low memory এবং full disk-এর জন্য trigger আগে থেকেই থাকে। তাই এটি link করলেই alert পাবেন। একটি 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] হলো template-এর filesystem discovery তৈরি করা root filesystem-এর percent-used item। 7.0-এর Linux template একবার vfs.fs.get সংগ্রহ করে এবং প্রতিটি mount-এর dependent item সেখান থেকে তৈরি করে। তাই অতিরিক্ত data collection ছাড়াই trigger কাজ করবে। এটি save করুন।

কোনো action কাউকে notification না পাঠানো পর্যন্ত trigger শুধু dashboard-এর একটি row-এর রং পরিবর্তন করে। Alerts → Media types → Email-এর অধীনে SMTP server, port, sender address, connection security (সাধারণত STARTTLS) এবং প্রয়োজনীয় relay credential নির্ধারণ করুন। এরপর Test ব্যবহার করুন। Test ব্যর্থ হলে কোনো বাস্তব alert-এর ওপর নির্ভর করার আগেই বুঝবেন যে SMTP path-এ সমস্যা আছে। Users → Users → Admin → Media → Add-এর অধীনে Admin user-এর address যোগ করুন এবং কোন severity-তে notification যাবে তা বেছে নিন। এরপর Alerts → Actions → Trigger actions → Create action-এর মাধ্যমে এটি সংযুক্ত করুন: Trigger severity >= Warning-এর মতো একটি condition যোগ করুন এবং Operations-এর অধীনে Email-এর মাধ্যমে Admin-কে পাঠান। Save করে এটি enable করুন।

Chat ব্যবহার করতে চান? Zabbix 7.0-এ Slack, Discord এবং Telegram-এর জন্য webhook media type আগে থেকেই রয়েছে। তবে SMTP setting-এর বদলে প্রতিটির নিজস্ব service setup প্রয়োজন। উদাহরণস্বরূপ, Telegram-এর জন্য BotFather-এর মাধ্যমে একটি bot তৈরি করতে হবে, তার token media type-এর api_token parameter-এ দিতে হবে এবং recipient-এর chat ID user-এর Send to field-এ দিতে হবে। Integration-এর README অনুসরণ করুন, media type enable করুন, এটি কোনো user-এর সঙ্গে assign করুন এবং Email-এর মতোই কোনো action-এ ব্যবহার করুন।

এজেন্ট দিয়ে দ্বিতীয় সার্ভার মনিটর করা

অন্য একটি সার্ভার মনিটর করতে সেখানেও Zabbix repository যোগ করুন। Ubuntu 24.04 নিজস্ব কোনো Zabbix package সরবরাহ করে না। এরপর শুধু 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 সেট করুন। Active check-এর জন্য ServerActive এবং একটি অনন্য Hostname সেট করুন। এই মানটি frontend-এ তৈরি করা host-এর সঙ্গে মিলতে হবে:

Server=10.0.0.10
ServerActive=10.0.0.10
Hostname=web-01

sudo systemctl restart zabbix-agent2 চালান এবং Zabbix server থেকে এই মেশিনে TCP 10050 খোলা রাখুন। Restart করা গুরুত্বপূর্ণ। Package ইনস্টল হওয়ার সঙ্গে সঙ্গে agent চালু করেছিল এবং তখন সরবরাহ করা Server=127.0.0.1 ব্যবহার করেছিল। Agent কেবল শুরু হওয়ার সময় নিজের configuration file পড়ে। enable --now চালালে agent ইতিমধ্যে চলমান আছে বলে কোনো পরিবর্তন করবে না। ফলে agent আপনার Zabbix server-এর অনুরোধ প্রত্যাখ্যান করতেই থাকবে। Boot-এর সময় agent চালু হওয়ার ব্যবস্থা ইতিমধ্যে করা আছে, কারণ package unit-টিও enable করেছে। এরপর frontend-এ ফিরে যান। ওই মেশিনের IP-র দিকে নির্দেশ করা Agent interface-সহ একটি host তৈরি করুন, 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-এর password-এর সঙ্গে মেলেনি, অথবা 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 চালু আছে, কিন্তু সক্রিয় server-এ পৌঁছাতে পারছে না। সম্ভাব্য 3টি কারণ আছে; প্রথমটি সবচেয়ে সম্ভাব্য। Service বন্ধ আছে; systemctl status zabbix-server পরীক্ষা করে এটি চালু করুন। Service চলছে, কিন্তু তার database-এ পৌঁছাতে পারছে না; log-এ [Z3001] connection to database 'zabbix' failed: [1045] Access denied দেখা যায়, যার অর্থ DBPassword ভুল অথবা ফাঁকা। অথবা frontend ভুল server-এ নির্দেশ করছে; এই তথ্য /etc/zabbix/web/zabbix.conf.php-এ host হিসেবে localhost এবং port হিসেবে 10051 সংরক্ষিত আছে। Ubuntu-তে ডিফল্টভাবে SELinux থাকে না। তাই RHEL guide-এ উল্লেখ করা 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-এর traffic বাদ দিচ্ছে। সংশ্লিষ্ট Received empty response from Zabbix Agent. Assuming that agent dropped connection because of access permissions. মানে agent-এ পৌঁছানো যাচ্ছে, কিন্তু তার Server= line-এ Zabbix server-এর IP তালিকাভুক্ত নেই। IP যোগ করে agent restart করুন।

সাধারণ nginx welcome page অথবা 502 Bad Gateway দেখা যায়। Welcome page দেখা মানে default site এখনো enabled আছে, অথবা Zabbix block link করা হয়নি। /etc/nginx/sites-enabled/default সরিয়ে ফেলুন এবং Step 6-এর মতো করে /etc/nginx/conf.d/zabbix.conf আছে কি না নিশ্চিত করুন। 502 মানে nginx PHP-তে পৌঁছেছে, কিন্তু PHP-FPM বন্ধ আছে অথবা অন্য socket-এ listen করছে। php8.3-fpm চালু করুন এবং Zabbix block-এর fastcgi_pass socket-টি চলমান pool-এর socket-এর সঙ্গে মেলে কি না পরীক্ষা করুন।

ব্যাকআপ, আপগ্রেড এবং TLS

ডেটাবেসেই পুরো ইতিহাস থাকে। তাই নির্ধারিত সময়সূচি অনুযায়ী mysqldump দিয়ে এর ব্যাকআপ নিন এবং dump-টি এই সার্ভারের বাইরে সংরক্ষণ করুন:

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

/etc/zabbix-এর configuration file-গুলো ছোট এবং সেগুলোরও ব্যাকআপ রাখা ভালো। তবে এগুলো পুনর্নির্মাণ করা যায়; ডেটা পুনর্নির্মাণ করা যায় না। Restore করার প্রক্রিয়া উল্টো: ডেটাবেস তৈরি করুন, dump import করুন এবং configuration-এ সেটির ঠিকানা দিন।

7.0 line-এর মধ্যে আপগ্রেড করতে সাধারণ apt update && apt upgrade চালানোই যথেষ্ট। পরবর্তী start-এর সময় server নিজেই প্রয়োজনীয় schema migration প্রয়োগ করবে। তাই package আপগ্রেড করে zabbix-server restart করুন। ভবিষ্যতের major line-এ যাওয়া একটি পরিকল্পিত পরিবর্তন। Upgrade note পড়ুন, আগে ডেটাবেস dump নিন এবং একমুখী schema পরিবর্তনের জন্য প্রস্তুত থাকুন। এই একমুখী পরিবর্তনের কারণেই আপনি একটি LTS line নির্দিষ্ট করে সেটিতেই থাকা উচিত।

Frontend-কে plain HTTP-তে রাখবেন না। DNS এই সার্ভারের দিকে নির্দেশ করার পর Ubuntu 24.04-এ nginx-এর জন্য Certbot ও Let's Encrypt ব্যবহার করে certificate ইনস্টল করুন। এতে server block-টি 443 port-এ listen করার জন্য পরিবর্তিত হবে এবং 80 port থেকে redirect করবে। অন্য সব server-এর লগ পরীক্ষা করার জন্য ব্যবহৃত এই সার্ভারটি harden করার সময় এর SSH-ও brute-force SSH attempt block করতে fail2ban দিয়ে সুরক্ষিত করুন। Monitoring login cleartext-এ পাঠানো উচিত নয় এবং এর প্রবেশদ্বার password guess করার চেষ্টাকারীদের জন্য খোলা রাখা উচিত নয়।

FAQ

আমার কি Zabbix agent ব্যবহার করা দরকার, নাকি এটি ছাড়াই monitoring করা যাবে?

দুটিই কার্যকর। agent (agent2) প্রতিটি host-এর CPU, memory, disk, process, service ও log file-এর সমৃদ্ধ metric দেয়। আপনি যে server নিয়ন্ত্রণ করেন, সেখানে এটিই সাধারণত সঠিক পছন্দ। Agentless monitoring এমন device-এর জন্য, যেখানে software install করা যায় না: switch ও printer-এর জন্য SNMP, reachability যাচাইয়ের জন্য ICMP ping, endpoint-এর জন্য HTTP check এবং hardware health-এর জন্য IPMI। বাস্তব deployment-এ সাধারণত দুটির মিশ্রণ ব্যবহার করা হয়।

Frontend কেন বলছে যে Zabbix server চলছে না?

Frontend কাজ করছে, কিন্তু সক্রিয় zabbix-server process-এ পৌঁছাতে পারছে না। সাধারণত server শুরু হয়, zabbix_server.conf-এর DBPassword-এ login করতে না পেরে সঙ্গে সঙ্গে বন্ধ হয়ে যায়। systemctl status zabbix-server চালিয়ে /var/log/zabbix/zabbix_server.log পড়ুন; সেখানে [Z3001] connection to database ... failed line থাকলে বিষয়টি নিশ্চিত হবে। Password ঠিক করে server restart করুন। এক মিনিটের মধ্যে banner সরে যাবে।

আমাকে কি MySQL ব্যবহার করতেই হবে, নাকি PostgreSQL ব্যবহার করা যাবে?

দুটিই সম্পূর্ণ সমর্থিত: এই guide-এর মতো MariaDB বা MySQL-সহ zabbix-server-mysql, অথবা PostgreSQL-সহ zabbix-server-pgsql। ছোট install-এ পছন্দের প্রভাব খুব কম। বড় install-এ PostgreSQL-এর TimescaleDB extension history table partition করে এবং housekeeping-এর খরচ অনেক কমায়। তাই বড় site-গুলো সাধারণত এটি বেছে নেয়। একটি পছন্দ করে সেটিতেই থাকুন। পরে migration করতে হলে শুধু configuration পরিবর্তন যথেষ্ট নয়; সম্পূর্ণ export ও re-import করতে হবে।

Zabbix all-in-one server-এর কত RAM দরকার?

একটি box-এ অল্প কয়েকটি host monitor করার জন্য 2 GB বাস্তবসম্মত সর্বনিম্ন পরিমাণ। কয়েক ডজন host-এর পর 4 GB আরামদায়ক। Memory-এর বেশিরভাগ database cache এবং server-এর poller-গুলো ব্যবহার করে। 1 GB VPS চলবে, কিন্তু history বাড়ার সঙ্গে database পর্যাপ্ত memory পাবে না। একশোর বেশি host হলে database আলাদা server-এ রাখুন এবং আরও RAM এক machine-এ যোগ না করে তার buffer pool tune করুন।

কয়েকটি server-এর জন্য Zabbix কি অতিরিক্ত বড় সমাধান?

হতে পারে। আপনার প্রয়োজন যদি শুধু “এটি চালু আছে কি না” যাচাই করা এবং share করার মতো একটি page হয়, তাহলে uptime ও status monitoring-এর জন্য Uptime Kuma-এর মতো হালকা tool দ্রুত setup করা যায় এবং এক নজরে বোঝা সহজ। Per-metric threshold, historical graph, templated host এবং escalation rule দরকার হলে Zabbix বেছে নিন। একটি সাধারণ pinger fleet জুড়ে এসব সুবিধা দিতে পারে না।