LibreNMS - เครื่องมือตรวจสอบเครือข่ายที่โดดเด่นเต็มรูปแบบสำหรับ Linux
LibreNMS เป็นระบบตรวจสอบเครือข่ายที่ใช้ PHP แบบโอเพ่นซอร์ส ทรงพลังและมีฟีเจอร์มากมาย ซึ่งใช้โปรโตคอล SNMP รองรับระบบปฏิบัติการที่หลากหลาย รวมถึง Linux, FreeBSD รวมถึงอุปกรณ์เครือข่าย เช่น Cisco, Juniper, Brocade, Foundry, HP และอื่นๆ อีกมากมาย
คุณสมบัติ LibreNMS:
- โดยจะค้นหาเครือข่ายทั้งหมดโดยอัตโนมัติโดยใช้โปรโตคอลเหล่านี้: CDP, FDP, LLDP, OSPF, BGP, SNMP และ ARP
- มี Web UI ที่เหมาะกับมือถือพร้อมแดชบอร์ดที่ปรับแต่งได้
- รองรับตัวแทน Unix
- รองรับการปรับขนาดแนวนอนเพื่อขยายตามเครือข่ายของคุณ
- รองรับระบบแจ้งเตือนที่มีความยืดหยุ่นสูงและปรับแต่งได้ ส่งการแจ้งเตือนทางอีเมล, irc, slack และอื่นๆ
- รองรับ API สำหรับการจัดการ สร้างกราฟ และการดึงข้อมูลจากระบบของคุณ
- เสนอระบบการเรียกเก็บเงินค่าจราจร
- ยังรองรับแอป Android และ iOS ซึ่งมีฟังก์ชันการทำงานหลักอีกด้วย
- รองรับการทำงานร่วมกับ NfSen, Collected, SmokePing, RANCID และ Oxidized
- รองรับวิธีการรับรองความถูกต้องหลายวิธี เช่น MySQL, HTTP, LDAP, Radius และ Active Directory
- ช่วยให้สามารถอัปเดตอัตโนมัติและคุณสมบัติอื่น ๆ อีกมากมาย
มีการสาธิตออนไลน์ให้คุณลองก่อนติดตั้ง LibreNMS บนระบบ Linux
Demo URL: https://demo.librenms.org/
Username: demo
Password: demo
สภาพแวดล้อมการทดสอบ:
- Ubuntu 16.04 พร้อม LEMP Stack
- CentOS 7 พร้อม LEMP Stack
ในบทช่วยสอนนี้ เราจะเรียนรู้วิธีการติดตั้ง LibreNMS Network Monitoring Tool บน Ubuntu หรือ CentOS Linux ที่เพิ่งติดตั้งใหม่ (คำแนะนำเดียวกันนี้ยังใช้ได้กับ เดเบียน และ RHEL)
หมายเหตุ: คำแนะนำทั้งหมดในบทความนี้ควรทำงานในฐานะผู้ใช้ root หากคุณไม่ได้ใช้ ให้ใช้คำสั่ง sudo เพื่อทำการรูท สิทธิพิเศษของผู้ใช้
ขั้นตอนที่ 1: ติดตั้งแพ็คเกจที่จำเป็น
1. ขั้นแรกให้เริ่มต้นด้วยการติดตั้งแพ็คเกจที่จำเป็นทั้งหมดโดยใช้ตัวจัดการแพ็คเกจเริ่มต้นตามที่แสดง
บน Ubuntu/Debian
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
บน CentOS/RHEL
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< บริการจะเริ่มต้นและเปิดใช้งานเพื่อเริ่มอัตโนมัติในเวลาบูต (โดยปกติจะเป็นกรณีของ Ubuntu) มิฉะนั้น คุณสามารถเรียกใช้คำสั่งด้านล่างเพื่อเริ่มและเปิดใช้งานได้
------------ 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
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 เพื่อเข้าถึง UI ของเว็บ สร้างไฟล์ .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 คุณจะต้องปิดการใช้งานส่วน ไซต์เริ่มต้น หากนี่คือ เฉพาะไซต์ที่คุณโฮสต์เท่านั้น ลบส่วนเซิร์ฟเวอร์ออกจากไฟล์ /etc/nginx/nginx.conf
14. นอกจากนี้บน CentOS/RHEL คุณต้องติดตั้งเครื่องมือนโยบายสำหรับ SELinux และกำหนดค่า >บริบทที่จำเป็นโดย 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
15. อนุญาต fping โดยการสร้างไฟล์ http_fping.tt
โดยมีเนื้อหาดังต่อไปนี้
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
และเปลี่ยนเป็นสตริงชุมชนของคุณเองตามที่แสดงในภาพหน้าจอ
19. ถัดไป ดาวน์โหลดเชลล์สคริปต์บนระบบของคุณ ซึ่งจะช่วยตรวจสอบว่าระบบปฏิบัติการใดและหากเป็น 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
ขั้นตอนที่ 7: สร้าง Cron และกำหนดค่า Logrotate
20. ตอนนี้ให้รันคำสั่งด้านล่างเพื่อตั้งค่างาน cron สำหรับ 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
23. คุณจะเห็นหน้าต้อนรับการติดตั้งดังที่แสดงในภาพหน้าจอต่อไปนี้ คลิก ขั้นตอนถัดไป เพื่อดำเนินการต่อ
24. จากนั้นป้อนการตั้งค่า (โฮสต์ฐานข้อมูล พอร์ต ชื่อผู้ใช้ และรหัสผ่านผู้ใช้) สำหรับฐานข้อมูล LibreNMS และคลิก ขั้นตอนถัดไป เพื่อดำเนินการต่อ
25. ขณะนี้ตัวติดตั้งเว็บจะเริ่มนำเข้าฐานข้อมูล MySQL ซึ่งจะใช้เวลาสักครู่หนึ่ง โปรดทราบว่ากระบวนการจะพยายามหยุดชั่วคราวที่จุดใดจุดหนึ่ง เพียงคลิก ลองอีกครั้ง เพื่อดำเนินการขั้นตอนการนำเข้าต่อ
26. เมื่อการนำเข้าฐานข้อมูลเสร็จสมบูรณ์ คุณจะเห็นข้อความ “ฐานข้อมูลเป็นปัจจุบัน! ” ดังที่แสดงในภาพหน้าจอด้านล่าง จากนั้นคลิกที่ ไปที่เพิ่มผู้ใช้ เพื่อดำเนินการต่อ
27. ถัดไป เพิ่มผู้ใช้ LibreNMS ระบุชื่อผู้ใช้ รหัสผ่าน และอีเมล จากนั้นคลิก เพิ่มผู้ใช้ เพื่อให้การเปลี่ยนแปลงมีผล
28. ตอนนี้ให้คลิกที่สร้างการกำหนดค่า LibreNMS สำหรับระบบของคุณ โดยคลิก สร้างการกำหนดค่า
29. เมื่อสร้างการกำหนดค่าแล้ว ดังที่แสดงในภาพหน้าจอก่อนหน้า ให้คัดลอกและบันทึกไว้ในไดเร็กทอรีรากของการติดตั้งของคุณในไฟล์ชื่อ /opt/librenms/config.php .
vi /opt/librenms/config.php
<?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. บันทึกและปิดไฟล์ จากนั้นกลับไปที่โปรแกรมติดตั้งบนเว็บเพื่อดำเนินการติดตั้งต่อ โดยคลิก เสร็จสิ้นการติดตั้ง
31. ตอนนี้การติดตั้ง LibreNMS ของคุณเสร็จสมบูรณ์แล้ว คุณสามารถคลิกที่ “ตรวจสอบการติดตั้งและแก้ไขปัญหาใดๆ ” หน้าเข้าสู่ระบบควรปรากฏขึ้น
32. จากนั้น ป้อนข้อมูลรับรองผู้ใช้ของคุณเพื่อเข้าถึงหน้าการตรวจสอบ
33. จากกระบวนการตรวจสอบการติดตั้ง LibreNMS ได้ค้นพบปัญหาสองประการ ปัญหาหนึ่งคือไม่ได้เพิ่มอุปกรณ์ (นี่คือคำเตือนในขณะนี้) และประการที่สอง เรามี ไม่ได้ตั้งค่าการอนุญาตที่เหมาะสมในไฟล์กำหนดค่า (/opt/librenms/config.php) ที่ถูกเพิ่มด้วยตนเอง ดังที่แสดงในภาพหน้าจอด้านล่าง
ตอนนี้ให้รันคำสั่งต่อไปนี้เพื่อตั้งค่าการอนุญาตที่ถูกต้องในไฟล์กำหนดค่า
sudo chown -R librenms:librenms /opt/librenms/config.php
34. หากต้องการเพิ่มอุปกรณ์ ให้ไปที่: http://librenms.tecmint.lan/addhost หลังจากเพิ่มอุปกรณ์แล้ว คุณสามารถไปที่หน้าแรกและเพิ่มแดชบอร์ดต่างๆ ได้
แค่นั้นแหละ! คุณสามารถค้นหาข้อมูลเพิ่มเติม รวมถึงการติดตั้งและการตั้งค่าในเอกสารประกอบ LibreNMS ได้ที่ https://docs.librenms.org/
LibreNMS เป็นระบบตรวจสอบเครือข่ายที่มีคุณลักษณะครบถ้วนซึ่งสนับสนุนฮาร์ดแวร์เครือข่ายที่หลากหลาย เราหวังว่านี่จะเป็นคู่มือการติดตั้งที่ชัดเจน หากคุณมีคำถามใดๆ โปรดติดต่อเราผ่านแบบฟอร์มคำติชมด้านล่าง