بیش از 5 مورد
بیش از 22 مورد
بیش از 19 مورد
بیش از 13 مورد
بیش از 10 مورد
بیش از 8 مورد
بیش از 18 مورد
بیش از 10 مورد
بیش از 1 مورد
بیش از 16 مورد
در مدیریت زیرساختهای شبکه و سرورها، فقط راهاندازی سرویسها و اطمینان از عملکرد صحیح آنها کافی نیست؛ بلکه باید بتوانیم وضعیت سرورها، منابع سختافزاری، سرویسها و تجهیزات شبکه را بهصورت مداوم بررسی کنیم و در صورت بروز مشکل، در سریعترین زمان ممکن از آن مطلع شویم. اینجاست که ابزارهای مانیتورینگ مانند Zabbix اهمیت پیدا میکنند.
Zabbix یکی از شناختهشدهترین و قدرتمندترین پلتفرمهای متنباز برای مانیتورینگ سرورها، شبکه، سرویسها و زیرساختهای IT است. با استفاده از Zabbix میتوانیم مواردی مانند مصرف CPU و RAM، فضای دیسک، ترافیک شبکه، وضعیت سرویسها و بسیاری از شاخصهای عملکردی دیگر را تحت نظر داشته باشیم و برای شرایط مختلف، Trigger و Alert تعریف کنیم.
در این راهنمای راهاندازی Zabbix روی اوبونتو قصد داریم نصب و راهاندازی Zabbix را روی یک سرور Ubuntu مرحلهبهمرحله بررسی کنیم. علاوه بر نصب Zabbix Server و اجزای موردنیاز آن، نحوه اتصال Zabbix به تلگرام (Telegram) را نیز آموزش خواهیم داد تا هشدارهای مهم سیستم مستقیماً از طریق پیامرسان به مدیر سرور یا تیم فنی ارسال شوند.
Ubuntu یکی از توزیعهای محبوب لینوکس برای اجرای سرویسهای سروری است و به دلیل پایداری، مستندات گسترده و مدیریت نسبتاً ساده، گزینه مناسبی برای راهاندازی سرویسهای مانیتورینگ محسوب میشود.
اجرای Zabbix روی Ubuntu این امکان را فراهم میکند که یک سیستم مانیتورینگ مستقل برای زیرساخت خود داشته باشید و وضعیت سرورها و سرویسهای مختلف را از یک پنل مرکزی مدیریت کنید.
برای مثال، میتوانید Zabbix را طوری تنظیم کنید که در صورت عبور مصرف CPU از یک مقدار مشخص، پر شدن فضای دیسک، Down شدن یک سرویس یا قطع ارتباط یک سرور، بهصورت خودکار یک هشدار ایجاد کند.
یکی از قابلیتهای مهم Zabbix، سیستم Notification و ارسال هشدار است. اگرچه میتوان هشدارها را از طریق روشهایی مانند Email دریافت کرد، اما در بسیاری از تیمهای فنی، دریافت Notification در تلگرام سریعتر و کاربردیتر است.
با اتصال Zabbix به تلگرام، میتوان شرایطی مانند موارد زیر را بهصورت خودکار اطلاعرسانی کرد:
به این ترتیب، مدیر شبکه یا ادمین سرور لازم نیست دائماً پنل Zabbix را بررسی کند و میتواند در لحظه از رخدادهای مهم زیرساخت مطلع شود.
در ادامه این آموزش، مراحل راهاندازی یک سیستم مانیتورینگ مبتنی بر Zabbix را از ابتدا بررسی خواهیم کرد. ابتدا پیشنیازهای نصب را آماده میکنیم و سپس Zabbix Server و Database موردنیاز را روی Ubuntu نصب و پیکربندی خواهیم کرد.
پس از راهاندازی پنل Zabbix، یک Host را برای مانیتورینگ اضافه میکنیم و در نهایت نحوه ساخت Telegram Bot و اتصال آن به Zabbix را بررسی خواهیم کرد تا Alertهای ایجادشده بهصورت خودکار در تلگرام ارسال شوند.
در پایان این راهنما، یک سیستم مانیتورینگ خواهید داشت که میتواند وضعیت زیرساخت شما را بهصورت مداوم بررسی کرده و در صورت بروز مشکل، بدون نیاز به بررسی دستی، شما را از طریق تلگرام مطلع کند.
این راهنما برای محیطی طراحی شده است که:
| نکته: پیش از اجرای هر دستور، مطمئن شو که با کاربری با دسترسی sudo روی سرور وارد شدی. |
| مورد | مقدار |
| سیستمعامل | Ubuntu 22.04 / 24.04 LTS |
| دسترسی | کاربر با دسترسی sudo یا root |
| نسخه Zabbix | 7.0 LTS |
| دیتابیس | MySQL 8.x |
| وبسرور | Apache2 |
| حداقل رم پیشنهادی | ۸ گیگابایت (برای ۵۰-۳۰۰ هاست + Log Monitoring) |
sudo apt update && sudo apt upgrade -y
sudo dpkg -i zabbix-release_latest_7.0+ubuntu24.04_all.deb
sudo apt update
نکته: اگه اوبونتو 22.04 داری، عبارت ubuntu24.04 رو در آدرس بالا با ubuntu22.04 جایگزین کن.
sudo apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-sql-scripts zabbix-agent -y
sudo apt install mysql-server -y
sudo mysql_secure_installation
شو MySQL وارد
sudo mysql -uroot -p
و دیتابیس و کاربر اختصاصی زبیکس رو بساز:
create database zabbix character set utf8mb4 collate utf8mb4_bin;
create user zabbix@localhost identified by ‘YourStrongPassword’;
grant all privileges on zabbix.* to zabbix@localhost;
set global log_bin_trust_function_creators = 1;
quit;
**هشدار: ** حتماً یوزر رو با کارکتر @localhost بساز تا فقط از خود سرور قابل دسترسی باشه، و اسم دیتابیس/کاربر رو در مراحل بعدی دقیقاً همینجوری استفاده کن.
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql –default-character-set=utf8mb4 -uzabbix -p zabbix
بعد از ایمپورت، این تنظیم امنیتی رو غیرفعال کن:sudo mysql -uroot -p -e “SET GLOBAL log_bin_trust_function_creators = 0;”
sudo nano /etc/zabbix/zabbix_server.conf
و مقدار زیر رو با پسورد واقعی جایگزین کن:DBPassword=YourStrongPassword
sudo nano /etc/zabbix/apache.conf
php_value date.timezone Asia/Tehran
sudo systemctl restart zabbix-server zabbix-agent apache2
sudo systemctl enable zabbix-server zabbix-agent apache2
sudo systemctl status zabbix-server
در صورت بروز خطا، لاگها رو با دستور زیر بررسی کن:
sudo journalctl -u zabbix-server -n 50 –no-pager
sudo ufw allow 80/tcp
sudo ufw allow 10051/tcp
sudo ufw status
آدرس زیر رو در مرورگر باز کن و ویزارد نصب رو تا انتها دنبال کن:
http://<IP-سرور>/zabbix
اطلاعات مورد نیاز ویزارد برای اتصال به دیتابیس:
Database host
localhost
Database name
zabbix
Database user
زبیکسیوزری که ساختی
Database password
پسورد همون یوزر
Port
3306
اطلاعات ورود پیشفرض بعد از پایان نصب:
Username: Admin
Password: zabbix
**هشدار امنیتی: ** بلافاصله بعد از اولین ورود، پسورد پیشفرض Admin رو تغییر بده.
وقتی قراره صدها هاست، آیتمهای SNMP/Agent و بهخصوص Log Monitoring بهصورت همزمان جمعآوری بشن، تنظیمات پیشفرض Zabbix و MySQL کافی نیستن و ریسک کرش یا Out-Of-Memory بالا میره. این بخش، تنظیماتی رو پوشش میده که این ریسک رو به حداقل میرسونه.
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo ‘/swapfile none swap sw 0 0’ | sudo tee -a /etc/fstab
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
زیر بخش [mysqld] این مقادیر رو تنظیم کن (برای سرور با ۸ گیگ رم):
innodb_buffer_pool_size = 2G
innodb_log_file_size = 256M innodb_flush_log_at_trx_commit =2
innodb_flush_method = O_DIRECT
max_connections = 200
sudo systemctl restart mysql
sudo nano /etc/zabbix/zabbix_server.conf
StartPollers=10
StartTrappers=10
StartPollersUnreachable=5
CacheSize=256M
HistoryCacheSize=256M
HistoryIndexCacheSize=64M
TrendCacheSize=64M
ValueCacheSize=256M
HousekeepingFrequency=1
این مقادیر مخصوصاً وقتی که همزمان از SNMP/Agent Polling و Log Monitoring استفاده میشه اهمیت دارن؛ چون هر آیتم لاگ بهطور مداوم کش رو آپدیت میکنه و کش کوچیک باعث صفشدن دیتا و در نهایت هنگکردن سرور میشه.
آیتمهای لاگ (log[] و logrt[]) تاریخچهشون رو در جدول جداگانهای ذخیره میکنن که خیلی سریع حجیم میشه. دو اقدام پیشنهادی:
●مدت زمان نگهداری تاریخچه (History storage period) رو برای آیتمهای لاگ کوتاه نگه دار، مثلاً ۷ روز بهجای ۹۰ روز پیشفرض.
●مطمئن شو Housekeeper فعال و بهروز باشه تا دیتای قدیمی بهموقع پاک بشه.
در این بخش، مسیر کامل وصلکردن Alertهای Zabbix به یک گروه تلگرامی رو پوشش میدیم؛ از ساخت بات گرفته تا رفع خطاهای رایج تست وبهوک.
●در تلگرام به سراغ @BotFather برو
●دستور /newbot رو بفرست و یک اسم و یوزرنیم (که به bot ختم بشه) انتخاب کن
●توکنی که BotFather میده رو در جایی امن ذخیره کن
●بات ساختهشده رو مثل یک عضو عادی به گروه اضافه کن
●مطمئن شو اجازه ارسال پیام داره (نیازی به دسترسی ادمین نیست)
یک پیام تستی در گروه بفرست، سپس آدرس زیر رو با توکن بات خودت باز کن:
curl “https://api.telegram.org/bot<TOKEN>/getUpdates“
در خروجی JSON دنبال بخش chat بگرد؛ مقدار id (که با – شروع میشه چون گروهه) همون Chat ID مورد نیازه.●مسیر: Alerts ← Media types ← Telegram
●توکن بات رو در فیلد Token وارد کن
●وضعیت رو روی Enabled بذار و ذخیره کن
چون هشدار قراره به یک گروه بره نه یک شخص خاص، بهترین روش ساخت یک یوزر اختصاصی (مثلاً telegram-alerts) در Zabbix هست:
●مسیر: Users ← Users ← Create user
●یک Role مناسب با دسترسی به هاستهای موردنظر بهش بده
در تب Media همون یوزر:
Type
Telegram
Send to
Chat ID گروه (مثلاً -1001914725926)
When active
1-7,00:00-24:00
Use if severity
بسته به نیاز (مثلاً Warning به بالا)
Status
Enabled
●مسیر: Alerts ← Actions ← Trigger actions ← Create action
●در تب Conditions، در صورت نیاز شرط severity رو تنظیم کن(مثلاً Warning یا بالاتر)
●در تب Operations، یوزر اختصاصی رو اضافه کن و Send only to رو روی Telegram بذار
●وضعیت Action رو Enabled کن و ذخیره کن
این خطا در پنجره Test طبیعیه؛ چون در تست دستی، متغیرهایی مثل {EVENT.SOURCE} با مقدار واقعی جایگزین نمیشن. برای تست، مقادیر رو دستی و بدون هیچ علامت اضافه (بدون { } یا < >) وارد کن:
event_source
0
event_severity
2
event_nseverity
2
event_value
1
event_update_status
0
event_update_severity
0
event_update_nseverity
0
api_chat_id
Chat ID گروه، مثلاً -1001914725926
api_parse_mode
HTML
alert_message
Test alert message
alert_subject
Test Alert
نکته: در الرت واقعی، خود Zabbix این مقادیر رو با اطلاعات واقعی پر میکنه؛ پرکردن دستی فقط برای تست لازمه.
این خطا وقتی رخ میده که مقدار event_tags بهجای یک آرایه (Array)، بهصورت یک شیء (Object) وارد شده باشه. اسکریپت وبهوک تلگرام روی این فیلد متد .reduce() صدا میزنه که فقط مخصوص آرایههاست.
راهحل: مقدار فیلد event_tags رو از:
{}
به:
[]
تغییر بده (کروشه بهجای آکولاد) و دوباره تست بگیر.
● Zabbix Server، Frontend و Agent نصب و روی سرویسها enable شدن
●دیتابیس MySQL ساخته و اسکیما ایمپورت شده
●پسورد پیشفرض کاربر Admin تغییر کرده
●Swap و تنظیمات InnoDB/Zabbix برای محیط پرترافیک اعمال شده
●Media Type تلگرام ساخته و تست شده و پیام با موفقیت به گروه رسیده
●Trigger Action برای ارسال هشدارها به گروه تلگرام فعال شده
مرجع تخصصی شبکه ایران ؛ جایی که دانش، تجربه و منابع ارزشمند دنیای شبکه به زبان ساده و کاربردی در اختیار علاقهمندان، دانشجویان و متخصصان این حوزه قرار میگیرد.
طراحی شده توسط تیم فوژان
دیدگاهها
هیچ دیدگاهی برای این محصول نوشته نشده است.