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. תומכת ב- API לניהול, גרפים ואחזור נתונים מהמערכת שלך.
  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 על מערכת Ubuntu או CentOS לינוקס שהותקנה לאחרונה (ההוראות עובדות גם על Debian וגם על הפצות מבוססות RHEL).

הערה: כל ההוראות במאמר זה צריכות לרוץ כמשתמש root, אם אינך, השתמש בפקודת sudo כדי לקבל הרשאות משתמש root.

שלב 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 (ב- Ubuntu) או nginx (ב- CentOS) כפי שמוצג.

------------ 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, עליך לאבטח את ההתקנה שלך, להפעיל את התסריט לאבטחה שסופק בחבילת הבינארית. יש להגדיר סיסמת שורש, להסיר משתמשים אנונימיים, להשבית כניסה לשורש מרחוק ולהסיר את מסד הנתונים הבדיקה.

ניתן להפעיל את התסריט באמצעות הפקודה הבאה ולענות על כל השאלות עם yes/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. בהמשך, הפעל את מודול ה-PHP mcrypt ב 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]         

הוסף את ה config הבא, ערך 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, תצטרך להתק

------------ 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

15. לאפשר 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 };

16. לאחר מכן, הריצו את הפקודות הבאות.

------------ 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

17. אם אתם משתמשים בצמת בצד השרת במערכת הפעלה 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

שלב 6: הגדרת SNMPD עבור LibreNMS

18. כעת, השתמשו בתצורת 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

19. לאחר מכן, הורידו תסריט shell למערכת שלכם, שעוזר לזהות איזה מערכת הפעלה מותקנת ואם זו מערכת הפעלה לינוקס, הסקריפט יזהה איזה הפצת לינוקס אתם משתמשים בה:

------------ 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

שלב 7: יצירת Cron והגדרת Logrotate

20. כעת הריצו את הפקודה הבאה כדי להגדיר עבודת צ'רון עבור LibreNMS.

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

21. כעת, כל יומני הרישום של 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

שלב 8: גישה למתקין האינטרנטי של LibreNMS

22. כעת, השתמשו ב-URL הבא כדי לגשת למתקין האינטרנטי ולעקוב אחרי ההוראות במסך.

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 גילתה שתי בעיות, הראשונה היא שהתקנים לא הוספו (זהו אזהרה כרגע), ושנית, לא הגדרנו את ההרשאה המתאימה על קובץ התצורה (/opt/librenms/config.php) שנוסף באופן ידני, כפי שמוצג בתמונת המסך למטה.

LibreNMS Permission Issues

עכשיו הריץ את הפקודה הבאה כדי להגדיר את ההרשאה הנכונה על קובץ התצורה.

$ 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/