مراقبت از سرور و بررسی شرایط سرویسهای مختلف و یافتن دلیل احتمالی مشکلات پیشآمده، استفاده از ابزارهای نظارتی را الزامی میکند. از بین ابزارهای رایگان و متنباز نظارتی، Munin را انتخاب کردهام چرا که یکی از سادهترین مراحل نصب و راهاندازی را داشته و در عین حال گزارش کاملی از منابع سرور و کارکرد سرویسها در اختیارمان میگذارد. در این نوشته از دو سرور نام خواهیم برد، سرور مرکزی که سیستم عامل ابونتو ۱۴.۰۴ دارد و سرور مورد نظارت که دبیان ۸.۲ است.
برای اینکه دیدی از شیوه عملکرد و رابطه بین سرور مرکزی و سرور مورد نظارت داشته باشید، به تصویر زیر نگاهی بیاندازید. به صورت خلاصه میتوان گفت که نسخه کلاینت Munin در هر سیستم کار جمعآوری دادهها را بر عهده داشته و سرور مرکزی در بازههای زمانی مشخص به هر سرور مورد نظارت متصل شده و این دادهها را دریافت میکند.
سرور مرکزی:
ابتدا میبایست پیش نیازهای لازم جهت برپایی وب سرور و نیز نمایش گرافها را نصب کنیم.
1 2 3 |
sudo apt update && upgrade sudo apt install apache2 apache2-utils sudo apt install libcgi-fast-perl libapache2-mod-fcgid |
پس از نصب ماژول fcgid باید از فعال شدنش مطمئن شویم. بنابراین با دستور زیر آن را فعال میکنیم.
1 |
sudo a2enmod fcgid |
حال زمان نصب munin است.
1 |
sudo apt install munin |
در این مرحله می بایست تنظیمات munin را اصلاح کنیم. با دستور زیر، فایل متنی تنظیمات را باز میکنیم.
1 |
sudo nano /etc/munin/munin.conf |
در فایل تنظیمات، با حذف علامت # از ابتدای خطهای زیر، آنها را فعال میکنیم.
1 2 3 4 5 6 |
dbdir /var/lib/munin htmldir /var/www/munin logdir /var/log/munin rundir /var/run/munin tmpldir /etc/munin/templates |
توجه داشته باشید که مسیر مشخص شده برای htmldir، مطابق با تنظیمات وب سرور باشد. برای مثال مسیر پیش فرض وب سروری که من استفاده می کنم /var/www/html/ است پس مسیر htmldir را به صورت زیر وارد کردم.
1 |
htmldir /var/www/html/munin |
حال باید محل تعیین شده در فایل تنظیمات را ایجاد کنیم و دسترسی لازم را به آن بدهیم.
1 2 |
sudo mkdir /var/www/munin sudo chown munin:munin /var/www/munin |
مجددا یادآوری میکنم که مسیر و دسترسیها بسته به تنظیمات وب سرور ممکن است متفاوت باشد.
حال زمان اضافه کردن سیستمهای مورد نظارت به فایل تنظیمات است. مجددا این فایل را با ویرایشگر متنی باز میکنیم و با ساختار زیر، هر سیستم را اضافه میکنیم.
1 2 3 |
[localhost.localdomain] address 127.0.0.1 use_node_name yes |
یک نمونه از این ساختار به صورت پیشفرض در فایل تنظیمات موجود است. همانطور که حدس میزنید با توجه به IP تعیین شده، اولین سیستم مورد نظارت، خود سرور مرکزی است. میتوانیم با تغییر localhost.localdomain به اسم دلخواه، نمایش اسامی در خروجی نهایی را مناسبتر کنیم.
با فرض اینکه IP سیستم مورد نظارت ۱۹۲.۱۶۸.۱۰.۱۰ باشد، کد زیر را به تنظیمات اضافه میکنیم.
1 2 3 |
[Client1] address 192.168.10.10 use_node_name yes |
در اینجا کار تنظیمات munin در سرور مرکزی به پایان رسیده. پس از اصلاح تنظیمات آپاچی (وب سرور مورد استفاده)، سراغ سیستم مورد نظارت خواهیم رفت.
تنظیمات وب سرور پیشفرض در munin، با مسیری که پیش از این تعیین کردهایم تفاوت دارد. بنابرین با ویرایشگر متنی این فایل را باز میکنیم.
1 |
sudo nano /etc/munin/apache.conf |
سپس مسیرهای ذخیره فایلهای html را که پیش از تعیین کردهایم، در این فایل وارد میکنیم.
1 |
Alias /munin /var/www/munin |
خط بالا مشخص می کند که برای نمایش آمار munin آدرس http://192.168.0.1/munin کدام دایرکتوری سرور می بایست استفاده شود. (فرض میکنیم که IP سرور مرکزی ۱۹۲.۱۶۸.۰.۱ باشد)
همچنین باید مسیر مشخص شده در بخش Directory و دسترسیهای آن را مطابق اطلاعات زیر اصلاح کنیم.
1 2 3 4 5 6 7 8 9 10 11 12 |
<Directory /var/www/munin> #Order allow,deny #Allow from localhost 127.0.0.0/8 ::1 #Allow from all #Options None Require all granted Options FollowSymLinks SymLinksIfOwnerMatch ... ... |
همانگونه که مشاهده میکنید، خطهای ابتدایی با استفاده از علامت # کامنت شدهاند و دستورات جایگزین در ادامه آمده است.
مشابه روند بالا را در مورد Location های زیر نیز انجام میدهیم.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
<Location /munin-cgi/munin-cgi-graph> #Order allow,deny #Allow from localhost 127.0.0.0/8 ::1 Require all granted Options FollowSymLinks SymLinksIfOwnerMatch ... ... #Order allow,deny #Allow from localhost 127.0.0.0/8 ::1 Require all granted Options FollowSymLinks SymLinksIfOwnerMatch ... ... |
در انتها سرویسهای وبسرور و munin را راهاندازی مجدد میکنیم تا تغییراتی که در تنظیمات دادهایم، اعمال شود.
1 2 |
sudo service apache2 restart sudo service munin-node restart |
با مراجعه به آدرس http://192.168.0.1/munin می توانیم اطلاعات گرداوری شده را مشاهده کنیم. توجه داشته باشد که ۱۹۲.۱۶۸.۰.۱ را با IP سرور مرکزی جایگزین کنید.
سرور مورد نظارت:
نصب و راه اندازی munin روی سرور مورد نظارت زمان کمتری میبرد.
1 2 |
apt update && upgrade apt install munin-node |
پس از نصب، با ویرایشگر متنی، فایل تنظیمات را باز میکنیم.
1 |
nano /etc/munin/munin-node.conf |
در این مرحله می بایست به munin در سرور مورد نظارت بگوییم که اجازه دسترسی به کدام سرورها را بدهد تا اطلاعات سرور در اختیار همگان نباشد. اگر فرض کنیم که IP سرور مرکزی ۱۹۲.۱۶۸.۰.۱ باشد، با اضافه کردن کد زیر به تنظیمات، اجازه دسترسی را به این سرور میدهیم.
1 2 |
allow ^192\.168\.0\.1$ cidr_allow 192.168.0.1/32 |
در انتهای فایل، خط زیر را یافته و با علامت # کامنت میکنیم و IP خارجی سرور مورد نظارت را جاگزین میکنیم. (در اینجا ۱۹۲٫۱۶۸٫۱۰٫۱۰ فرض شده است)
1 2 |
#host * host 192.168.10.10 |
در پایان، سرویس munin را راه اندازی مجدد می کنیم.
1 |
service munin-node restart |
پلاگین های تکمیلی munin:
munin از مجموعه کدها و پلاگینهای جانبی برای جمع آوری داده استفاده میکند. با دستور زیر میتوانید پلاگینهای فعال و غیر فعال را مشاهده کنید.
1 |
munin-node-configure --suggest |
خروجی چیزی شبیه جدول زیر خواهد بود.
1 2 3 4 5 6 7 8 9 10 |
Plugin | Used | Suggestions ------ | ---- | ----------- cps_ | no | no cpu | yes | yes cpuspeed | no | no [missing /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state] cupsys_pages | no | no [could not find logdir] df | yes | yes df_inode | yes | yes fail2ban | no | yes ip_ | no | yes |
ستون used مشخص میکند که پلاگین فعال است یا خیر. ستون suggestions نمایشگر پیشنهاد یا عدم پیشنهاد فعال کردن آن پلاگین است.
برای فعال کردن اتوماتیک همه پیشنهادها می توانید از کد زیر استفاده کنید.
1 |
munin-node-configure --suggest --shell | sudo sh |
خطایابی:
از مسیرهای زیر می توانید به لاگهای munin دسترسی داشته باشید و اخطارهای احتمالی را مشاهده کنید.
مشاهده ۲۰ خط آخر لاگ در سرور مرکزی:
1 |
tail /var/log/munin/munin-update.log -n 20 |
مشاهده ۲۰ خط آخر لاگ در سرور مورد نظارت:
1 |
tail /var/log/munin/munin-node.log -n 20 |
رفع مشکل MySQL:
در برخی از سرورها با مشکل در جمع آوری داده های MySQL مواجه شدم. میتوانید با نصب بستههای مورد نیاز، فعال کردن پلاگین مربوطه و نهایتا راه اندازی مجدد munin، مشکل را حل کنید.
1 2 3 |
apt install libcache-{perl,cache-perl} munin-node-configure --suggest --shell | sh service munin-node restart |
نکته: در صورتی که از فایروال استفاده می کنید می بایست پورت ۴۹۴۹ در سرور مرکزی و سرور مورد نظارت، باز باشد. برای نمونه در IPtables از دستور زیر برای باز کردن پورت ۴۹۴۹ با پروتکل TCP استفاده کردم.
1 |
iptables -I INPUT -p tcp -m tcp --dport 4949 -j ACCEPT |
منابع:
https://www.digitalocean.com/community/tutorials/how-to-install-the-munin-monitoring-tool-on-ubuntu-14-04
http://munin-monitoring.org/wiki/munin-node.conf
http://munin-monitoring.org/wiki/MuninInstallationDarwin
https://raymii.org/s/snippets/Munin-Fix-MySQL-Plugin-on-Ubuntu-12.04.html