نصب نرم افزار مانیتورینگ Cacti در Ubuntu 16.04

یکی از نرم‌افزارهای متن‌باز(Open Source) و رایگان مانیتورینگ شبکه نرم‌افزار Cacti است.

نرم افزار Cacti با فراهم کردن واسط کاربری کاملاً گرافیکی، این امکان را به شما می‌دهد تا وضعیت روترها، سویچ‌ها، سرور، ترافیک در حال عبور، وضعیت CPU ، RAM، DISK و ... را در یک صفحه و در کنار هم مشاهده کنید.

این نرم افزار توسط پروتکل SNMP به دستگاه های مورد نظر شما متصل و آنها را طی بازه‌های زمانی دلخواه بررسی می‌کند. این نرم‌افزار بر پایه PHP/MySQL می‌باشد و جهت ارائه گراف‌های خود از نرم افزار بسیار خوب RRDTool بهره می‌گیرد.

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

واسط کاربری نرم افزار Cacti
واسط کاربری نرم افزار Cacti

برای نصب و راه اندازی Cacti باید پیش نیازهای آن را نصب کنیم.

1 - نصب LAMP

  • نصب Apache
apt-get install apache2 –y

برای تست نصب شدن http://Server-Address را در مرورگر وارد کنید.

  • نصب Mysql

در حین فرایند نصب از شما می‌خواهد که پسورد root مربوط به Mysql را وارد کنید

apt-get install mysql-server

بعد از نصب دستور زیر را اجرا کنید :

mysql_secure_installation

بعد از اجرای این دستور شما باید پسورد root مربوط به mysql را وارد نمیایید.سپس از شما میخواهد که در صورت نیاز پسورد root را عوض کنید، در صورتی که نیاز به تغییر پسورد ندارد N را وارد کنید تا وارد مرحله بعدی شود.به سادگی می‌توانید بقیه سوالات را با Y جواب دهید.

 By default, a MySQL installation has an anonymous user, allowing anyone to log into MySQL without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment.
 Remove anonymous users? [Y/n] y 
 ... Success!
 Normally, root should only be allowed to connect from 'localhost'. This ensures that
 someone cannot guess at the root password from the network.
 Disallow root login remotely? [Y/n] y
 ... Success!
 By default, MySQL comes with a database named 'test' that anyone can access. This is also
 intended only for testing, and should be removed before moving into a production environment.
 Remove test database and access to it? [Y/n] y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!
 Reloading the privilege tables will ensure that all changes made so far will take effect immediately.
 Reload privilege tables now? [Y/n] y
 ... Success!
 Cleaning up...


  • نصب PHP

زبان برنامه نویسی متن باز تحت وب است که بصورت گسترده برای ساخت صفحات Dynamic مورد استفاده قرار می‌گیرد.برای نصب PHP دستورات زیر را در ترمینال وارد نمایید.

apt-get install php7.0 libapache2-mod-php7.0

همچنین کتابخانه ها و ماژول های متنوعی دارد که به برای نصب Cacti به ماژول های زیر نیاز خواهیم داشت:

apt-get install php7.0-cli php7.0-common php7.0-curl php7.0-fpm php7.0-gd php7.0-gmp php7.0-mysql php7.0-ldap php7.0-mbstring php7.0-snmp php7.0-xml

می‌توانیم با ساخت صفحه اصلاعات PHP صحت نصب PHP را تست کنیم.برای این منظور دستور زیر را در ترمینال وارد نمایید:

echo “<?php phpinfo(); ?>” > /var/www/html/info.php

آدرس زیر را در مرورگر وارد میکنیم.

http://Server-Address/info.php

قبل از اینکه به ادامه مراحل بپردازیم فایل etc/php/7.0/apache2/php.ini را با ادیتور خود باز کنید و تغییرات زیر را انجام دهید :

file_uploads = On
date.timezone =Asia/Tehran

2 - تنظیمات NTP :

دستور زیر را در ترمینال وارد نمایید :

apt-get install ntp

فایل /etc/ntp.conf را با ادیتور دلخواه باز کنید قسمت زیر را ویرایش کرده و آدرس NTP Pool های دلخواه خود را وارد نمایید.

با استفاده از دستور زیر سرویس NTP را Restart کنید:

systemctl restart ntp.service

می‌توانید با دستور زیر query بزنید تا مطمئن شوید همه چیز خوب کار می‌کند.

ntpdq –p

همچنین مطمئن شوید که گزینه noquery در سطر restrict وجود داشته باشد:

#By default, exchange time with everybody, but don't allow configuration.
restrict -4 default kod notrap nomodify nopeer noquery limited
restrict -6 default kod notrap nomodify nopeer noquery limited

3 – ساخت Database و User برای Cacti در Mysql

دستور زیر را در ترمینال وارد کنید و سپس پسورد root مربوط به mysql را وارد نمایید:

mysql –u root –p

سپس دستورات زیر را وارد می‌کنیم:

mysql> create database cacti;
mysql> grant all on cacti.* to cactiuser@localhost identified by 'password';
mysql> flush privileges;
mysql> exit

4 – دانلود Cacti

با استفاده از دستور زیر فایل Cacti را دانلود می‌کنیم.همواره می‌توانید آخریش ورژن cacti را از طریق آدرس https://cacti.net/download_cacti.php  دانلود کنید.

wget http://www.cacti.net/downloads/cacti-1.1.33.tar.gz

5 – نصب Cacti

با استفاده از دستور زیر فایل دانلود شده را اکسترکت کنید و سپس دستورات زیر را به ترتیب اجرا نمایید:

tar xzvf cacti-1.1.33.tar.gz

این دستور کلیه فایل های موجود در آدرس /var/www/html که دایرکتوری پیش فرض وب سرویس می‌باشد را پاک کند، لذا در اجرای این دستور مراقب باشید :

rm –rf /var/www/html/*
mv c acti-1.1.33/* /var/www/html/
cd /var/www/html/include

فایل config.php را باز کنید و مقادیر زیر را متناسب با مرحله 3 تغییر دهید :

/* make sure these values reflect your actual database/host/user/password */
$database_type     = 'mysql';
$database_default  = 'cacti';
$database_hostname = 'localhost';
$database_username = 'cactiuser';
$database_password = 'password';
$database_port     = '3306';
$database_ssl      = false;

همچنین url_path را به صورت زیر تغییر دهید :

$url_path = '/';

فایل را ذخیره کنید و خارج شوید، سپس دستور زیر را در ترمینال وارد نمایید:

mysql -u root -p cacti < /var/www/html/cacti.sql

پسورد mysql را وارد کنید و صبر کنید تا فرایند به اتمام برسد و command line در اختیار شما قرار بگیرد.سپس دستورات زیر را وارد کنید:

systemctl restart mysql.service
systemctl restart apache2.service

سپس در مرورگر آدرس زیر را وارد کنید : http://Server-address

در صفحه باز شده تیک Accept GPL License Agreement را انتخاب و دکمه Begin را کلیک نمایید تا وارد صفحه Pre-installation Checks شوید :

اگر در صفحه Pre-installation Checks با خطای زیر مواجه شدید دستورات زیر را وارد نمایید :

Pre-installation Checks
Pre-installation Checks

MySQL TimeZone Support
ERROR: Your Cacti database login account does not have access to the MySQL TimeZone database. Please provide the Cacti database account "select" access to the  time_zone_name" table in the "mysql" database, and populate MySQL's TimeZone information before proceeding.

دستورات :

mysql -u root –pچ
Enter password: YOUR-PASSWORD-HERE 
mysql> GRANT SELECT ON mysql.time_zone_name TO cactiuser@localhost IDENTIFIED BY ' password ';
mysql> FLUSH privileges;
mysql> quit;
mysql_tzinfo_to_sql /usr/share/zoneinfo/ | mysql -u root -p mysql
Enter password: YOUR-PASSWORD-HERE 
 systemctl restart apache2.service

مجدد به مرورگر برگردید و صفحه را Refresh کنید و صفحه Pre-installation Checks را تا پایین چک نمایید.

اگه شما هم مثل من با این پیش نیاز ها روبه رو شدید که از قبل آماده نکرده اید مراحل زیر را انجام دهید :

فایل etc/mysql/mysql.conf.d/mysqld.cnf را با ادیتور خود باز کنید و زیر قسمت [mysqld] خط های زیر را اضافه کنید :

max_heap_table_size=128M
tmp_table_size=128M
join_buffer_size=128M
innodb_buffer_pool_size=256M
innodb_doublewrite=0
innodb_flush_log_at_timeout=3
innodb_read_io_threads=32
innodb_write_io_threads=16

فایل را ذخیره کنید و دستورات زیر را در ترمینال وارد کنید :

 systemctl restart mysql.service
 systemctl restart apache2.service

صفحه وب را Refresh کنید و Next را کلیک کنید

در صفحه Installation Type گزینه ی New Primary Server را انتخاب کنید و Next را کلیک کنید :

اگه از اول آموزش همراه بوده باشید قطعا با این صفحه روبه رو خواهید شد، لذا نگران نباشید و تا انتهای آموزش همراه من باشید :

خب طبق این صفحه ما ابزار های rrdtool، snmpwalk ، snmpget ، snmpbulkwalk ، snmpgetnext ، snmptrap، spine را نیاز داریم و همچنین فایل /var/www/html/log/cacti.log را هم باید ایجاد کنیم.

با استفاده از دستور زیر ابزار های rrdtool، snmpwalk ، snmpget ، snmpbulkwalk ، snmpgetnext ، snmptrap را نصب خواهیم کرد.

  apt-get install rrdtool snmp snmpd –y

برای نصب spine به ترتیب زیر عمل می‌کنیم:

cd /opt

با استفاده از دستور زیر Source مربوط به spine را دانلود میکنیم.آخرین نسخه را همواره میتوانید از آدرس https://cacti.net/spine_download.php دانلود کنید.

wget http://www.cacti.net/downloads/spine/cacti-spine-1.1.33.tar.gz
tar xzvf cacti-spine-1.1.33.tar.gz
cd cacti-spine-1.1.33/
/opt/cacti-spine-1.1.33 # ./bootstrap

اگر با این خطا مواجه شدید دستورات زیر را به ترتیب وارد نمایید:

FATAL: Unable to locate dos2unix utility
./bootstrap: 38: exit: Illegal number: -1

دستور:

opt/cacti-spine-1.1.33 # apt-get install build-essential dos2unix dh-autoreconf help2man libssl-dev libmysql++-dev  librrds-perl libsnmp-dev libmysqlclient-dev libmysqld-dev –y

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

/opt/cacti-spine-1.1.33 #./configure
/opt/cacti-spine-1.1.33 #make
/opt/cacti-spine-1.1.33 #make install
/opt/cacti-spine-1.1.33 #chown root:root /usr/local/spine/bin/spine
/opt/cacti-spine-1.1.33 #chmod +s /usr/local/spine/bin/spine

بعد از اتمام به مرورگر برگردید و قسمت آدرس spine را به شرح زیر تغییر دهید:

اخرین مورد خطای مربوط نبودن فایل cacti.log بود که برای این مشکل دستورات زیر را به ترتیب وارد نمایید :

touch /var/www/html/log/cacti.log
chown -R www-data:www-data /var/www/html/

مرورگر را Refresh کنید و Next را کلیک کنید.

در صفحه Directory Permission Checks مطمئن شوید که همه دسترسی های مورد نیاز را ایجاد کرده اید و Next را کلیک کنید (اگه طبق آموزش پیش اومده باشید با صفحه زیر مواجه خواهید شد )

در صفحه های Template Setup، Template های مورد نیاز خود را تیک بزنید و روی Finish کلیک کنید.( در آینده نیز می‌توانید Template های دلخواه خود را اضافه کنید )

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