راهاندازی Zabbix برای مانیتورینگ چند سرور مجازی و اختصاصی در لوکیشنهای مختلف
وقتی تعداد سرورهایی که مدیریت میکنید از دو یا سه تا بیشتر شود، و مخصوصاً وقتی این سرورها در چند دیتاسنتر یا چند لوکیشن جغرافیایی پخش باشند، سر زدن دستی به هرکدام دیگر جواب نمیدهد. یک سرور در تهران، یکی در فرانکفورت، یکی در سنگاپور — هرکدام با IP، پنل و شرایط شبکه خودش. این مقاله نحوه راهاندازی Zabbix برای مانیتورینگ سرور را از صفر توضیح میدهد: از معماری چندلوکیشنه گرفته تا نصب Server، Proxy، Agent، رمزنگاری ارتباطات و تنظیم هشدار ایمیل.
چرا به یک سیستم مانیتورینگ متمرکز نیاز دارید؟
بدون مانیتورینگ متمرکز معمولاً یکی از این اتفاقها میافتد: یا از پرشدن دیسک یک سرور وقتی باخبر میشوید که سرویس روی آن از کار افتاده، یا برای فهمیدن اینکه چرا لود یک سرور بالا رفته باید لاگها را دستی چک کنید بدون هیچ داده تاریخچهای از رفتار عادی آن سرور.
Zabbix این مشکل را با جمعآوری مداوم متریکها (CPU، RAM، دیسک، ترافیک شبکه، وضعیت سرویسها) از همه سرورها و نمایش آنها در یک داشبورد واحد حل میکند، صرفنظر از اینکه سرور کجا میزبانی شده.
Zabbix چیست و چرا برای این سناریو مناسب است؟
Zabbix یک ابزار متنباز مانیتورینگ است که هم از agent-based monitoring (نصب یک Agent سبک روی هر سرور) و هم از چکهای بدون agent (SNMP، ICMP، HTTP) پشتیبانی میکند. برای سناریوی چند لوکیشنه دو ویژگی مهم دارد:
- Zabbix Proxy: یک نمونه سبک از Zabbix که در هر لوکیشن نصب میشود، داده سرورهای همان لوکیشن را جمع میکند و فقط یک اتصال به Server مرکزی برقرار میکند — بهجای اینکه هر سرور جداگانه به مرکز وصل شود.
- رمزنگاری PSK/TLS داخلی: چون سرورها روی اینترنت عمومی و بین چند ارائهدهنده پخش هستند، ترافیک مانیتورینگ باید رمزنگاریشده باشد، نه متن ساده.
اگر Zabbix تنها گزینه مدنظرتان نیست، مقاله راهاندازی مانیتورینگ سرور با Prometheus و Grafana پشتهی دیگری را با معماری متفاوت (کشیدن متریک بهجای push از Agent) توضیح میدهد که برای برخی تیمها انتخاب بهتری است.
معماری پیشنهادی: Server، Proxy و Agent
برای چند سرور در چند لوکیشن، ساختار سهلایه زیر معمولترین حالت است:
- Zabbix Server روی یک سرور مرکزی (VPS یا اختصاصی) — پایگاهداده، پردازش دادهها و داشبورد اصلی اینجاست.
- Zabbix Proxy در هر لوکیشن — یکی برای هر دیتاسنتر یا هر ارائهدهنده که چند سرور آنجا دارید.
- Zabbix Agent روی تکتک سرورهای مجازی و اختصاصی — چه در همان لوکیشن Proxy، چه هر جای دیگر.
سوال رایج این است که آیا واقعاً به Proxy نیاز دارید یا Agentها میتوانند مستقیم به Server وصل شوند. جدول زیر تفاوت را نشان میدهد:
| حالت اتصال | مناسب برای | مزیت اصلی | نکته |
|---|---|---|---|
| اتصال مستقیم Agent به Server | چند سرور در یک لوکیشن یا شبکه واحد | راهاندازی سادهتر، بدون لایه اضافه | تعداد اتصال باز روی Server با رشد سرورها زیاد میشود |
| اتصال از طریق Zabbix Proxy | چند لوکیشن/دیتاسنتر مختلف | فقط یک اتصال از هر لوکیشن به مرکز، تحمل قطعی شبکه بهتر | یک سرویس اضافه برای نصب و آپدیت در هر لوکیشن |
اگر سرورهای شما در دو یا سه لوکیشن پخش هستند، Proxy معمولاً ارزشش را نشان میدهد، چون هم بار شبکه به سمت مرکز کم میشود و هم اگر اتصال اینترنت مرکز به یک لوکیشن قطع شود، Proxy دادهها را محلی بافر میکند تا وصل شدن دوباره.
نصب Zabbix Server روی سرور مرکزی
پیشنیازها
- یک سرور (توصیه میشود VPS یا سرور اختصاصی با حداقل ۲ هسته CPU و ۴ گیگابایت RAM برای شروع، بسته به تعداد سرورهای تحت مانیتورینگ)
- اوبونتو ۲۲.۰۴ یا دبیان ۱۲
- دیتابیس MySQL یا PostgreSQL
نصب روی اوبونتو/دبیان
wget https://repo.zabbix.com/zabbix/6.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.4-1+ubuntu22.04_all.deb
sudo dpkg -i zabbix-release_6.4-1+ubuntu22.04_all.deb
sudo apt update
sudo apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-sql-scripts zabbix-agent2
بعد از نصب، دیتابیس را میسازید و اسکیمای اولیه را وارد میکنید:
mysql -uroot -p -e "create database zabbix character set utf8mb4 collate utf8mb4_bin;"
mysql -uroot -p -e "create user zabbix@localhost identified by 'PASSWORD_HERE';"
mysql -uroot -p -e "grant all privileges on zabbix.* to zabbix@localhost;"
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql -uzabbix -p zabbix
سپس مشخصات دیتابیس را در /etc/zabbix/zabbix_server.conf تنظیم میکنید (DBPassword=) و سرویسها را بالا میآورید:
sudo systemctl restart zabbix-server zabbix-agent2 apache2
sudo systemctl enable zabbix-server zabbix-agent2 apache2
اگر روی این سرور فایروال فعال دارید، باید پورتهای ۱۰۰۵۱ (Zabbix Server) و ۸۰ یا ۴۴۳ (فرانتاند وب) را باز کنید؛ برای تنظیم قواعد از صفر، راهاندازی فایروال nftables روی سرور لینوکس راهنمای کاملی است.
فرانتاند از طریق مرورگر روی http://IP-SERVER/zabbix در دسترس است و ویزارد نصب باقی تنظیمات را انجام میدهد.

نصب Zabbix Proxy در هر لوکیشن
روی یکی از سرورهای هر لوکیشن (یا یک VPS کوچک جداگانه فقط برای همین کار)، Proxy را نصب میکنید:
sudo apt install zabbix-sql-scripts zabbix-proxy-mysql
mysql -uroot -p -e "create database zabbix_proxy character set utf8mb4 collate utf8mb4_bin;"
zcat /usr/share/zabbix-sql-scripts/mysql/proxy.sql.gz | mysql -uzabbix -p zabbix_proxy
در /etc/zabbix/zabbix_proxy.conf آدرس Server مرکزی و نام یکتای Proxy را مشخص میکنید:
Server=IP-SERVER-MRKZI
Hostname=proxy-frankfurt
این نام (Hostname) را بعداً هنگام تعریف هر Host در فرانتاند بهعنوان "Monitored by proxy" انتخاب میکنید تا آن سرور از طریق این Proxy مانیتور شود.
نصب Zabbix Agent روی سرورهای مجازی و اختصاصی
روی هر سرور (چه در لوکیشنی که Proxy دارد، چه بدون Proxy):
sudo apt install zabbix-agent2
در /etc/zabbix/zabbix_agent2.conf:
Server=IP-PROXY-YA-SERVER
ServerActive=IP-PROXY-YA-SERVER
Hostname=vps-tehran-01
اگر سرور از طریق Proxy مانیتور میشود، این آدرسها به IP همان Proxy محلی اشاره میکنند، نه به Server مرکزی — این باعث میشود ترافیک Agent فقط در همان لوکیشن جابهجا شود.
رمزنگاری ارتباط بین Agent، Proxy و Server
چون سرورها در چند شبکه و چند ارائهدهنده پخش هستند، تنظیم پیشفرض (بدون رمزنگاری) توصیه نمیشود. Zabbix از PSK (Pre-Shared Key) پشتیبانی میکند که تنظیمش سادهتر از گواهی TLS کامل است:
openssl rand -hex 32 > /etc/zabbix/zabbix_agent2.psk
سپس در فایل کانفیگ Agent:
TLSConnect=psk
TLSAccept=psk
TLSPSKIdentity=vps-tehran-01-psk
TLSPSKFile=/etc/zabbix/zabbix_agent2.psk
همین سه پارامتر (با کلید و Identity مطابق) باید در تعریف Host مربوطه در فرانتاند Zabbix هم وارد شوند، و در صورت وجود Proxy، در کانفیگ Proxy هم برای ارتباط با Server مرکزی تکرار میشوند.
رمزنگاری ترافیک مانیتورینگ فقط یک لایه از امنیت سرور است؛ برای سختسازی خود دسترسی به سرورها هم بد نیست نگاهی به امنسازی دسترسی SSH به سرور لینوکس بیندازید.
گروهبندی سرورها بر اساس لوکیشن و تنظیم هشدار ایمیل
برای اینکه داشبورد و هشدارها معنادار بمانند، سرورها را بر اساس لوکیشن گروهبندی کنید — مثلاً Location: Tehran، Location: Frankfurt. این کار در Data collection → Host groups انجام میشود و بعد هر Host به گروه لوکیشن خودش اضافه میشود.
برای هشدار ایمیل:
- در Alerts → Media types گزینه Email را با اطلاعات SMTP خودتان (یا SMTP اریانت) تنظیم کنید.
- در Users → کاربر موردنظر، تب Media، آدرس ایمیل را اضافه کنید.
- در Alerts → Actions یک Action جدید بسازید که با شرطهایی مثل severity بالاتر از "Average" یا trigger خاص، ایمیل ارسال کند.
با این تنظیم، وقتی مثلاً دیسک یک سرور در سنگاپور به ۹۰ درصد برسد یا سرویسی در فرانکفورت down شود، ایمیل بلافاصله میرسد، بدون نیاز به چک دستی داشبورد.

مشاهده همه سرورها از یک داشبورد مرکزی
بعد از این مراحل، در بخش Monitoring → Dashboards میتوانید ویجتهایی مثل "Problems"، "Host availability" و "Geomap" اضافه کنید تا وضعیت همه سرورها — صرفنظر از لوکیشن — در یک صفحه دیده شود. ویجت Geomap مخصوصاً برای این سناریو مفید است چون هر سرور را روی نقشه در موقعیت جغرافیایی واقعیاش نشان میدهد و وضعیتش را با رنگ مشخص میکند.
اگر هنوز سرور مجازی جدیدی را در لوکیشنهای مختلف تهیه نکردهاید، راهنمای خرید سرور مجازی ایران: قیمت، دیتاسنتر، پینگ و آیپی ثابت نکات انتخاب لوکیشن مناسب را پوشش میدهد.
اگر میخواهید سرور مرکزی Zabbix یا سرورهای تحت مانیتورینگ را روی زیرساخت پایدارتری راهاندازی کنید، میتوانید از سرورهای مجازی اریانت استفاده کنید — با پهنای باند مناسب برای ترافیک مداوم Agent و Proxy و امکان انتخاب لوکیشنهای مختلف برای همان معماری چندلوکیشنهای که در این مقاله توضیح داده شد.
جمعبندی
راهاندازی Zabbix برای مانیتورینگ چند سرور در چند لوکیشن، بعد از چیدن معماری اولیه (Server، Proxy در هر لوکیشن، Agent روی هر سرور) کار تکراری و سادهای است: نصب Agent، تنظیم PSK، اضافهکردن Host به گروه لوکیشن مربوطه. نکتهای که بیشتر نادیده گرفته میشود رمزنگاری ارتباطات است — چون سرورها روی اینترنت عمومی پخشاند، غیرفعال گذاشتن PSK یعنی متریکها و اطلاعات زیرساخت بهصورت متن ساده روی شبکه رد و بدل میشوند. با این تنظیمات، بهجای سر زدن دستی به هر سرور، یک داشبورد واحد وضعیت همه را نشان میدهد و هر مشکل قبل از اینکه کاربر نهایی متوجه شود، به ایمیل شما میرسد.




