فروردین ۱۶ ۱۳۹۷

نصب collectd و collection3 به همراه nginx

مانیتورینگ

یکی از ابزارهای مهم در Capacity Planning سرور ابزارهای Monitoring هستند. تعداد زیادی نرم‌افزار و سرویس برای Monitoring سخت افزار، سیستم عامل و سرویس ها وجود دارد. در اینجا نرم افزار Collectd را معرفی می‌کنم که یک نرم افزار ساده با کلی پلاگین آماده است که می یاد از منابع مورد نظر شما، شروع به جمع آوری اطلاعات می کنه و در فایل‌های rrd ذخیره می کنه. این فایل‌ها را می توان به نمودار تبدیل کرد و یا خروجی xml ازشون گرفت.

داخل پروژه Collectd در github ابزاری که با perl نوشته شده وجود دارد به نام collection3 که به شما اینترفیس تحت وبی از داده های Collectd می دهد. متاسفانه به دلیل آنکه وابستگی های لازم برای راه اندازی Collection3 نیاز است در CentOS وجود ندارد، Collection3 در CentOS از بسته Collectd حذف شده است. این راهنما به شما کمک می کند تا Collection3 را هم در Debin/Ubuntu و هم در CentOS نصب کنید.

توجه: این راهنما برای دانشجویان دوره LPIC2 تهیه شده ولی سعی شده به صورت کلی نوشته بشه که همه بتونند استفاده کنند.

نصب collectd و nginx در Debian/Ubuntu

# apt-get install collectd nginx

نصب collectd و nginx در CentOS 7.x

در CentOS پلاگین‌های Collectd را باید جدا نصب کنید. برخلاف Debian که به همراه بسته اصلی نصب می شوند. در اینجا سه پلاگین rrd و apache و mysql را برای نمونه نصب کردیم.

# yum install epel-release

# yum install collectd collectd-rrdtool collectd-apache collectd-mysql nginx

پیکربندی Collectd

در این مقاله به پیکربندی Collectd نخواهیم پرداخت. دوستانی که در دوره LPIC2 حضور داشتند مطمئنا پیش زمینه لازم برای پیکربندی collectd را دارند. شاید در مطلب جدایی در مورد پیکربندی Collectd هم صحبت کردم.
تنها موضوعی که باید در تنظیمات حتما انجام بدید فعال کردن ماژول rrd هست.

 

نصب Collection3 در Debian/Ubuntu

در توزیع‌های Debian base بسته collectd به صورت کامل نصب می شود و در فایل‌های مرتبط با آن collection3 نیز موجود است. پس تنها برای استفاده از collection3 کافیه وابستگی های اون را هم نصب کنید و بعد nginx را پیکربندی کنید.

# apt-get install  librrds-perl libconfig-general-perl libhtml-parser-perl libregexp-common-perl libjson-perl
# cp -r /usr/share/doc/collectd/examples/collection3 /var/www/html/

 

نصب Collection3 در CentOS 7.x

چون Collection3 در بسته collectd موجود در مخازن epel حذف شده است، باید source کامل بسته collectd را بگیرید و فایل‌های collection3 را از source آن در پوشه nginx کپی کنید.

# cd /usr/src
# git clone https://github.com/collectd/collectd.git
# cp -r /usr/src/collectd/contrib/collection3 /var/www/html/

 

پیکربندی nginx

من برای صفحه مانیتورینگ سرور یک دامنه اختصاص دادم به اسم monitor.linuxmotto.local و تنظیمات nginx بر مبنای اون نوشتم. این دامنه خوب قطعا وجود نداره برای همین حتما تو etc/hosts/ اضافه اش کنید.
در ضمن در Debian باید تو پوشه etc/nginx/sites-available/ یک فایل conf. بسازید و این تنظیمات را اضافه کنید و در CentOS در پوشه etc/nginx/conf.d/

server {
listen 80;
server_name monitor.linuxmotto.local;

location ~ .cgi$ {
root /var/www/html/collection3/;
expires off;
fastcgi_pass unix:/var/run/fcgiwrap.socket;
fastcgi_index index.cgi;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}

location / {
root /var/www/html/collection3;
index bin/index.cgi;
}
}

 

نصب وابستگی های مورد نیاز collection3

این بخش از راهنما مخصوص توزیع CentOS است. و به این دلیل است که fcgi در nginx در توزیع Centos پشتیبانی نمی شود.

# yum install perl-FCGI perl-HTML-Parser rrdtool-perl perl-Config-General lm_sensors collectd-rdis collectd-rrdtool perl fcgi-devel spawn-fcgi perl-Collectd collectd-nginx collectd-mysql

 

نصب fcgiwrap در CentOS 7

# yum install dh-autoreconf fcgi-devel pkgconfig
# cd /usr/local/src/
# git clone git://github.com/gnosek/fcgiwrap.git
# cd fcgiwrap/
# autoreconf
# ./configure
# make
# make install

اگر به خطای زیر خوردید مطمئن شوید که pkgconfig به درستی نصب شده است و دستور autoreconf -i را به جای autoconf برای تکرار روند انجام دهید

# autoconf
configure.ac:32: error: possibly undefined macro: AC_DEFINE
If this token and others are legitimate, please use m4_pattern_allow.
See the Autoconf documentation.
configure.ac:39: error: possibly undefined macro: AM_CONDITIONAL

# autoreconf -i

# yum install spawn-fcgi

# vi /etc/sysconfig/spawn-fcgi
FCGI_SOCKET=/var/run/fcgiwrap.socket
FCGI_PROGRAM=/usr/local/sbin/fcgiwrap
FCGI_USER=apache
FCGI_GROUP=apache
FCGI_EXTRA_OPTIONS=”-M 0770″
OPTIONS=”-u $FCGI_USER -g $FCGI_GROUP -s $FCGI_SOCKET -S $FCGI_EXTRA_OPTIONS -F 1 -P /var/run/spawn-fcgi.pid — $FCGI_PROGRAM”

# usermod -a -G apache nginx
# systemctl enable spawn-fcgi
# systemctl start spawn-fcgi

بعد از همه این کارها سرویس‌ها را ریستارت کنید.

systemctl restart nginx collectd

الان باید تو مرورگرتون به collection3 از طریق آدرس monitor.linuxmotto.local دسترسی داشته باشید.


دی ۱۲ ۱۳۹۶

راه اندازی صفحه status سرویس nginx

خیلی از سرویس‌ها یک صفحه status دارند که به شما وضعیت فعلیشون شامل چیزایی مثلا تعداد درخواست همزمان، درخواست های در حال اتمام و از این قبیل را می دهند.

سرویس nginx هم یه صفحه status داره . تنها مشکلش اینه که نسخه غیر تجاریش دارای صفحه status خیلی کوچیکیه و داده زیادی در اختیار نمی ده ؛ برخلاف Nginx Plus که صفحه status مفصلی داره.

برای فعال کردن صفحه status سرویس nginx کانفیگ زیر را به یکی از virtualhost هاتون اضافه کنید (virtualhost پیشفرض بهتره)

location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}

پس از اضافه کردن این کانفیگ nginx -s reload را بزنید و از طریق لینک زیر بازش کنید.

http://127.0.0.1/nginx_status

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

Active connections: 6
server accepts handled requests
۶ ۶ ۱
Reading: 0 Writing: 1 Waiting: 5