開源網路裝置管理系統 LibreNMS - Debian 12
這是一套從 Jason Cheng大看到文章發現到還不錯用監控軟體。
2024.01.30 修改系統為 Debain12
2024.11.03 更新 PHP 版本為 8.3
安裝環境
環境都是在 「Proxmox VE 」 虛擬系統上架設,都是以 「 LXC 」模式為主,除非有特殊狀況會告知使用 「 VM 」 模式
- 系統環境: Debain 12
- Web 服務: Nginx 1.26
- PHP 服務: PHP 8.3
- 資料庫服務: MariaDB 10.11
安裝過程
安裝 web 服務
-
請參考本站記錄安裝 nginx 服務 Nginx 模組擴充 - Debian \ Ubuntu
-
使用官方提供的來源庫下面的編譯的不用安裝
安裝資料庫
-
請參考本站記錄安裝 Mariadb 服務 在 Debian 系統上安裝 MariaDB
-
在
server.cnf
檔增加以下內容vim /etc/mysql/mariadb.conf.d/50-server.cnf
[mysqld]
innodb_file_per_table=1
lower_case_table_names=0
- 新增加 LibreNMS 表單
mariadb -u root -p
CREATE DATABASE librenms CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'librenms'@'localhost' IDENTIFIED BY 'password'; <----- 這裡的 password 修改成您自己記的住密碼
GRANT ALL PRIVILEGES ON librenms.* TO 'librenms'@'localhost';
exit
- 重啟資料庫
systemctl restart mariadb
安裝 php 服務
- 安裝 php 必要套件
apt install -y apt-transport-https lsb-release ca-certificates wget
- 新增 php 金鑰
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
- 新增 PHP 來源庫
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/sury-php.list && apt update
- 安裝 php 及其他必要套件
apt install apt-transport-https lsb-release ca-certificates wget acl curl fping git graphviz imagemagick mtr-tiny nmap php8.3-cli php8.3-curl php8.3-fpm php8.3-gd php8.3-gmp php8.3-mbstring php8.3-mysql php8.3-snmp php8.3-xml php8.3-zip python3-dotenv python3-pymysql python3-redis python3-setuptools python3-systemd python3-pip rrdtool snmp snmpd unzip whois
- 安裝 Composer 作曲家
# 將dirs更改為我們希望將composer安裝到的位置
cd /usr/local/bin
# 安裝 composer
curl -sS https://getcomposer.org/installer | php
# 重新命名 composer
mv composer.phar composer
安裝 Librenms 服務
- 新增加 librenms 使用者
useradd librenms -d /opt/librenms -M -r -s "$(which bash)"
- 下載 Librenms 服務
cd /opt
git clone https://github.com/librenms/librenms.git
- 設定權限
chown -R librenms:librenms /opt/librenms
chmod 771 /opt/librenms
setfacl -d -m g::rwx /opt/librenms/rrd /opt/librenms/logs /opt/librenms/bootstrap/cache/ /opt/librenms/storage/
setfacl -R -m g::rwx /opt/librenms/rrd /opt/librenms/logs /opt/librenms/bootstrap/cache/ /opt/librenms/storage/
- 安裝 LibreNMS 及 php 相關套件
su - librenms
./scripts/composer_wrapper.php install --no-dev
exit
- 因 Python 在 3.11 以上版本需要在
venv
環境下才能執行
pip3 install --user --break-system-packages -r /opt/librenms/requirements.txt
參考資料來源 FAIL: Python3 module issue found: ‘Required packages
設定 php 服務
- 安裝好要去修改 php 設定檔
vim /etc/php/8.3/fpm/php.ini
vim /etc/php/8.3/cli/php.ini
- 修改時區
[Date]
修改前
;date.timezone =
修改後
date.timezone = Asia/Taipei
存檔
:wq
# 指令修改
sed -i "s|^;date.timezone =.*$|date.timezone = Asia/Taipei|" /etc/php/8.3/fpm/php.ini
sed -i "s|^;date.timezone =.*$|date.timezone = Asia/Taipei|" /etc/php/8.3/cli/php.ini
- 新增加 librenms PHP-FPM 設定檔
cp /etc/php/8.3/fpm/pool.d/www.conf /etc/php/8.3/fpm/pool.d/librenms.conf
vim /etc/php/8.3/fpm/pool.d/librenms.conf
- 修改內容如下
將原是 [www] 修改為 [librenms]
user = librenms
group = librenms
listen = /run/php-fpm-librenms.sock
# 指令修改
sed -i 's/\[www\]/\[librenms\]/g' /etc/php/8.3/fpm/pool.d/librenms.conf
sed -i "s|^user = www-data.*$|user = librenms|" /etc/php/8.3/fpm/pool.d/librenms.conf
sed -i "s|^group = www-data.*$|group = librenms|" /etc/php/8.3/fpm/pool.d/librenms.conf
sed -i "s|^listen = /run/php/php8.3-fpm.sock.*$|listen = /run/php-fpm-librenms.sock|" /etc/php/8.3/fpm/pool.d/librenms.conf
- 設定開機自動啟動及重啟服務
systemctl enable php8.3-fpm ; systemctl restart php8.3-fpm
or
sudo systemctl enable --now php8.3-fpm
設定 Web 服務
- 修改全域設定檔
vim /etc/nginx/nginx.conf
# 修改前
user nginx;
# 修改後
user www-data;
# 指令修改
sed -i 's|^user nginx;.*$|user www-data;|' /etc/nginx/nginx.conf
- 新增加 LibreNMS 設定檔
vim /etc/nginx/conf.d/librenms.conf
- 將以下內容貼到
librenms.conf
編輯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 ~ [^/]\.php(/|$) {
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass unix:/run/php-fpm-librenms.sock;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi_params;
}
location ~ /\.(?!well-known).* {
deny all;
}
}
- 重啟 web 服務
systemctl restart nginx
設定 lnms 服務
- 啟用 lnms
ln -s /opt/librenms/lnms /usr/bin/lnms
cp /opt/librenms/misc/lnms-completion.bash /etc/bash_completion.d/
設定 SNMP 服務
- 從樣版複製一份
cp /opt/librenms/snmpd.conf.example /etc/snmp/snmpd.conf
- 編輯設定檔將 「RANDOMSTRINGGOESHERE」 修改或預設 public
vim /etc/snmp/snmpd.conf
- 下載
librenms-agent
套件
curl -o /usr/bin/distro https://raw.githubusercontent.com/librenms/librenms-agent/master/snmp/distro
chmod +x /usr/bin/distro
systemctl enable snmpd && systemctl restart snmpd
設定排程
- 從 Librenms 目錄下複製到 cron.d 裡面
cp /opt/librenms/dist/librenms.cron /etc/cron.d/librenms
啟用調度程式
cp /opt/librenms/dist/librenms-scheduler.service /opt/librenms/dist/librenms-scheduler.timer /etc/systemd/system/
systemctl enable librenms-scheduler.timer
systemctl start librenms-scheduler.timer
設定 logrotate
- 複製 logrotate 設定檔
cp /opt/librenms/misc/librenms.logrotate /etc/logrotate.d/librenms
開始安裝 LibreNMS
- 開啟瀏灠器輸入
http://librenms.example.com/
(站台位置)
- 檢測安裝環境是否有正常,如果出現異常要把缺的套件都安裝起來才能正常運
- 填入要連接的資料庫名稱及登入帳號及密碼
- 會自動建立資料庫裡面表單
- 確認完成的畫面,直接按下下一個圖示繼續
- 填入要登入的系統管理員的帳號、密碼及電子郵件
- 已產生管理者的帳號
- 安裝完成了的畫面,可以點選
Validate
這個選項確認說服務是否有正確安裝完成
最後確認 Final steps
- 如果安裝有問題,請在「librenms」目錄下以「root」身份運行「 validate.php 」
cd /opt/librenms
./validate.php
- 以
librenms
權限來執行確認
sudo su - librenms
./validate.php
備註
- BUBU 檢查系統狀態,系統顯示資料庫時間有異常,在最新版本已可以透過按鍵進行修正,修正完之後請手動重新整理頁面就系統會顯示正常