مرجع تخصصی شبکه ایران

VoIP

بیش از 5 مورد

Vmware

بیش از 22 مورد

Virtualization

بیش از 19 مورد

Utility

بیش از 13 مورد

Mikrotik

بیش از 10 مورد

Microsoft

بیش از 8 مورد

Linux

بیش از 18 مورد

HPE

بیش از 10 مورد

Developers

بیش از 1 مورد

Cisco

بیش از 16 مورد

راهنمای کامل راه‌اندازی Zabbix روی اوبونتو و ارسال هشدارها به تلگرام

| تعداد کامنت 0
راه‌اندازی Zabbix روی اوبونتو

در مدیریت زیرساخت‌های شبکه و سرورها، فقط راه‌اندازی سرویس‌ها و اطمینان از عملکرد صحیح آن‌ها کافی نیست؛ بلکه باید بتوانیم وضعیت سرورها، منابع سخت‌افزاری، سرویس‌ها و تجهیزات شبکه را به‌صورت مداوم بررسی کنیم و در صورت بروز مشکل، در سریع‌ترین زمان ممکن از آن مطلع شویم. اینجاست که ابزارهای مانیتورینگ مانند Zabbix اهمیت پیدا می‌کنند.

Zabbix یکی از شناخته‌شده‌ترین و قدرتمندترین پلتفرم‌های متن‌باز برای مانیتورینگ سرورها، شبکه، سرویس‌ها و زیرساخت‌های IT است. با استفاده از Zabbix می‌توانیم مواردی مانند مصرف CPU و RAM، فضای دیسک، ترافیک شبکه، وضعیت سرویس‌ها و بسیاری از شاخص‌های عملکردی دیگر را تحت نظر داشته باشیم و برای شرایط مختلف، Trigger و Alert تعریف کنیم.

در این راهنمای راه‌اندازی Zabbix روی اوبونتو قصد داریم نصب و راه‌اندازی Zabbix را روی یک سرور Ubuntu مرحله‌به‌مرحله بررسی کنیم. علاوه بر نصب Zabbix Server و اجزای موردنیاز آن، نحوه اتصال Zabbix به تلگرام (Telegram) را نیز آموزش خواهیم داد تا هشدارهای مهم سیستم مستقیماً از طریق پیام‌رسان به مدیر سرور یا تیم فنی ارسال شوند.

چرا Zabbix را روی Ubuntu نصب کنیم؟

Ubuntu یکی از توزیع‌های محبوب لینوکس برای اجرای سرویس‌های سروری است و به دلیل پایداری، مستندات گسترده و مدیریت نسبتاً ساده، گزینه مناسبی برای راه‌اندازی سرویس‌های مانیتورینگ محسوب می‌شود.

اجرای Zabbix روی Ubuntu این امکان را فراهم می‌کند که یک سیستم مانیتورینگ مستقل برای زیرساخت خود داشته باشید و وضعیت سرورها و سرویس‌های مختلف را از یک پنل مرکزی مدیریت کنید.

برای مثال، می‌توانید Zabbix را طوری تنظیم کنید که در صورت عبور مصرف CPU از یک مقدار مشخص، پر شدن فضای دیسک، Down شدن یک سرویس یا قطع ارتباط یک سرور، به‌صورت خودکار یک هشدار ایجاد کند.

چرا اتصال Zabbix به تلگرام کاربردی است؟

یکی از قابلیت‌های مهم Zabbix، سیستم Notification و ارسال هشدار است. اگرچه می‌توان هشدارها را از طریق روش‌هایی مانند Email دریافت کرد، اما در بسیاری از تیم‌های فنی، دریافت Notification در تلگرام سریع‌تر و کاربردی‌تر است.

با اتصال Zabbix به تلگرام، می‌توان شرایطی مانند موارد زیر را به‌صورت خودکار اطلاع‌رسانی کرد:

  • قطع شدن یک سرور یا سرویس
  • افزایش بیش از حد مصرف CPU یا RAM
  • کمبود فضای دیسک
  • افزایش غیرعادی ترافیک شبکه
  • Down شدن تجهیزات شبکه
  • ایجاد یا برطرف شدن یک مشکل (Problem/Recovery)
  • رخ دادن Triggerهای مهم در زیرساخت

به این ترتیب، مدیر شبکه یا ادمین سرور لازم نیست دائماً پنل Zabbix را بررسی کند و می‌تواند در لحظه از رخدادهای مهم زیرساخت مطلع شود.

1.در این آموزش چه چیزی یاد می‌گیریم؟

در ادامه این آموزش، مراحل راه‌اندازی یک سیستم مانیتورینگ مبتنی بر Zabbix را از ابتدا بررسی خواهیم کرد. ابتدا پیش‌نیازهای نصب را آماده می‌کنیم و سپس Zabbix Server و Database موردنیاز را روی Ubuntu نصب و پیکربندی خواهیم کرد.

پس از راه‌اندازی پنل Zabbix، یک Host را برای مانیتورینگ اضافه می‌کنیم و در نهایت نحوه ساخت Telegram Bot و اتصال آن به Zabbix را بررسی خواهیم کرد تا Alertهای ایجادشده به‌صورت خودکار در تلگرام ارسال شوند.

در پایان این راهنما، یک سیستم مانیتورینگ خواهید داشت که می‌تواند وضعیت زیرساخت شما را به‌صورت مداوم بررسی کرده و در صورت بروز مشکل، بدون نیاز به بررسی دستی، شما را از طریق تلگرام مطلع کند.

این راهنما برای محیطی طراحی شده است که:

  • بین ۵۰ تا ۳۰۰ هاست/دیوایس رو مانیتور می‌کند
  •  از Agent/SNMP polling  و  از Log Monitoring استفاده می‌شود
  • روی یک VM با ۸ گیگابایت رم اجرا می‌شود
نکته:  پیش از اجرای هر دستور، مطمئن شو که با کاربری با دسترسی sudo روی سرور وارد شدی.

2. پیش‌نیازها

مورد مقدار
سیستم‌عامل Ubuntu 22.04 / 24.04 LTS
دسترسی کاربر با دسترسی sudo یا root
نسخه Zabbix 7.0 LTS
دیتابیس MySQL 8.x
وب‌سرور Apache2
حداقل رم پیشنهادی ۸ گیگابایت (برای ۵۰-۳۰۰ هاست + Log Monitoring)

نصب Zabbix Server

آپدیت سیستم

sudo apt update && sudo apt upgrade -y

اضافه‌کردن ریپازیتوری رسمی Zabbix

wget https://repo.zabbix.com/zabbix/7.0/release/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

نکته: اگه اوبونتو 22.04 داری، عبارت ubuntu24.04 رو در آدرس بالا با ubuntu22.04 جایگزین کن.

نصب پکیج‌های Server، Frontend و Agent

sudo apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-sql-scripts zabbix-agent -y

نصب MySQL و ساخت دیتابیس

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;”

 

تنظیم فایل کانفیگ Zabbix Server

sudo nano /etc/zabbix/zabbix_server.conf

و مقدار زیر رو با پسورد واقعی جایگزین کن:

DBPassword=YourStrongPassword

تنظیم Timezone برای PHP

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 بالا می‌ره. این بخش، تنظیماتی رو پوشش می‌ده که این ریسک رو به حداقل می‌رسونه.

افزودن Swap (شبکه ایمنی در برابر کرش)

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

تیون‌کردن MySQL / InnoDB

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

تیون‌کردن Zabbix Server

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 Items

آیتم‌های لاگ (log[] و logrt[]) تاریخچه‌شون رو در جدول جداگانه‌ای ذخیره می‌کنن که خیلی سریع حجیم می‌شه. دو اقدام پیشنهادی:

●مدت زمان نگه‌داری تاریخچه (History storage period) رو برای آیتم‌های لاگ کوتاه نگه دار، مثلاً ۷ روز به‌جای ۹۰ روز پیش‌فرض.

●مطمئن شو Housekeeper فعال و به‌روز باشه تا دیتای قدیمی به‌موقع پاک بشه.

اتصال هشدارها به گروه تلگرام

در این بخش، مسیر کامل وصل‌کردن Alertهای Zabbix به یک گروه تلگرامی رو پوشش می‌دیم؛ از ساخت بات گرفته تا رفع خطاهای رایج تست وبهوک.

ساخت بات تلگرام

●در تلگرام به سراغ @BotFather برو

●دستور /newbot رو بفرست و یک اسم و یوزرنیم (که به bot ختم بشه) انتخاب کن

●توکنی که BotFather می‌ده رو در جایی امن ذخیره کن

افزودن بات به گروه هشدارها

●بات ساخته‌شده رو مثل یک عضو عادی به گروه اضافه کن

●مطمئن شو اجازه ارسال پیام داره (نیازی به دسترسی ادمین نیست)

پیدا کردن Chat ID گروه

یک پیام تستی در گروه بفرست، سپس آدرس زیر رو با توکن بات خودت باز کن:

curl “https://api.telegram.org/bot<TOKEN>/getUpdates

در خروجی JSON دنبال بخش chat بگرد؛ مقدار id (که با – شروع می‌شه چون گروهه) همون Chat ID مورد نیازه.

تعریف Media Type تلگرام در Zabbix

●مسیر: Alerts ← Media types ← Telegram

●توکن بات رو در فیلد Token وارد کن

●وضعیت رو روی Enabled بذار و ذخیره کن

ساخت یوزر اختصاصی برای دریافت هشدار

چون هشدار قراره به یک گروه بره نه یک شخص خاص، بهترین روش ساخت یک یوزر اختصاصی (مثلاً telegram-alerts) در Zabbix هست:

●مسیر: Users ← Users ← Create user

●یک Role مناسب با دسترسی به هاست‌های موردنظر بهش بده

 

افزودن Media به یوزر

در تب Media همون یوزر:

Type

Telegram

 

Send to

Chat ID گروه (مثلاً ‎-1001914725926)

 

When active

1-7,00:00-24:00

 

Use if severity

بسته به نیاز (مثلاً Warning به بالا)

 

Status

Enabled

ساخت Trigger Action

●مسیر: Alerts ← Actions ← Trigger actions ← Create action

●در تب Conditions، در صورت نیاز شرط severity رو تنظیم کن(مثلاً Warning یا بالاتر)

●در تب Operations، یوزر اختصاصی رو اضافه کن و Send only to رو روی Telegram بذار

●وضعیت Action رو Enabled کن و ذخیره کن

رفع خطاهای رایج تست Media Type

خطای: Incorrect “event_source” parameter given

این خطا در پنجره 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 این مقادیر رو با اطلاعات واقعی پر می‌کنه؛ پرکردن دستی فقط برای تست لازمه.

خطای: TypeError: undefined not callable (property ‘reduce’)

این خطا وقتی رخ می‌ده که مقدار event_tags به‌جای یک آرایه (Array)، به‌صورت یک شیء (Object) وارد شده باشه. اسکریپت وبهوک تلگرام روی این فیلد متد .reduce() صدا می‌زنه که فقط مخصوص آرایه‌هاست.

راه‌حل: مقدار فیلد event_tags رو از:

{}

به:

[]

تغییر بده (کروشه به‌جای آکولاد) و دوباره تست بگیر.

چک‌لیست نهایی

● Zabbix Server، Frontend و Agent نصب و روی سرویس‌ها enable شدن

●دیتابیس MySQL ساخته و اسکیما ایمپورت شده

●پسورد پیش‌فرض کاربر Admin تغییر کرده

●Swap و تنظیمات InnoDB/Zabbix برای محیط پرترافیک اعمال شده

●Media Type تلگرام ساخته و تست شده و پیام با موفقیت به گروه رسیده

●Trigger Action برای ارسال هشدارها به گروه تلگرام فعال شده

اشتراک‌گذاری در :

دیدگاهها

هیچ دیدگاهی برای این محصول نوشته نشده است.

اولین نفری باشید که دیدگاهی را ارسال می کنید برای “راهنمای کامل راه‌اندازی Zabbix روی اوبونتو و ارسال هشدارها به تلگرام”

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *