LibreNMS – أداة مراقبة الشبكات الكاملة المميزة لـ Linux

LibreNMS نظام مراقبة الشبكات المبني على PHP ، وهو مفتوح المصدر، قوي، وغني بالميزات، يستخدم بروتوكول SNMP لاكتشاف الشبكات تلقائيًا. يدعم مجموعة واسعة من أنظمة التشغيل بما في ذلك Linux، FreeBSD، وأجهزة الشبكات مثل Cisco، Juniper، Brocade، Foundry، HP وغيرها الكثير.

ميزات LibreNMS:

  1. يكتشف الشبكة بأكملها تلقائيًا باستخدام هذه البروتوكولات: CDP، FDP، LLDP، OSPF، BGP، SNMP، و ARP.
  2. يحتوي على واجهة مستخدم ويب ودية للهواتف المحمولة، مع لوحات تحكم قابلة للتخصيص.
  3. يدعم وكيل Unix.
  4. يدعم التوسع الأفقي للتوسع مع شبكتك.
  5. يدعم نظام تنبيه مرن وقابل للتخصيص بشكل كبير؛ ويُرسل الإشعارات عبر البريد الإلكتروني، و IRC، و Slack، والمزيد.
  6. يدعم واجهة برمجة التطبيقات لإدارة ورسم البيانات واسترجاعها من نظامك.
  7. يقدم نظام فوترة حركة المرور.
  8. يدعم أيضًا تطبيقات Android و iOS التي تقدم وظائف أساسية.
  9. يدعم التكامل مع NfSen، collectd، SmokePing، RANCID و Oxidized.
  10. يدعم طرق متعددة للمصادقة مثل MySQL، HTTP، LDAP، Radius، و Active Directory.
  11. يتيح التحديث التلقائي والعديد من الميزات الأخرى.

يتوفر عرض توضيحي عبر الإنترنت لتجربة قبل تثبيت LibreNMS على أنظمة Linux.

Demo URL: https://demo.librenms.org/
Username: demo
Password: demo

بيئة الاختبار:

  1. أوبونتو 16.04 مع مجموعة LEMP
  2. CentOS 7 مع مجموعة LEMP

في هذا البرنامج التعليمي سوف نتعلم كيفية تثبيت أداة مراقبة الشبكة LibreNMS على نظام Linux مثبت حديثًا بنسخة أوبونتو أو سنت أو إس (تعمل التعليمات نفسها أيضًا على ديبيان و التوزيعات المعتمدة على RHEL).

ملاحظة: يجب تشغيل جميع هذه التعليمات في هذه المقالة كمستخدم الجذر. إذا لم تكن كذلك، استخدم أمر sudo للحصول على امتيازات مستخدم الجذر.

الخطوة 1: تثبيت الحزم المطلوبة

1. ابدأ أولاً بتثبيت جميع الحزم المطلوبة باستخدام مدير الحزم الافتراضي كما هو موضح.

على أوبونتو/ديبيان

$ sudo apt install composer fping git graphviz imagemagick mariadb-client mariadb-server mtr-tiny nginx-full nmap php7.0-cli php7.0-curl php7.0-fpm php7.0-gd php7.0-mcrypt php7.0-mysql php7.0-snmp php7.0-xml php7.0-zip python-memcache python-mysqldb rrdtool snmp snmpd whois

على سنت أو إس/ريد هات

# yum install epel-release
# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
# yum install composer cronie fping git ImageMagick jwhois mariadb mariadb-server mtr MySQL-python net-snmp net-snmp-utils nginx nmap php72w php72w-cli php72w-common php72w-curl php72w-fpm php72w-gd php72w-mysql php72w-process php72w-snmp php72w-xml php72w-zip python-memcached rrdtool

2. بمجرد تثبيت جميع الحزم، سيتم بدء وتمكين خدمات nginx، php-fpm، mariadb و snmp للبدء التلقائي في وقت التمهيد (وهذا هو الحال عادة مع أوبونتو)، وإلا، يمكنك تشغيل الأوامر أدناه لبدء وتمكينها.

------------ On Debian/Ubuntu ------------ 
$ sudo systemctl nginx start php7.0-fpm mysql snmp 
$ sudo systemctl enable nginx php7.0-fpm mysql snmp

------------ On CentOS/RHEL ------------ 
# systemctl nginx start php-fpm mariadb snmpd 
# systemctl enable nginx php-fpm mariadb snmpd

الخطوة 2: تثبيت أداة مراقبة LibreNMS

3. بعد ذلك، قم بإنشاء مستخدم نظام يسمى librenms، باستخدام أمر useradd؛ حيث يعطل العلم -M إنشاء دليل المستخدم الرئيسي، ويمكّن العلم -r إنشاء حساب نظام. ثم أضف مستخدم librenms إلى المجموعة www-data (على أوبونتو) أو nginx (على سنت أو إس) على النحو التالي.

------------ On Debian/Ubuntu ------------ 
$ sudo useradd librenms -d /opt/librenms -M -r
$ sudo usermod -a -G librenms www-data   

------------ On CentOS/RHEL ------------ 
# useradd librenms -d /opt/librenms -M -r
# usermod -a -G librenms nginx           

4. ثم قم بتثبيت LibreNMS عبر أمر composer كما هو موضح.

------------ On Debian/Ubuntu ------------ 
$ cd /opt
$ sudo composer create-project --no-dev --keep-vcs librenms/librenms librenms dev-master

------------ On CentOS/RHEL ------------ 
# cd /opt
# composer create-project --no-dev --keep-vcs librenms/librenms librenms dev-master

الخطوة 3: إنشاء قاعدة بيانات LibreNMS

5. قبل أن تبدأ في استخدام خادم MariaDB، تحتاج إلى تأمين تثبيتك، قم بتشغيل النص الأمني المقدم في حزمة البرنامج الثنائي. سيطلب منك تعيين كلمة مرور الجذر، إزالة المستخدمين المجهولين، تعطيل تسجيل الدخول الجذر عن بُعد وإزالة قاعدة بيانات الاختبار.

يمكنك تشغيل النص بإصدار الأمر أدناه والرد على جميع الأسئلة بـ نعم/y.

$ sudo mysql_secure_installation   [On Debian/Ubuntu]
# mysql_secure_installation        [On CentOS/RHEL]

6. ثم قم بتسجيل الدخول إلى قاعدة بيانات MariaDB لإنشاء قاعدة بيانات لـ LibreNMS (تذكر استخدام كلمة مرور قوية/آمنة في بيئة الإنتاج).

$ sudo mysql -u root -p
MariaDB [(none)]> CREATE DATABASE librenms CHARACTER SET utf8 COLLATE utf8_unicode_ci;
MariaDB [(none)]> CREATE USER 'librenms'@'localhost' IDENTIFIED BY '=@!#@%$libre';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON librenms.* TO 'librenms'@'localhost';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> exit

7. بعد ذلك، قم بتعطيل وضع الصرامة في MySQL مؤقتًا (لا يزال التوافق مع وضع الصرامة في MySQL قيد الإضافة).

$ sudo vim /etc/mysql/mariadb.conf.d/50-server.cnf    [On Debian/Ubuntu]
# vi /etc/my.cnf        [On CentOS/RHEL]

يرجى إضافة النص التالي ضمن القسم [mysqld].

innodb_file_per_table=1
sql-mode=""
lower_case_table_names=0

ثم أعد تشغيل خادم قاعدة البيانات لتطبيق التغييرات.

$ sudo systemctl restart mysql     [On Debian/Ubuntu]
# systemctl restart mariadb        [On CentOS/RHEL]

الخطوة 4: تكوين وبدء PHP-FPM

8. بعد ذلك، قم بتعيين date.timezone في ملف php.ini إلى منطقة زمنية حالية، على سبيل المثال “Africa/Kampala”، كما هو موضح في الصورة التالية.

------------ On Debian/Ubuntu ------------ 
$ sudo vim /etc/php/7.0/fpm/php.ini
$ sudo vim /etc/php/7.0/cli/php.ini

------------ On CentOS/RHEL ------------ 
# vi /etc/php.ini
Set Time Zone in PHP File

9. قم بتمكين وحدة mcrypt في PHP في Ubuntu وأعد تشغيل php-fpm كما هو موضح.

------------ On Debian/Ubuntu ------------ 
$ sudo phpenmod mcrypt
$ sudo systemctl restart php7.0-fpm

10. في CentOS/RHEL، يتعين عليك إجراء التغييرات التالية في ملف تكوين php-fpm.

# vi /etc/php-fpm.d/www.conf

قم بإجراء التغييرات التالية.

;user = apache
user = nginx

group = apache   ; keep group as apache

;listen = 127.0.0.1:9000
listen = /var/run/php-fpm/php7.2-fpm.sock

listen.owner = nginx
listen.group = nginx
listen.mode = 0660

11. أعد تشغيل خدمة php-fpm كما هو موضح.

# systemctl restart php-fpm

الخطوة 5: تكوين Nginx لـ LibreNMS

12. في هذه الخطوة، تحتاج إلى تكوين كتلة خادم Nginx لـ librenms من أجل الوصول إلى واجهة المستخدم عبر الويب. أنشئ ملف .conf له كما هو موضح.

$ sudo vim /etc/nginx/conf.d/librenms.conf     [On Debian/Ubuntu]
# vi /etc/nginx/conf.d/librenms.conf           [On CentOS/RHEL]         

أضف التكوين التالي، وعدل server_name حسب الحاجة.

server {
 listen      80;
 server_name librenms.example.com;
 root        /opt/librenms/html;
 index       index.php;

 charset utf-8;
 gzip on;
 gzip_types text/css application/javascript text/javascript application/x-javascript image/svg+xml text/plain text/xsd text/xsl text/xml image/x-icon;
 location / {
  try_files $uri $uri/ /index.php?$query_string;
 }
 location /api/v0 {
  try_files $uri $uri/ /api_v0.php?$query_string;
 }
 location ~ \.php {
  include fastcgi.conf;
  fastcgi_split_path_info ^(.+\.php)(/.+)$;
  fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
 }
 location ~ /\.ht {
  deny all;
 }
}

13. ثم قم بحفظ وإغلاق الملف. قم أيضًا بإزالة تكوين كتلة الخادم الافتراضية وأعد تشغيل خادم Nginx.

------------ On Debian/Ubuntu ------------ 
$ sudo rm /etc/nginx/sites-enabled/default
$ sudo systemctl restart nginx

------------ On CentOS/RHEL ------------ 
# systemctl restart nginx

ملاحظة: في CentOS/RHEL، ستحتاج إلى تعطيل قسم default site إذا كان هذا هو الموقع الوحيد الذي تستضيفه. احذف قسم الخادم من ملف /etc/nginx/nginx.conf.

14. أيضًا في CentOS/RHEL، ستحتاج إلى تثبيت أداة policy tool لـ SELinux وتكوين contexts المطلوبة بواسطة LibreNMS باستخدام الأوامر التالية.

------------ On CentOS/RHEL ------------ 
# yum install policycoreutils-python
# semanage fcontext -a -t httpd_sys_content_t '/opt/librenms/logs(/.*)?'
# semanage fcontext -a -t httpd_sys_rw_content_t '/opt/librenms/logs(/.*)?'
# restorecon -RFvv /opt/librenms/logs/
# semanage fcontext -a -t httpd_sys_content_t '/opt/librenms/rrd(/.*)?'
# semanage fcontext -a -t httpd_sys_rw_content_t '/opt/librenms/rrd(/.*)?'
# restorecon -RFvv /opt/librenms/rrd/
# setsebool -P httpd_can_sendmail=1
# setsebool -P httpd_execmem 1

١٥. السماح fping عن طريق إنشاء ملف http_fping.tt بالمحتويات التالية.

On CentOS/RHEL
module http_fping 1.0;

require {
type httpd_t;
class capability net_raw;
class rawip_socket { getopt create setopt write read };
}

#============= httpd_t ==============
allow httpd_t self:capability net_raw;
allow httpd_t self:rawip_socket { getopt create setopt write read };

١٦. ثم قم بتشغيل هذه الأوامر.

------------ On CentOS/RHEL ------------ 
# checkmodule -M -m -o http_fping.mod http_fping.tt
# semodule_package -o http_fping.pp -m http_fping.mod
# semodule -i http_fping.pp

١٧. إذا كنت تستخدم جدار الحماية على CentOS/RHEL, فقم بتمكين الوصول عبر HTTP/HTTPS من خلال جدار الحماية.

------------ On CentOS/RHEL ------------ 
# firewall-cmd --zone public --add-service http
# firewall-cmd --permanent --zone public --add-service http
# firewall-cmd --zone public --add-service https
# firewall-cmd --permanent --zone public --add-service https

الخطوة ٦: تكوين SNMPD لـ LibreNMS

١٨. الآن استخدم تكوين SNMP عينة لإنشاء ملف التكوين الخاص بك وافتحه للتحرير، كما يلي.

------------ On Debian/Ubuntu ------------ 
$ sudo cp /opt/librenms/snmpd.conf.example /etc/snmp/snmpd.conf
$ sudo vim /etc/snmp/snmpd.conf

------------ On CentOS/RHEL ------------ 
# cp /opt/librenms/snmpd.conf.example /etc/snmp/snmpd.conf
# vi /etc/snmp/snmpd.conf

ابحث عن السلسلة RANDOMSTRINGGOESHERE وقم بتغييرها إلى سلسلة المجتمع الخاصة بك كما هو موضح في اللقطة.

Set SNMP String

١٩. بعد ذلك، قم بتنزيل سكريبت للقشرة على نظامك، والذي يساعد في اكتشاف نظام التشغيل وإذا كان Linux فسيكتشف أيضًا توزيع Linux الذي تستخدمه:

------------ On Debian/Ubuntu ------------ 
$ sudo curl -o /usr/bin/distro https://raw.githubusercontent.com/librenms/librenms-agent/master/snmp/distro
$ sudo chmod +x /usr/bin/distro
$ sudo systemctl restart snmpd

------------ On CentOS/RHEL ------------ 
# curl -o /usr/bin/distro https://raw.githubusercontent.com/librenms/librenms-agent/master/snmp/distro
# chmod +x /usr/bin/distro
# systemctl restart snmpd

الخطوة ٧: إنشاء Cron وتكوين Logrotate

٢٠. الآن قم بتشغيل الأمر أدناه لإعداد وظيفة cron لـ LibreNMS.

# cp /opt/librenms/librenms.nonroot.cron /etc/cron.d/librenms

٢١. بعد ذلك، يتم تسجيل جميع سجلات LibreNMS في /opt/librenms/logs، يمكنك أن تحتاج إلى تكوين هذه السجلات لتدوير تلقائيًا، باستخدام ملف تكوين logrotate المقدم، مثل هذا.

# cp /opt/librenms/misc/librenms.logrotate /etc/logrotate.d/librenms

ثم قم بتعيين الصلاحيات المناسبة على دليل تثبيت LibreNMS وملفات السجل.

------------ On Debian/Ubuntu ------------
$ sudo chown -R librenms:librenms  /opt/librenms
$ sudo setfacl -d -m g::rwx /opt/librenms/rrd /opt/librenms/logs
$ sudo setfacl -R -m g::rwx /opt/librenms/rrd /opt/librenms/logs

------------ On CentOS/RHEL ------------ 
# chown -R librenms:librenms /opt/librenms
# setfacl -d -m g::rwx /opt/librenms/rrd /opt/librenms/logs
# setfacl -R -m g::rwx /opt/librenms/rrd /opt/librenms/logs

الخطوة ٨: الوصول إلى مثبت الويب LibreNMS

٢٢. بعد ذلك، استخدم عنوان الويب التالي للوصول إلى مثبت الويب واتبع التعليمات التي تظهر على الشاشة.

http://librenms.tecmint.lan/install.php

لكي تعمل هذا العنوان على الجهاز المحلي، يجب عليك إعداد DNS محلي باستخدام ملف الاستضافة (/etc/hosts)، لحل النطاق المحلي أو لأغراض الاختبار قبل النشر الفعلي.

192.168.43.31 tecmint.lan
192.168.43.31 librenms.tecmint.lan
Setup Local DNS for Domain

23. سترى صفحة الترحيب بالتثبيت كما هو موضح في الصورة التالية، انقر المرحلة التالية للمتابعة.

LibreNMS Web Installer

24. ثم أدخل الإعدادات (مضيف قاعدة البيانات، المنفذ، اسم المستخدم وكلمة مرور المستخدم) لقاعدة بيانات LibreNMS وانقر فوق المرحلة التالية للمتابعة.

LibreNMS Database Settings

25. سيبدأ المثبت الويب الآن في استيراد قاعدة البيانات MySQL، وسيستغرق هذا بعض الوقت. لاحظ أن العملية ستحاول التوقف في نقاط معينة، انقر ببساطة على إعادة المحاولة لمتابعة عملية الاستيراد.

LibreNMS Database Importing

26. بمجرد اكتمال استيراد قاعدة البيانات، يجب أن ترى رسالة “قاعدة البيانات محدّثة!” كما هو موضح في الصورة أدناه. ثم انقر على انتقل إلى إضافة مستخدم للمتابعة.

LibreNMS Database Updated

27. بعد ذلك، أضف مستخدم LibreNMS، حدد اسم المستخدم وكلمة المرور والبريد الإلكتروني، ثم انقر على إضافة مستخدم لتنفيذ التغييرات.

Add LibreNMS User

28. الآن انقر على إنشاء تكوين LibreNMS لنظامك، عن طريق النقر على توليد التكوين.

Generate Librenms Config
LibreNMS Configuration

29. بمجرد توليد التكوين، كما هو موضح في الشاشة السابقة، قم بنسخه وحفظه في الدليل الرئيسي للتثبيت الخاص بك، في ملف يسمى /opt/librenms/config.php.

# vi /opt/librenms/config.php
LibreNMS Configuration
<?php
## Have a look in defaults.inc.php for examples of settings you can set here. DO NOT EDIT defaults.inc.php!

### Database config
$config['db_host'] = 'localhost';
$config['db_port'] = '3306';
$config['db_user'] = 'librenms';
$config['db_pass'] = '=@!#@%$libre';
$config['db_name'] = 'librenms';
$config['db_socket'] = '';

// This is the user LibreNMS will run as
//Please ensure this user is created and has the correct permissions to your install
$config['user'] = 'librenms';

### Locations - it is recommended to keep the default
#$config['install_dir']  = "/opt/librenms";

### This should *only* be set if you want to *force* a particular hostname/port
### It will prevent the web interface being usable form any other hostname
#$config['base_url']        = "http://librenms.company.com";

### Enable this to use rrdcached. Be sure rrd_dir is within the rrdcached dir
### and that your web server has permission to talk to rrdcached.
#$config['rrdcached']    = "unix:/var/run/rrdcached.sock";

### Default community
$config['snmp']['community'] = array("public");

### Authentication Model
$config['auth_mechanism'] = "mysql"; # default, other options: ldap, http-auth
#$config['http_auth_guest'] = "guest"; # remember to configure this user if you use http-auth

### List of RFC1918 networks to allow scanning-based discovery
#$config['nets'][] = "10.0.0.0/8";
#$config['nets'][] = "172.16.0.0/12";
#$config['nets'][] = "192.168.0.0/16";

# Update configuration
#$config['update_channel'] = 'release';  # uncomment to follow the monthly release channel
#$config['update'] = 0;  # uncomment to completely disable updates

30. قم بتخزين وغلق الملف. ثم عد إلى مثالي التثبيت على الويب لمتابعة عملية التثبيت عن طريق النقر على إنهاء التثبيت.

Finish LibreNMS Installation

31. الآن تم إنشاء LibreNMS بالكامل، يمكنك النقر على “تأكيد تثبيتك وإصلاح أي مشاكل”، يتوجب أن تظهر صفحة الدخول.

Validate LibreNMS Install

32. من ثم، أدخل بيانات المستخدم الخاصة بك للوصول إلى صفحة التحقق.

LibreNMS Login Page

33. من خلال عملية تأكيد التثبيت، اكتشف LibreNMS قضيتين، الأول أن لم يتم إضافة الأجهزة (هذه تحذير للآن)، والثاني أنه لم يتم 设置 تصحيح ال permisos في ملف ال config (/opt/librenms/config.php) التي تم إضافته يدويًا، كما يظهر في الصورة التالية.

LibreNMS Permission Issues

الآن قم بتنفيذ الأمر التالي لتحديد ال permisos الصحيح على ملف ال config.

$ sudo chown -R librenms:librenms /opt/librenms/config.php 

34. لإضافة الأجهزة، أذهب إلى: http://librenms.tecmint.lan/addhost. بعد إضافة الأجهزة، يمكنك الذهاب إلى الصفحة الرئيسية وإضافة أنواع مختلفة من الأرشيفات.

LibreNMS Dashboard

هذا كل شيء! يمكنك الحصول على معلومات أكثر بما فيها التثبيت والإعداد في المساعدة التقنية ل LibreNMS على https://docs.librenms.org/.

LibreNMS نظام مراقبة الشبكات المكتمل تدعم مجموعة واسعة من الأجهزة الشبكية. نأمل أن هذا كان درسًا توصيفيًا واضحًا، إذا كان لد

Source:
https://www.tecmint.com/install-librenms-monitoring-on-ubuntu-centos/