Monit چیست؟ آموزش نصب و پیکربندی ابزار مونیت در لینوکس
مونیت یک ابزار کاربردی و رایگان است که به مدیران سیستم، امکان مانیتورینگ و کنترل تمامی فرآیندها، فایلها، دایرکتوریها، دسترسیها و سرویسهایی مانند Apache، Nginx، MySQL، FTP، SSH و SMTP در سیستمهای بر پایه یونیکس / لینوکس را میدهد. این ابزار دارای رابط کاربری وب کاربرپسندی است که به کاربران اجازه میدهد وضعیت سیستم را به راحتی مشاهده کرده و با استفاده از یک سرور وب HTTP (S) یا رابط کاربری خط فرمان، فرآیندها را تنظیم کنند. این یک توضیح کلی برای سوال Monit چیست است که در ادامه بیشتر در این باره با شما گفت و گو می کنیم.
Monit یکی از بهترین و قدرتمندترین ابزارهای مانیتورینگ سرور و سیستم های لینوکس است که به شما امکان می دهد بتوانید خدمات مختلف مانندApache، Nginx، MySQL، FTP، SSH و SMTPرا مدیریت و نظارت کنید.
برای دسترسی به رابط کاربری وب مونیت، نیاز است که یک سرور وب مانند آپاچی یا Nginx بر روی سیستم نصب شده باشد که آموزش نصب و پیکربندی ابزار مانیتورینگ در لینوکس را در ادامه برایتان آورده ایم. پس اگر قصد دارید از این ابزار مانیتورینگ استفاده کنید، این مقاله را از دست ندهید. اما پیش از آن به فکر تهیه یک سرور مجازی لینوکس پرسرعت و با کیفیت باشید. برای این کار می توانید به صفحه خرید سرور مجازی لینوکس آسام سرور سر بزنید و پلن ایده آل خود را سفارش دهید.
Monit چه کارهایی می تواند انجام دهد؟
مونیت یک نرم افزار است که در صورتی که یک فرآیند اجرا نشد، یا در صورتی که فرآیندی پاسخگویی نکرد، دوباره آن را راهاندازی میکند. همچنین، اگر یک فرآیند منابع زیادی را استفاده کند، میتواند آن را متوقف کند. Monit همچنین قابلیت نظارت بر فایلها، دایرکتوریها و سیستمهای فایل را دارد و به شما امکان میدهد تا تغییراتی که در این فایلها و سیستمها اتفاق میافتد را مشاهده کنید. علاوه بر این، با Monit میتوانید پورتها (پورت TCP/IP)، پروتکلها و هاستهای راه دور را نظارت کنید. این نرم افزار گزارش خود را نگه میدارد و در صورتی که شرایط خطرناکی رخ دهد، به شما هشدار میدهد.
1. نصب Monit در لینوکس
به طور معمول، برنامهی Monit برای نظارت بر سیستم، در مخازن پایهی سیستم پیشفرض در دسترس نیست. برای نصب این برنامه بر روی توزیعهایی مانند CentOS، Rocky Linux و AlmaLinux، باید یک مخزن epel شخص ثالث را اضافه کنید و فعال کنید. سپس میتوانید بستهی Monit (تحت توزیعهای مبتنی بر RHEL مانند CentOS، Rocky Linux و AlmaLinux) را نصب کنید.
در سیستم های مبتنی بر RHEL 9
# dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
در سیستم های مبتنی بر RHEL 8
# dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
در سیستم های مبتنی بر RHEL 7
# yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
زمانی که مخزن epel را افزودید، می توانید از دستور yum استفاده کنید و بسته Monit را نصب کنید.
# yum install monitOR# dnf install monit [On <strong>Fedora Linux</strong>]
اگر از توزیع هایی مانند Ubuntu/Debian/Linux Mint استفاده می کنید، می توانید از دستور apt استفاده کنید و به راحتی مطابق با شکل زیر، نصب را انجام دهید.
$ sudo apt install monit
2. پیکربندی Monit در لینوکس
Monit راه بسیار سادهای برای پیکربندی دارد. فایلهای پیکربندی آن به سادگی خوانا و قابل درک برای همه کاربران هستند. این برنامه هر دو دقیقه یکبار به سرویسهای در حال اجرا نگاه میکند و گزارش آنها را در “/var/log/monit” ذخیره میکند.
Monit دارای یک رابط وب است که روی پورت 2812 با استفاده از وب سرور اجرا میشود. برای استفاده از رابط وب باید تغییراتی در فایل پیکربندی Monit ایجاد کنید.
فایل پیکربندی اصلی برنامه Monit در مسیر /etc/monit.conf برای سیستمهای RedHat، CentOS و Fedora قرار دارد و برای سیستمهایUbuntu، Debian و Linux Mint فایل /etc/monit/monitrc مورد استفاده قرار میگیرد. برای باز کردن این فایل، میتوانید از ویرایشگر دلخواه خود استفاده کنید.
# vi /etc/monitrc
Or
$ sudo nano /etc/monit/monitrc
در مرحله بعد، بخش زیر را حذف کنید و آدرس سایت یا آیپی سرور خودتان را وارد کنید. می توانید به افراد اجازه دهید که از یوزرنیم و پسورد “monit” استفاده کنه و بتواند تغییراتی را اعمال کند، یا اگر خواستید میتوانید از یوزرنیم و پسورد پیشفرض استفاده کنید.
set httpd port 2812 and
use address 0.0.0.0 # only accept connections from localhost
allow 0.0.0.0/0 # allow localhost to connect to the server and
allow admin:monit # require user 'admin' with password 'monit'
allow @monit # allow users of group 'monit' to connect (rw)
allow @users readonly # allow users of group 'users' to connect readonly
وقتی تنظیمات را پیکربندی کردید، باید سرویس “monit” رو راهاندازی کرده و فعال کنید تا تنظیمات جدید اعمال شوند.
# systemctl start monit
# systemctl enable monit
# systemctl status monit
در حال حاضر شما می توانید به آدرس های زیر بروید و به رابط وب monit دسترسی داشته باشید.
http://localhost:2812
OR
http://ip-address:2812
Or
http://example.com:2812
در قسمت نام کاربری admin را وارد کنید و در قسمت پسورد monit را وارد کنید. پس از آن باید یک خروجی مشابه با تصویر زیر دریافت کنید.
به شما الگوهایی برای نظارت بر روی سیستم با استفاده از برنامه Monit ارائه میشود. شما میتوانید با وارد کردن دستور زیر، لیستی از این الگوها را مشاهده کنید.
$ sudo ls -al /etc/monit/conf-available/
برای فعالسازی یک الگو، شما باید یک پیوند نمادین در فولدر “/etc/monit/conf-enabled/” با فرمت مورد نظرتان ایجاد کنید. به عنوان مثال:
$ sudo ln -s /etc/monit/conf-available/apache2 /etc/monit/conf-enabled/
شما میتوانید یک الگوی خاص در مسیر “/etc/monit/conf-available/” بسازید و یک لینک به آن در مسیر “/etc/monit/conf-enabled/” بسازید.
$ sudo vi /etc/monit/conf-available/proftpd
$ sudo ln -s /etc/monit/conf-available/proftpd /etc/monit/conf-enabled/
سرویس را دوباره راه اندازی کنید تا تغییرات اعمال شوند:
$ sudo systemctl reload monit
تست ویژگی راه اندازی مجدد سرویس
برای متوقف کردن سرویسی که توسط monit نظارت می شود، می توانید از دستور زیر استفاده کنید:
$ sudo systemctl stop proftpd
باید یک اعلان ایمیلی در مورد توقف سرویس دریافت کنید. در 120 ثانیه Monit سعی می کند سرویس را دوباره راه اندازی کند.
فایل log “/var/log/monit.log” است:
cat /var/log/monit.log
مرحله 3: افزودن خدمات لینوکس به نظارت بر مانیتورینگ
وقتی که رابطهای وب monit به درستی تنظیم شده باشند، میتوانید شروع کنید به اضافه کردن برنامههایی که میخواهید monit به آن ها نظارت کند. برای سیستمهای RedHat/CentOS/Fedora این برنامهها باید در فایل /etc/monitrc و برای سیستمهای Ubuntu/Debian/Linux Mint باید در فایل /etc/monit/monitrc اضافه شوند. در زیر چند نمونه تنظیمات مفید برای monit آورده شده که میتواند به شما در نمایش وضعیت یک سرویس، محل ذخیره فایلها، شروع و متوقف کردن یک سرویس و غیره، کمک کند.
مانیتور آپاچی در Monit
check process httpd with pidfile /var/run/httpd.pid
group apache
start program = "/usr/bin/systemctl httpd start"
stop program = "/usr/bin/systemctl httpd stop"
if failed host 127.0.0.1 port 80
protocol http then restart
if 5 restarts within 5 cycles then timeout
Apache2 را در Monit مانیتور کنید
check process apache with pidfile /run/apache2.pid
start program = "/usr/bin/systemctl apache2 start" with timeout 60 seconds
stop program = "/usr/bin/systemctl apache2 stop"
مانیتور Nginx در Monit
check process nginx with pidfile /var/run/nginx.pid
start program = "/usr/bin/systemctl nginx start"
stop program = "/usr/bin/systemctl nginx stop"
MySQL را در Monit مانیتور کنید
check process mysqld with pidfile /var/run/mysqld/mysqld.pid
group mysql
start program = "/usr/bin/systemctl mysqld start"
stop program = "/usr/bin/systemctl mysqld stop"
if failed host 127.0.0.1 port 3306 then restart
if 5 restarts within 5 cycles then timeout
SSH را در Monit مانیتور کنید
check process sshd with pidfile /var/run/sshd.pid
start program "/usr/bin/systemctl sshd start"
stop program "/usr/bin/systemctl sshd stop"
if failed host 127.0.0.1 port 22 protocol ssh then restart
if 5 restarts within 5 cycles then timeout
بر روی CentOS, RHEL: /etc/monit.conf
check process apache with pidfile /var/run/httpd.pid
start program = "/etc/init.d/httpd start" with timeout 60 seconds
stop program = "/etc/init.d/httpd stop"
بر روی Dabian/Ubuntu: /etc/monit/monitrc
check process apache with pidfile /run/apache2.pid
start program = "/etc/init.d/apache2 start" with timeout 60 seconds
stop program = "/etc/init.d/apache2 stop"
اکنون سرویس monit را با استفاده از سرویس monit restart مجدداً راه اندازی کنید و وضعیت سرویس را با استفاده از خط فرمان بررسی کنید.
# monit summary
The Monit daemon 5.1.1 uptime: 2m
Process 'apache' running
System 'svr1.tecadmin.net' running
زمانی که تمامی برنامهها را برای نظارت تنظیم کردید، دستور “monit” را برای چک کردن وجود خطا اجرا کنید. اگر خطایی پیدا کردید، باید آن را برطرف کنید. ولی نگران نباشید، فهمیدن اشتباهی که رخ داده خیلی سخت نیست. وقتی پیامی مثل “Control file syntax OK” دریافت کردید یا هیچ خطایی ندیدید، میتوانید به کارتان ادامه دهید.
# monit -t
Or
$ sudo monit -t
پس از آنکه تمامی خطاهای احتمالی را رفع کردید، می توانید از دستور زیر استفاده کنید تا سرویس monit را دوباره راه اندازی کنید.
# systemctl monit restart
OR
$ sudo systemctl monit restart
پس از آن که تمامی سرویس های لینوکس را برای نظارت افزودید، مانیتورینگ مانند زیر به نظر می رسد:
4. Monit را برای نظارت بر MySQL/MariaDB پیکربندی کنید
بیایید سرور MySQL را در فایل پیکربندی Monit اضافه کنیم تا آن را نظارت کنیم. دقت کنید که مکان فایل PID و اسکریپت init ممکن است مطابق با نسخه MySQL شما تغییر کند.
check process mysqld with pidfile /var/run/mysqld/mysqld.pid
start program = "/etc/init.d/mysql start"
stop program = "/etc/init.d/mysql stop"
5. تأیید پیکربندی و تست
پس از افزودن خدمات مورد نیاز در فایل پیکربندی مانیتورینگ، از دستور زیر برای بررسی نحو فایل استفاده کنید.
# monit -t
اکنون سرویس monit را مجددا راه اندازی کنید.
# service monit restart
اکنون خلاصه فرآیندها و خدمات نظارتی مونیت را مشاهده کنید.
# monit summary
The Monit daemon 5.1.1 uptime: 0m
Process 'apache' running
Process 'mysqld' running
System 'svr1.tecadmin.net' running
برای مشاهده توضیحات دقیق هر سرویس از دستور زیر استفاده کنید:
# monit status
نمونه خروجی
The Monit daemon 5.1.1 uptime: 1m
Process 'apache'
status running
monitoring status monitored
pid 16206
parent pid 1
uptime 13m
children 10
memory kilobytes 10432
memory kilobytes total 65100
memory percent 1.3%
memory percent total 8.3%
cpu percent 0.0%
cpu percent total 0.0%
data collected Tue Apr 29 03:49:13 2014
Process 'mysqld'
status running
monitoring status monitored
pid 1962
parent pid 1867
uptime 10h 38m
children 0
memory kilobytes 60568
memory kilobytes total 60568
memory percent 7.7%
memory percent total 7.7%
cpu percent 0.0%
cpu percent total 0.0%
data collected Tue Apr 29 03:49:13 2014
System 'svr1.tecadmin.net'
status running
monitoring status monitored
load average [0.00] [0.07] [0.08]
cpu 0.2%us 0.1%sy 0.2%wa
memory usage 518444 kB [66.7%]
data collected Tue Apr 29 03:49:13 2014
سخن آخر
به طور خلاصه، Monit یک ابزار مانیتورینگ قدرتمند برای سرورها و سیستم های لینوکس است که امکان نظارت و کنترل بر روی خدمات مختلف مانندApache، Nginx، MySQL، FTP، SSH و SMTP را فراهم می کند. البته در نظر داشته باشید که مونیت تنها یکی از ابزارهای مانیتورینگ است و ابزارهای زیادی در این زمینه وجود دارد که ما قبلا آن ها را در مقاله بهترین ابزارهای مانیتورینگ سرور در سال ۲۰۲۲ معرفی کرده ایم که می توانید به آن ها سر بزنید.
با استفاده از آموزش نصب و پیکربندی Monit در لینوکس، می توانید سیستم های خود را بهبود دهید و از عملکرد بهتر و پایدارتر سرویس های خدماتی خود مطمئن شوید و به راحتی سرویس های لینوکس خود را مانیتور کنید و در صورت بروز مشکل، به سرعت واکنش نشان دهید.. Monit به عنوان یک ابزار پیشرفته مانیتورینگ، امکان کنترل و پیکربندی متنوعی را برای مدیریت سرورها و سرویس های لینوکس فراهم می کند. از طریق تنظیمات و پیکربندی های مناسب درMonit، می توانید از عملکرد بهینه و ایمن سیستم خود اطمینان حاصل کنید. پس از نصب و پیکربندی Monit، می توانید با استفاده از قابلیت های پیشرفته این ابزار، خدمات خود را بررسی کرده و به صورت خودکار تمام رخدادها را بررسی و مدیریت کنید.
سوالات متداول:
کاربردهای مونیت چیست؟
Monit یک نرمافزار است که به شما امکان مانیتورینگ و نظارت بر فرآیندها و سرویسهای سیستم عامل را میدهد. این نرمافزار در صورت بروز خطا یا مشکل در یک فرآیند، آن را به طور خودکار راه اندازی مجدد میکند و در صورت نیاز، شما را از طریق ایمیل مطلع میکند. همچنین Monit قابلیت مدیریت و نظارت بر سیستمهای کامپیوتری توزیع شده را نیز دارد.
نحوه عملکرد Monit در لینوکس چگونه است؟
برای تست یک برنامه یا اسکریپت در یک زمان خاص باMonit، میتوانید نتیجه اجرای برنامه را بررسی کنید. در صورتی که نتیجه نشان دهنده وجود خطا باشد، میتوانید اعلانهای هشدار را فعال کنید. Monit قادر است برای نظارت و مدیریت هر نوع سیستم یا برنامهای از طریق نوشتن یک اسکریپت، استفاده شود.