معرفی Zabbix
Zabbix نرم افزار مانیتورینگ منبع باز برای شبکه ها و برنامه ها است . این برنامه نظارت Real-Time بر روی هزاران metrics (معیارها) جمع آوری شده از سرورها، ماشین های مجازی، دستگاه های شبکه و web applications را ارائه می دهد. این معیارها می تواند به شما کمک کند تا سلامت فعلی زیرساخت فناوری اطلاعات خود اطلاع پیدا کنید و قبل از شکایت مشتریان، مشکلات مربوط به قطعات سخت افزاری یا نرم افزاری را شناسایی کنید. اطلاعات مفید در یک پایگاه داده ذخیره می شود تا بتوانید داده ها را در طول زمان تجزیه و تحلیل کنید و کیفیت خدمات ارائه شده را بهبود بخشید یا برنامه ارتقای تجهیزات خود را برنامه ریزی کنید.
Zabbix از چندین گزینه برای جمع آوری معیارها استفاده می کند، از جمله نظارت agentless بر خدمات کاربر و معماری client-server . برای جمع آوری معیارهای سرور، از یک agent روی کلاینت مانیتورشده برای جمع آوری داده ها و ارسال آن به سرور Zabbix استفاده می کند Zabbix. از ارتباطات رمزگذاری شده بین سرور و کلاینت های متصل پشتیبانی می کند، بنابراین داده های شما در حین عبور از شبکه های ناامن محافظت می شوند.
سرور Zabbix داده های خود را در یک پایگاه داده relational ذخیره می کند که توسط MySQL یا PostgreSQL پشتیبانی می شود . همچنین می توانید داده های تاریخی را در پایگاه های داده NoSQL مانند Elasticsearch و TimescaleDB ذخیره کنید Zabbix. یک رابط وب فراهم می کند تا بتوانید داده ها را مشاهده کرده و تنظیمات سیستم را پیکربندی کنید.
در این آموزش، Zabbix را روی دو ماشین اوبونتو ۲۰.۰۴ پیکربندی خواهید کرد. یکی به عنوان سرور Zabbix پیکربندی می شود و دیگری به عنوان یک کلاینت که شما نظارت خواهید کرد. سرور Zabbix از پایگاه داده MySQL برای ضبط داده های نظارت و استفاده از Nginx برای ارائه رابط وب استفاده می کند.
پیش نیازها
برای دنبال کردن این آموزش، شما نیاز دارید:
- دو سرور Ubuntu 20.04 با پیروی از Initial Server Setup Guide برای Ubuntu 20.04راه اندازی شده است ، شامل یک کاربر غیر root با دسترسی های sudo و یک فایروال پیکربندی شده با ufw. در یک سرور، Zabbix را نصب خواهید کرد.
- سروری که سرور Zabbix را اجرا خواهد کرد نیاز به نصب Nginx، MySQL و PHP دارد. مراحل ۱ تا ۳ راهنمای Ubuntu 20.04 LEMP Stack رابرای پیکربندی آن ها در سرور Zabbix خود دنبال کنید.
- یک نام دامنه ثبت شده . که در این آموزش از your_domain استفاده خواهد شد. می توانید یک نام دامنه را از Namecheapخریداری کنید ، یک نام دامنه را به صورت رایگان با Freenom دریافت کنید ، یا از ثبت کننده دامنه انتخابی خود استفاده کنید.
- هر دو رکورد DNS زیر برای سرور Zabbix شما تنظیم شده است.
- یک A رکورد که(نام دامنه شما)your_domain شما راه به IP public سرور Zabbix تان تبدیل کند.
- یک A رکورد که your_domainرا به آدرس IP public سرور Zabbix شما تبدیل کند.
علاوه بر این، از آنجایی که سرور Zabbix برای دسترسی به اطلاعات ارزشمند در مورد زیرساخت شما استفاده می شود که نمی خواهید کاربران غیرمجاز به آن دسترسی داشته باشند، مهم است که سرور خود را با نصب یک گواهی TLS/SSL ایمن نگه دارید. این اختیاری است اما حتما پیشنهاد می شود. اگر می خواهید سرور خود را ایمن کنید، راهنمای Let’s Encrypt on Ubuntu 20.04 را بعد از مرحله ۳ این آموزش دنبال کنید.
مرحله ۱ – نصب سرور Zabbix
ابتدا باید Zabbix را روی سروری که MySQL، Nginx و PHP را نصب کرده اید، نصب کنید. با کاربر غیر root خود وارد این دستگاه شوید:
ssh sajad@zabbix_server_ip_address
Zabbix در package manager اوبونتو موجود است، اما قدیمی است، بنابراین بهتره از repository رسمی Zabbix برای نصب آخرین نسخه پایدار استفاده کنید. بسته پیکربندی repository را دانلود و نصب کنید:
wget https://repo.zabbix.com/zabbix/5.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.0-1+focal_all.deb
sudo dpkg -i zabbix-release_5.0-1+focal_all.deb
خروجی زیر را خواهید دید:
Output Selecting previously unselected package zabbix-release. (Reading database ... 64058 files and directories currently installed.) Preparing to unpack zabbix-release_5.0-1+focal_all.deb ... Unpacking zabbix-release (1:5.0-1+focal) ... Setting up zabbix-release (1:5.0-1+focal) ...
فهرست package ها را به روز کنید تا repository جدید جایگزین شود:
sudo apt update
سپس سرور Zabbix و frontend را با پشتیبانی از پایگاه داده MySQL نصب کنید:
sudo apt install zabbix-server-mysql zabbix-frontend-php
همچنین، Zabbix Agent را نصب کنید، که به شما این امکان را می دهد اطلاعات مربوط به وضعیت خود سرور Zabbix را جمع آوری کنید.
sudo apt install zabbix-agent
قبل از اینکه بتوانید از Zabbix استفاده کنید، باید یک پایگاه داده برای نگهداری داده هایی که سرور Zabbix از agent های خود جمع آوری می کند، راه اندازی کنید. در مرحله بعد می توانید این کار را انجام دهید.
مرحله ۲ – پیکربندی پایگاه داده MySQL برای Zabbix
شما باید یک پایگاه داده MySQL جدید ایجاد کنید و آن را با برخی از اطلاعات اولیه پر کنید تا آن را برای Zabbix آماده کنید. شما همچنین یک کاربر خاص برای این پایگاه داده ایجاد می کنیم تا Zabbix با حساب کاربری root به MySQL وارد نشود .
به عنوان کاربر اصلی وارد MySQL شوید :
sudo mysql
پایگاه داده به نام Zabbix را با پشتیبانی از کاراکترهای UTF-8 ایجاد کنید:
create database zabbix character set utf8 collate utf8_bin;
سپس کاربری ایجاد کنید که سرور Zabbix از آن استفاده کند و به آن دسترسی به پایگاه داده جدید را بدهید یک رمز عبور را برای کاربر تنظیم کنید:
create user zabbix@localhost identified by 'your_zabbix_mysql_password';
grant all privileges on zabbix.* to zabbix@localhost;
که از کاربر و پایگاه داده مراقبت می کند. سپس از کنسول پایگاه داده خارج شوید.
quit;
در مرحله بعد باید (schema) ساختار داده اولیه را وارد کنید. نصب Zabbix فایلی را در اختیار شما قرار داده که این را برای ما انجام میدهد.
دستور زیر را برای تنظیم schema و وارد کردن داده ها در پایگاه داده zabbix اجرا کنید. از آنجایی که داده های فایل فشرده شده است از کامند zcat استفاده کنید :
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
سپس رمز عبورکاربر zabbix در MySQL را که بالاتر تنظیم کرده اید را وارد کنید.
اجرای این دستور ممکن است یک یا دو دقیقه طول بکشد. اگر خطا را مشاهده کردید ERROR 1045 (28000): Access denied for user “zabbix“@’localhost’ (using password: YES)، مطمئن شوید که از رمز عبور کاربر zabbix را صحیح وارد کرده اید .
برای اینکه سرور Zabbix بتواند از این پایگاه داده استفاده کند، باید رمز عبور پایگاه داده را در فایل کانفیگ سرور Zabbix تنظیم کنید. فایل پیکربندی را در ویرایشگر متن دلخواه خود باز کنید. در این آموزش ما از nano استفاده میکنیم:
sudo nano /etc/zabbix/zabbix_server.conf
به دنبال بخش زیر از فایل بگردید:
/etc/zabbix/zabbix_server.conf
### Option: DBPassword
# Database password. Ignored for SQLite.
# Comment this line if no password is used.
#
# Mandatory: no
# Default:
# DBPassword=
این comment ها در فایل نحوه اتصال به پایگاه داده را توضیح می دهد. شما باید DBPassword موجود در فایل را همان رمز عبور کاربر دیتابیس تنظیم کنید.
/etc/zabbix/zabbix_server.conf
DBPassword=your_zabbix_mysql_password
اگر از nano استفاده می کنید با فشار دادن CTRL+Xو سپس Yو سپس ENTER فایل zabbix_server.conf را ذخیره کنید و ببندید.
حالا شما سرور Zabbix را برای اتصال به پایگاه داده تنظیم کرده اید. در مرحله بعد، وب سرور Nginx را برای سرویس دهی Zabbix frontend تنظیم خواهیم کرد.
مرحله ۳ – پیکربندی Nginx برای Zabbix
برای پیکربندی خودکار Nginx، به صورت زیر بسته پیکربندی خودکار آن را نصب کنید:
sudo apt install zabbix-nginx-conf
بعد از اتمام نصب فایل کانفیگ در پوشه کانفیگ (nginx ( /etc/zabbix/nginx.conf ایجاد میشود.
در مرحله بعد، باید تغییراتی در این فایل ایجاد کنید. فایل پیکربندی را باز کنید:
sudo nano /etc/zabbix/nginx.conf
فایل حاوی یک پیکربندی بلوک سرور Nginx است که به طور خودکار ایجاد می شود که شامل دو خط است که نام سرور و پورتی که به آن گوش می دهد را تعیین می کند:
/etc/zabbix/nginx.conf
server {
# listen ۸۰;
# server_name example.com;
نامه دامنه خود را جایگزین example.com کنید به صورت زیر :
/etc/zabbix/nginx.conf
server {
listen ۸۰;
server_name your_domain;
سپس فایل را ذخیره کنید و ببندید. در مرحله بعد، آزمایش کنید تا مطمئن شوید در هیچ یک از فایل های Nginx شما خطای syntax وجود ندارد و تنظیمات را reload کنید:
sudo nginx -t
sudo nginx -s reload
اکنون که Nginx برای سرویس دهی به Zabbix frontend راه اندازی شده است، برای اینکه رابط وب Zabbix به درستی کار کند، تغییراتی در تنظیمات PHP خود باید ایجاد کنیم.
توجه: همانطور که در قسمت پیش نیازها ذکر شد، توصیه می شود SSL/TLS را روی سرور خود فعال کنید. اگر میخواهید این کار را انجام دهید، قبل از رفتن به مرحله ۴ برای دریافت گواهی رایگان SSL برای Nginx، آموزش Ubuntu 20.04 Let’s Encrypt ما را دنبال کنید. این فرآیند به طور خودکار سرور Zabbix شما را شناسایی کرده و آن را برای HTTPS پیکربندی می کند. پس از دریافت گواهینامه های SSL/TLS، می توانید ادامه آموزش را دنبال کنید.
مرحله ۴ – پیکربندی PHP برای Zabbix
رابط کاربری Zabbix به زبان PHP نوشته شده است و به برخی تنظیمات خاص سرور PHP نیاز دارد. فرآیند نصب Zabbix یک فایل پیکربندی PHP-FPM ایجاد کرد که حاوی این تنظیمات است. این فایل در دایرکتوری/etc/zabbix قرار دارد و به طور خودکار توسط PHP-FPM بارگذاری می شود. شما باید یک تغییر کوچک در این فایل ایجاد کنید، بنابراین آن را با موارد زیر باز کنید:
sudo nano /etc/zabbix/php-fpm.conf
فایل حاوی تنظیمات PHP است که شرایط لازم برای رابط وب Zabbix را برآورده می کند. با این حال، تنظیم منطقه زمانی به طور پیش فرض توضیح داده می شود. برای اطمینان از اینکه Zabbix از زمان صحیح استفاده می کند، باید منطقه زمانی مناسب را تنظیم کنید:
/etc/zabbix/php-fpm.conf
php_value[max_execution_time] = 300
php_value[memory_limit] = 128M
php_value[post_max_size] = 16M
php_value[upload_max_filesize] = 2M
php_value[max_input_time] = 300
php_value[max_input_vars] = 10000
; php_value[date.timezone] = Europe/Riga
Timezone که در بالا مشاهده میکنید را از کامنت خارج کنید و به آن را به منطقه زمانی خود تغییر دهید. می توانید از این لیست از مناطق زمانی پشتیبانی شده استفاده کنید تا منطقه مناسب خود را پیدا کنید. سپس فایل را ذخیره کرده و ببندید.
اکنون PHP-FPM را مجددا راه اندازی کنید تا این تنظیمات جدید اعمال شود:
sudo systemctl restart php7.4-fpm.service
اکنون می توانید سرور Zabbix را راه اندازی کنید:
sudo systemctl start zabbix-server
سپس بررسی کنید که آیا سرور Zabbix به درستی اجرا می شود یا خیر:
sudo systemctl status zabbix-server
وضعیت زیر را مشاهده خواهید کرد:
Output
zabbix-server.service - Zabbix Server
Loaded: loaded (/lib/systemd/system/zabbix-server.service; disabled; vendor preset: enabled)
Active: active (running) since Fri 2020-06-12 05:59:32 UTC; 36s ago
Process: 27026 ExecStart=/usr/sbin/zabbix_server -c $CONFFILE (code=exited, status=0/SUCCESS)
در نهایت، سرور را فعال کنید تا در زمان بوت به طور خودکار start شود:
sudo systemctl enable zabbix-server
سرور راه اندازی شد و به پایگاه داده متصل شده. در مرحله بعد، صفحه وب را راه اندازی میکنیم.
مرحله ۵ – پیکربندی تنظیمات برای رابط وب Zabbix
رابط وب به شما امکان میدهد گزارشها را ببینید و host هایی را که میخواهید نظارت کنید اضافه کنید، اما قبل از اینکه بتوانید از آن استفاده کنید نیاز به تنظیمات اولیه دارد. مرورگر خود را اجرا کنید و به آدرس http://zabbix_server_nameیا اگر Let’s Encrypt را راه اندازی کرده اید https://zabbix_server_name بروید. در صفحه اول، پیام خوش آمدگویی را مشاهده میکنید. برای ادامه روی Next کلیک کنید .
در صفحه بعدی، جدولی را مشاهده می کنید که تمام پیش نیازهای اجرای Zabbix را فهرست می کند.
همه مقادیر در این جدول باید OK باشند ، حتماً تا پایین همه پیش نیازها را بررسی کنید که ok باشند. هنگامی که تأیید کردید که همه چیز آماده است، برای ادامه روی NEXT کلیک کنید.
صفحه بعدی اطلاعات اتصال به پایگاه داده را می خواهد.
شما به سرور Zabbix در مورد پایگاه داده خود گفتید، اما رابط وب Zabbix نیز برای مدیریت هاست و خواندن داده ها نیاز به دسترسی به پایگاه داده دارد. بنابراین رمز عبور MySQL را که در مرحله ۲
پیکربندی کرده اید وارد کنید. برای ادامه روی Next کلیک کنید.
در صفحه بعدی، می توانید گزینه ها را در مقادیر پیش فرض خود بگذارید.
.
تغییر نام اختیاری است . در رابط وب برای تشخیص یک سرور از سرور دیگر در مواردی که چندین سرور مانیتورینگ دارید استفاده می شود. برای ادامه روی Next کلیک کنید .
صفحه بعدی خلاصه پیش از نصب را نشان می دهد تا بتوانید تأیید کنید همه چیز درست است.
برای رفتن به صفحه نهایی روی Next step کلیک کنید .
راه اندازی رابط وب اکنون کامل شده است. این فرآیند فایل پیکربندی را ایجاد می کند /usr/share/zabbix/conf/zabbix.conf.php که می توانید از آن نسخه پشتیبان تهیه کرده و در آینده از آن استفاده کنید. روی Finish کلیک کنید تا وارد صفحه ورود به سیستم شوید. کاربر پیش فرض Admin و رمز عبور zabbix است .
قبل از اینکه وارد شوید، Zabbix Agent را در سرور اوبونتو دیگر خود راه اندازی کنید.