# LibreNMS

LibreNMS監控系統

# LibreNMS架設

LibreNMS架設

# LibreNMS架設 - Debian 12

#### **運行環境**

- PVE
- LXC
- Debian 12

#### **安裝nginx mariadb php**

```
apt update
```

```
apt install php-mbstring php-cli php-common php-curl php-fpm php-gd php-mbstring php-mysql php-opcache php-readline php-snmp php-xml php-zip acl curl fping git graphviz imagemagick mariadb-client mariadb-server mtr-tiny nginx-full nmap rrdtool snmp snmpd whois unzip python3-pymysql python3-dotenv python3-redis python3-setuptools python3-systemd python3-pip -y
```

#### **安裝 Composer**

```
cd /usr/local/bin

curl -sS https://getcomposer.org/installer | php 

mv composer.phar composer 
```

#### **新增使用者**  


```
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和套件**

```
su librenms
cd /opt/librenms/
./scripts/composer_wrapper.php install --no-dev

exit
pip3 install --user --break-system-packages -r /opt/librenms/requirements.txt
```

#### **修改PHP時區**

```
sed -i "s|^;date.timezone =.*$|date.timezone = Asia/Taipei|" /etc/php/8.2/fpm/php.ini
sed -i "s|^;date.timezone =.*$|date.timezone = Asia/Taipei|" /etc/php/8.2/cli/php.ini

系統設定時區
timedatectl set-timezone Asia/Taipei
```

#### **設定 PHP-FPM**

```
cp /etc/php/8.2/fpm/pool.d/www.conf /etc/php/8.2/fpm/pool.d/librenms.conf
nano /etc/php/8.2/fpm/pool.d/librenms.conf
```

```
Change [www] to [librenms]:
[librenms]
Change user and group to “librenms”:
user = librenms
group = librenms
Change listen to a unique name:
listen = /run/php-fpm-librenms.sock
```

```
systemctl enable php8.2-fpm
systemctl restart php8.2-fpm
```


#### **設定MariaDB**

**編輯`/etc/mysql/mariadb.conf.d/50-server.cnf`**

```
[mysqld]底下新增

innodb_file_per_table=1
lower_case_table_names=0
```

```
systemctl enable mariadb
systemctl restart mariadb
```


#### **MariaDB新增使用者**

```
mysql -u root

CREATE DATABASE librenms CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'librenmsuser'@'localhost' IDENTIFIED BY 'librenmspswd';
GRANT ALL PRIVILEGES ON librenms.* TO 'librenmsuser'@'localhost';
FLUSH PRIVILEGES;
exit
```


#### **設定Nginx**

**建立`/etc/nginx/conf.d/librenms.conf`**

```
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;
    }
}
```

```
rm /etc/nginx/sites-enabled/default
rm /etc/nginx/sites-available/default

systemctl enable nginx
systemctl restart nginx
```

#### **Enable lnms command completion**

```
ln -s /opt/librenms/lnms /usr/bin/lnms
cp /opt/librenms/misc/lnms-completion.bash /etc/bash_completion.d/
```

#### **Configure snmpd**

```
cp /opt/librenms/snmpd.conf.example /etc/snmp/snmpd.conf

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

#### **設定排成**  


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

#### **Copy logrotate config**

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

瀏覽器`<strong>http://ip</strong>`，依序安裝後進行組態驗證

```
cd /opt/librenms

su librenms

./validate.php
```

# LibreNMS架設 - Ubuntu 20

#### **安裝環境**

- **PVE**
- **LXC**
- **Ubuntu 20**

#### **設定時區**

```
timedatectl set-timezone Asia/Taipei
```

#### **最新LibreNMS已強制要求&gt;php8.1**  


```
apt update
apt install software-properties-common
add-apt-repository universe
apt install php-mbstring php8.1-cli php8.1-common php8.1-curl php8.1-fpm php8.1-gd php8.1-mbstring php8.1-mysql php8.1-opcache php8.1-readline php8.1-snmp php8.1-xml php8.1-zip acl curl fping git graphviz imagemagick mariadb-client mariadb-server mtr-tiny nginx-full nmap rrdtool snmp snmpd whois unzip python3-pymysql python3-dotenv python3-redis python3-setuptools python3-systemd python3-pip -y
```

<p class="callout warning">php-mbstring未安裝會造成500 ERROR  
</p>

#### **Add librenms user**  


```
useradd librenms -d /opt/librenms -M -r -s "$(which bash)"
```

#### **Download LibreNMS**

```
cd /opt
git clone https://github.com/librenms/librenms.git
```

#### **Set permissions**

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


#### **更改時區**

```
nano /etc/php/8.1/fpm/php.ini
nano /etc/php/8.1/cli/php.ini

搜尋[Date] 把時區改為 Asia/Taipei
```

#### **修改MariaDB**

```
nano /etc/mysql/mariadb.conf.d/50-server.cnf

Within the [mysqld] section add:
innodb_file_per_table=1
lower_case_table_names=0
```

```
systemctl enable mariadb
systemctl restart mariadb
```

```
mysql -u root

CREATE USER 'librenmsuser'@'localhost' IDENTIFIED BY 'librenmsuserpswd';
GRANT ALL PRIVILEGES ON librenms.* TO 'librenmsuser'@'localhost';
FLUSH PRIVILEGES;
exit
```

#### **修改PHP-FPM**

```
cp /etc/php/8.1/fpm/pool.d/www.conf /etc/php/8.1/fpm/pool.d/librenms.conf
nano /etc/php/8.1/fpm/pool.d/librenms.conf

Change [www] to [librenms]:

[librenms]

Change user and group to “librenms”:

user = librenms
group = librenms

Change listen to a unique name:

listen = /run/php-fpm-librenms.sock

Configure Web Server
```

#### **建立librenms.conf**  


```
nano /etc/nginx/conf.d/librenms.conf

server {
 listen      80;
 server_name 127.0.0.1;
 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_pass unix:/run/php-fpm-librenms.sock;
  fastcgi_split_path_info ^(.+\.php)(/.+)$;
  include fastcgi.conf;
 }
 location ~ /\.(?!well-known).* {
  deny all;
 }
}
```

```
rm /etc/nginx/sites-enabled/default
rm /etc/nginx/sites-available/default

systemctl restart nginx
systemctl restart php8.1-fpm
```

#### **Enable lnms command completion**

```
ln -s /opt/librenms/lnms /usr/bin/lnms
cp /opt/librenms/misc/lnms-completion.bash /etc/bash_completion.d/
```

#### **Configure snmpd**

```
cp /opt/librenms/snmpd.conf.example /etc/snmp/snmpd.conf

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

#### **Cron job**

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

#### **Copy logrotate config**

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

瀏覽器`<strong>http://ip</strong>`，依序安裝後進行組態驗證

```
cd /opt/librenms

su librenms

./validate.php
```

# LibreNMS 警報相關設定

LibreNMS 警報相關設定

# LibreNMS LINE Messaging API 設定

##### **運行環境**  


- **Librenms 25.9.0**

##### **LINE Messaging API 申請**

**先在LINE Developers新增一個channel並選擇Messaging API**

**[![image.png](https://note.homesitetw.com/uploads/images/gallery/2025-09/scaled-1680-/lNtimage.png)](https://note.homesitetw.com/uploads/images/gallery/2025-09/lNtimage.png)**

##### **設定警報傳送**

**Type選擇LINE Messaging API**

**Access token輸入Channel access token**

**userID輸入Channel 內的user ID**

**[![image.png](https://note.homesitetw.com/uploads/images/gallery/2025-09/scaled-1680-/e3Rimage.png)](https://note.homesitetw.com/uploads/images/gallery/2025-09/e3Rimage.png)**

**設定好後點選右邊Test，LINE有出現測試訊息則成功**

**[![image.png](https://note.homesitetw.com/uploads/images/gallery/2025-09/scaled-1680-/qFkimage.png)](https://note.homesitetw.com/uploads/images/gallery/2025-09/qFkimage.png)**

# LibreNMS Mdadm RAID監控警報

##### **啟用Mdadm**

**確認已安裝[Mdadm監控](https://note.homesitetw.com/books/librenms/page/librenms-mdadm-raid)**

##### **新增警報規則**

**Severity:警報等級**

**Max alert ：最多通知幾次**

**Delay ：延遲多久再來通知**

**Interval ：通知間隔**

**Transports:選擇傳送類別**

[![image.png](https://note.homesitetw.com/uploads/images/gallery/2025-09/scaled-1680-/K2Eimage.png)](https://note.homesitetw.com/uploads/images/gallery/2025-09/K2Eimage.png)

##### **新增警報範本**

[![image.png](https://note.homesitetw.com/uploads/images/gallery/2025-09/scaled-1680-/yb6image.png)](https://note.homesitetw.com/uploads/images/gallery/2025-09/yb6image.png)

```
{{ $alert->title }}
設備名稱: {{ $alert->sysName }}
等級: {{ $alert->severity }}
運行時間: {{ $alert->uptime_short }}
警示時間: {{ $alert->timestamp }}
@foreach ($alert->faults as $key => $value)
RAID : @php echo (explode("_", $value['metric'])[0]); @endphp

@endforeach
```

##### **測試**

[![image.png](https://note.homesitetw.com/uploads/images/gallery/2025-09/scaled-1680-/XS4image.png)](https://note.homesitetw.com/uploads/images/gallery/2025-09/XS4image.png)

[![image.png](https://note.homesitetw.com/uploads/images/gallery/2025-09/scaled-1680-/GpWimage.png)](https://note.homesitetw.com/uploads/images/gallery/2025-09/GpWimage.png)

# LibreNMS 硬碟使用率監控警報

##### **新增警報規則**

**範例監控"/"根目錄使用率超過80%**

**Severity:警報等級**

**Max alert ：最多通知幾次**

**Delay ：延遲多久再來通知**

**Interval ：通知間隔**

**Transports:選擇傳送類別**

[![image.png](https://note.homesitetw.com/uploads/images/gallery/2025-09/scaled-1680-/sQDimage.png)](https://note.homesitetw.com/uploads/images/gallery/2025-09/sQDimage.png)

##### **新增警報範本**

[![image.png](https://note.homesitetw.com/uploads/images/gallery/2025-09/scaled-1680-/cPqimage.png)](https://note.homesitetw.com/uploads/images/gallery/2025-09/cPqimage.png)

```
{{ $alert->title }}
設備名稱: {{ $alert->sysName }}
等級: {{ $alert->severity }}
運行時間: {{ $alert->uptime_short }}
警示時間: {{ $alert->timestamp }}
@foreach ($alert->faults as $key => $value)
硬碟名稱: {{ $value['storage_descr'] }}
目前硬碟使用率: {{ $value['storage_perc'] }} %
@endforeach
```

##### **測試**

[![image.png](https://note.homesitetw.com/uploads/images/gallery/2025-09/scaled-1680-/lKRimage.png)](https://note.homesitetw.com/uploads/images/gallery/2025-09/lKRimage.png)

[![image.png](https://note.homesitetw.com/uploads/images/gallery/2025-09/scaled-1680-/bsGimage.png)](https://note.homesitetw.com/uploads/images/gallery/2025-09/bsGimage.png)

# LibreNMS CPU使用率監控警報

##### **新增警報規則**

**Severity:警報等級**

**Max alert ：最多通知幾次**

**Delay ：延遲多久再來通知**

**Interval ：通知間隔**

**Transports:選擇傳送類別**

[![image.png](https://note.homesitetw.com/uploads/images/gallery/2025-09/scaled-1680-/4rIimage.png)](https://note.homesitetw.com/uploads/images/gallery/2025-09/4rIimage.png)

**由於多核心CPU預設一顆CPU觸發就會警報，故修改使用平均使用率計算**

**官方解決範本[https://docs.librenms.org/Alerting/Rules/#advanced](https://docs.librenms.org/Alerting/Rules/#advanced)，不過有GROUP語法錯誤告警**

**以下為自訂修改版本搭配警報範本使用，Override SQL記得開啟**

[![image.png](https://note.homesitetw.com/uploads/images/gallery/2025-09/scaled-1680-/Pzfimage.png)](https://note.homesitetw.com/uploads/images/gallery/2025-09/Pzfimage.png)

```
SELECT devices.device_id, devices.hostname, devices.status, devices.disabled, devices.ignore,
       AVG(processors.processor_usage) AS cpu_avg, 
	   MIN(processor_descr) AS processor_descr
FROM devices
INNER JOIN processors ON devices.device_id = processors.device_id
WHERE devices.device_id = ?
  AND devices.status = 1
  AND devices.disabled = 0
  AND devices.ignore = 0
GROUP BY devices.device_id, devices.hostname, devices.status, devices.disabled,devices.ignore,processor_descr
HAVING AVG(processors.processor_usage) > 70;
```

##### **新增警報範本**

[![image.png](https://note.homesitetw.com/uploads/images/gallery/2025-09/scaled-1680-/IoZimage.png)](https://note.homesitetw.com/uploads/images/gallery/2025-09/IoZimage.png)

```
{{ $alert->title }}
設備名稱: {{ $alert->sysName }}
等級: {{ $alert->severity }}
運行時間: {{ $alert->uptime_short }}
警示時間: {{ $alert->timestamp }}
@foreach ($alert->faults as $key => $value)
CPU名稱: {{ $value['processor_descr'] }}
目前CPU使用率: {{ round($value['cpu_avg']) }} %
@endforeach
```

##### **測試**

[![image.png](https://note.homesitetw.com/uploads/images/gallery/2025-09/scaled-1680-/Mwwimage.png)](https://note.homesitetw.com/uploads/images/gallery/2025-09/Mwwimage.png)

[![image.png](https://note.homesitetw.com/uploads/images/gallery/2025-09/scaled-1680-/jqXimage.png)](https://note.homesitetw.com/uploads/images/gallery/2025-09/jqXimage.png)

# LibreNMS 外部整合

# LibreNMS Smokeping 安裝設定

<p class="callout info"><span style="color: rgb(0, 0, 0);">**SmokePing為開源的網路品質監控專案，LibreNMS可整合Smokeping方便監測設備**</span></p>

##### <span style="color: rgb(0, 0, 0);">**安裝Smokeping**</span>

<span style="color: rgb(0, 0, 0);">**下載Smokeping**</span>

```
apt-get install smokeping
```

<span style="color: rgb(0, 0, 0);">**複製Librenms smokeping腳本到cron**</span>

```
sudo cp /opt/librenms/misc/smokeping-debian.example /etc/cron.hourly/librenms-smokeping
sudo chmod +x /etc/cron.hourly/librenms-smokeping
```

<span style="color: rgb(0, 0, 0);">**手動執行cron一次並確認有建立檔案**</span>

```
/etc/cron.hourly/librenms-smokeping
ls -l /etc/smokeping/config.d/librenms-targets.conf
ls -l /etc/smokeping/config.d/librenms-probes.conf 
```

<span style="color: rgb(0, 0, 0);">**[![image.png](https://note.homesitetw.com/uploads/images/gallery/2025-11/scaled-1680-/Zzvimage.png)](https://note.homesitetw.com/uploads/images/gallery/2025-11/Zzvimage.png)**</span>

<span style="color: rgb(0, 0, 0);">**刪除`/etc/smokeping/config.d/Probes`內容並新增以下**</span>

```
*** Probes ***

@include /etc/smokeping/config.d/librenms-probes.conf
```

<span style="color: rgb(0, 0, 0);">**刪除`/etc/smokeping/config.d/Targets`內容並新增以下**</span>

```
*** Targets ***

probe = FPing

menu = Top
title = Network Latency Grapher
remark = Welcome to the SmokePing website of <b>Insert Company Name Here</b>. \
         Here you will learn all about the latency of our network.

@include /etc/smokeping/config.d/librenms-targets.conf
```

<span style="color: rgb(0, 0, 0);">**建立Smokeping資料儲存位置**</span>

```
mkdir /opt/librenms/rrd/smokeping
```

<span style="color: rgb(0, 0, 0);">**由於Smokeping執行會無法寫入`/opt/librenms/rrd/smokeping`**</span>

<span style="color: rgb(0, 0, 0);">**須將smokeping加入librenms群組對`/opt/librenms/rrd/smokeping`可讀寫**</span>

```
chown librenms:librenms /opt/librenms/rrd/smokeping

usermod -a -G librenms smokeping
```

<span style="color: rgb(0, 0, 0);">**網頁上設定剛剛建立的目錄，並設定每次測試發 20 個封包**</span>

<span style="color: rgb(0, 0, 0);">**[![image.png](https://note.homesitetw.com/uploads/images/gallery/2025-11/scaled-1680-/jR6image.png)](https://note.homesitetw.com/uploads/images/gallery/2025-11/jR6image.png)**</span>

<span style="color: rgb(0, 0, 0);">**編輯`/etc/smokeping/config.d/Database`，修改step改為每分鐘做一次測試(預設5分鐘)**</span>

<span style="color: rgb(0, 0, 0);">**[![image.png](https://note.homesitetw.com/uploads/images/gallery/2025-11/scaled-1680-/N53image.png)](https://note.homesitetw.com/uploads/images/gallery/2025-11/N53image.png)**</span>

<span style="color: rgb(0, 0, 0);">**編輯`/etc/smokeping/config.d/pathnames`，datadir 改為上面新增的目錄**</span>

<span style="color: rgb(0, 0, 0);">**[![image.png](https://note.homesitetw.com/uploads/images/gallery/2025-11/scaled-1680-/ULsimage.png)](https://note.homesitetw.com/uploads/images/gallery/2025-11/ULsimage.png)**</span>

<span style="color: rgb(0, 0, 0);">**重啟smokeping**</span>

```
service smokeping restart

service smokeping status
```

<span style="color: rgb(0, 0, 0);">**確認Librenms RRD內的smokeping已有資料**</span>

<span style="color: rgb(0, 0, 0);">**[![image.png](https://note.homesitetw.com/uploads/images/gallery/2025-11/scaled-1680-/QUyimage.png)](https://note.homesitetw.com/uploads/images/gallery/2025-11/QUyimage.png)**</span>

<span style="color: rgb(0, 0, 0);">**網頁上Latency內已有smokeping數值**</span>

<span style="color: rgb(0, 0, 0);">**[![image.png](https://note.homesitetw.com/uploads/images/gallery/2025-11/scaled-1680-/ouIimage.png)](https://note.homesitetw.com/uploads/images/gallery/2025-11/ouIimage.png)**</span>

##### <span style="color: rgb(0, 0, 0);">**網頁 Web UI 設定**</span>

<span style="color: rgb(0, 0, 0);">**安裝 fcgiwrap 才能使 CGI 包裝器與 Nginx 互動**</span>

```
apt install fcgiwrap
```

<span style="color: rgb(0, 0, 0);">**編輯`/etc/nginx/conf.d/librenms.conf`設定檔加入smokeping設定**</span>

```
# Browsing to `http://yourlibrenms/smokeping/` should bring up the smokeping web interface

location = /smokeping/ {
        fastcgi_intercept_errors on;

        fastcgi_param   SCRIPT_FILENAME         /usr/lib/cgi-bin/smokeping.cgi;
        fastcgi_param   QUERY_STRING            $query_string;
        fastcgi_param   REQUEST_METHOD          $request_method;
        fastcgi_param   CONTENT_TYPE            $content_type;
        fastcgi_param   CONTENT_LENGTH          $content_length;
        fastcgi_param   REQUEST_URI             $request_uri;
        fastcgi_param   DOCUMENT_URI            $document_uri;
        fastcgi_param   DOCUMENT_ROOT           $document_root;
        fastcgi_param   SERVER_PROTOCOL         $server_protocol;
        fastcgi_param   GATEWAY_INTERFACE       CGI/1.1;
        fastcgi_param   SERVER_SOFTWARE         nginx/$nginx_version;
        fastcgi_param   REMOTE_ADDR             $remote_addr;
        fastcgi_param   REMOTE_PORT             $remote_port;
        fastcgi_param   SERVER_ADDR             $server_addr;
        fastcgi_param   SERVER_PORT             $server_port;
        fastcgi_param   SERVER_NAME             $server_name;
        fastcgi_param   HTTPS                   $https if_not_empty;

        fastcgi_pass unix:/var/run/fcgiwrap.socket;
}

location ^~ /smokeping/ {
        alias /usr/share/smokeping/www/;
        index smokeping.cgi;
        gzip off;
}
```

<span style="color: rgb(0, 0, 0);">**重啟Nginx**</span>

```
nginx -t

service nginx restart
```

<span style="color: rgb(0, 0, 0);">**網頁上URL填入`/smokeping`**</span>

<span style="color: rgb(0, 0, 0);">**[![image.png](https://note.homesitetw.com/uploads/images/gallery/2025-11/scaled-1680-/H2Nimage.png)](https://note.homesitetw.com/uploads/images/gallery/2025-11/H2Nimage.png)**</span>

<span style="color: rgb(0, 0, 0);">**重整網頁後選擇`工具`&gt;`smokeping`**</span>

`<span style="color: rgb(0, 0, 0);"><strong><a href="https://note.homesitetw.com/uploads/images/gallery/2025-11/NFjimage.png" rel="noopener" style="color: rgb(0, 0, 0);" target="_blank"><img alt="image.png" src="https://note.homesitetw.com/uploads/images/gallery/2025-11/scaled-1680-/NFjimage.png"></img></a></strong></span>`

<span style="color: rgb(0, 0, 0);">**[![image.png](https://note.homesitetw.com/uploads/images/gallery/2025-11/scaled-1680-/J4dimage.png)](https://note.homesitetw.com/uploads/images/gallery/2025-11/J4dimage.png)**</span>

##### <span style="color: rgb(0, 0, 0);">**自訂監控設定**</span>

<span style="color: rgb(0, 0, 0);">**安裝好Web UI後顯示的是Librenms監控的設備清單，可自行加入host監控**</span>

<span style="color: rgb(0, 0, 0);">**編輯`/etc/smokeping/config.d/Targets`，新增自訂監控設定**</span>

```
@include /etc/smokeping/config.d/custom.conf
```

<span style="color: rgb(0, 0, 0);">**編輯`/etc/smokeping/config.d/custom.conf`，加入想要監控的host**</span>

```
+ Others
menu = Others
title = Others

++ GoogleDNS
menu = Google DNS
title = Google DNS
host = 8.8.8.8

++ CHTDNS
menu = CHT DNS
title = CHT DNS
host = 168.95.1.1
```

<span style="color: rgb(0, 0, 0);">**確認設定正確後重啟服務**</span>

```
smokeping --check

service smokeping restart
```

<span style="color: rgb(0, 0, 0);">**網頁上即可看到剛剛新增的host**</span>

[![image.png](https://note.homesitetw.com/uploads/images/gallery/2025-11/scaled-1680-/buDimage.png)](https://note.homesitetw.com/uploads/images/gallery/2025-11/buDimage.png)

##### <span style="color: rgb(0, 0, 0);">**自訂Probes**</span>

<span style="color: rgb(0, 0, 0);">**除了內建使用fping，也可以下載Github上的<span style="color: rgb(230, 126, 35);">[tcpping](https://github.com/deajan/tcpping "tcpping")</span>，使用traceroute和tcptraceroute的命令，增加TCP PORT的監控**</span>

```
curl -o /usr/bin/tcpping -L https://raw.githubusercontent.com/deajan/tcpping/master/tcpping
chmod +x /usr/bin/tcpping
```

<span style="color: rgb(0, 0, 0);">**<span style="color: rgb(0, 0, 0);">測試tcpping正常</span>**</span>

```
root@librenms:~#  tcpping google.com 443
seq 0: tcp response from nctsaa-ac-in-f14.1e100.net (142.250.196.206)  7.402 ms
seq 1: tcp response from hkg07s38-in-f14.1e100.net (142.250.204.46)  7.545 ms
seq 2: tcp response from lctsaa-aa-in-f14.1e100.net (142.250.66.78)  7.399 ms
```

<span style="color: rgb(0, 0, 0);">**預設情況下，traceroute 需要 root 權限，所以要允許smokeping使用traceroute**</span>

<span style="color: rgb(0, 0, 0);">**建立`<span style="color: rgb(0, 0, 0);">/etc/tcpping.conf</span>`設定檔，並加入`-Z`參數(使用sudo)**</span>

```
TCPPING_EXTRA_ARGS="-Z"
```

<span style="color: rgb(0, 0, 0);">**執行`visudo`，讓 smokeping 以 root 身分執行 traceroute 無須密碼**</span>

```
smokeping ALL=(ALL) NOPASSWD: /usr/bin/traceroute
```

<span style="color: rgb(0, 0, 0);">**編輯`/etc/smokeping/config.d/Probes`，增加tcpping**</span>

```
+ TCPPing
  binary = /usr/bin/tcpping
```

[![image.png](https://note.homesitetw.com/uploads/images/gallery/2025-11/scaled-1680-/3Znimage.png)](https://note.homesitetw.com/uploads/images/gallery/2025-11/3Znimage.png)

<span style="color: rgb(0, 0, 0);">**在監控設定檔內新增需要的host並指定probe和port**</span>

```
++ Google-https
menu = Google https
title = Google https
probe = TCPPing
port = 443
host = google.com
```

<span style="color: rgb(0, 0, 0);">**重啟smokeping後可以看到probe使用TCP Ping**</span>

[![image.png](https://note.homesitetw.com/uploads/images/gallery/2025-11/scaled-1680-/CCyimage.png)](https://note.homesitetw.com/uploads/images/gallery/2025-11/CCyimage.png)

# LibreNMS 應用程式設定

LibreNMS 應用程式設定

# LibreNMS Mdadm RAID監控

**使LibreNMS可監控Mdadm RAID狀態**

**安裝jq套件**

```
apt install jq
```

**下載mdadm script**

```
wget https://raw.githubusercontent.com/librenms/librenms-agent/master/snmp/mdadm -O /etc/snmp/mdadm
```

```
chmod +x /etc/snmp/mdadm
```

**確認可執行**

```
root@LS-WVL885:~# /etc/snmp/mdadm 
{"data":[{"name":"md0","level":"raid1","size":999227392,"disc_count":2,"
```

**編輯`/etc/snmp/snmpd.conf`**

**extend擴展記得included .1.3.6.1.4.1.8072.1.3**

```
extend mdadm /etc/snmp/mdadm
```

```
service snmpd restart
```

**確認snmpwalk可以抓到mdadm**

```
jason@test:~$ snmpwalk -v2c -c public 192.168.1.1 .1.3.6.1.4.1.8072.1.3
NET-SNMP-EXTEND-MIB::nsExtendNumEntries.0 = INTEGER: 2
NET-SNMP-EXTEND-MIB::nsExtendCommand."mdadm" = STRING: /etc/snmp/mdadm
NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."mdadm" = STRING: {"data":[{"name":"md0","level":"raid1...
```

**LibreNMS內應用程式會自動開啟Mdadm**

[![image.png](https://note.homesitetw.com/uploads/images/gallery/2025-09/scaled-1680-/XQSimage.png)](https://note.homesitetw.com/uploads/images/gallery/2025-09/XQSimage.png)

**應用程式有RAID狀態**

[![image.png](https://note.homesitetw.com/uploads/images/gallery/2025-09/scaled-1680-/xxwimage.png)](https://note.homesitetw.com/uploads/images/gallery/2025-09/xxwimage.png)

# LibreNMS 被監控設備SNMP設定

#### **於被監控的主機上安裝Snmpd**

```
apt install snmpd -y
```

<p class="callout info">某些 Linux 發行版不會在SNMP中取得正確版本訊息，透過 LibreNMS 提供的 Distro 工具取得正確版本訊息</p>

```
curl -o /usr/bin/distro https://raw.githubusercontent.com/librenms/librenms-agent/master/snmp/distro
chmod +x /usr/bin/distro
```

#### **設定Snmpd**

編輯`/etc/snmp/snmpd.conf`

```
agentAddress udp:192.168.0.1:161

view systemview included .1.3.6.1.2.1.1
view systemview included .1.3.6.1.4.1.2021
view systemview included .1.3.6.1.2.1.25
view systemview excluded .1.3.6.1.4.1.2021.13.16
view systemview included .1.3.6.1.2.1.2 
view systemview included .1.3.6.1.2.1.31  
extend .1.3.6.1.4.1.2021.7890.1 distro /usr/bin/distro
rocommunity nms 192.168.0.10/32 -V systemview
includeAllDisks 10%
load 12 10 5
```

**以下為第二種extend設定，GPT回答**

**你看到的「`extend .1.3.6.1.4.1.2021.7890.x ...`」是 早期的寫法，因為：**

1. **舊版 SNMP / LibreNMS agent 腳本**  
    **以前大家習慣把 extend 掛在 `.1.3.6.1.4.1.2021`（UCD-SNMP-MIB），這個 MIB 原本就有 CPU/Mem/Load，大家直接沿用。**
2. **相容性考量**  
    **舊的監控系統（Cacti、Nagios plugins）或舊版 LibreNMS，預設就是去 `.2021.7890.x` 找。這樣寫不用改 view，裝好就能抓到。**
3. **官方後來才引入 NET-SNMP-EXTEND-MIB**  
    **新版 net-snmp (`5.4+`) 支援 `extend <name> <command>`，會自動掛到 `.1.3.6.1.4.1.8072.1.3`。**  
    **這才是「標準化」的做法，也比較乾淨。**

```
view systemview included .1.3.6.1.4.1.8072.1.3
extend distro /usr/bin/distro
```

#### **基本設定說明**

```
snmpd在本機192.168.0.1監聽
允許監控項目
.1.3.6.1.2.1.1 系統資訊
.1.3.6.1.4.1.2021 CPU 使用率、記憶體、磁碟使用等
.1.3.6.1.2.1.25 儲存設備、處理器資訊
.1.3.6.1.2.1.2 網路卡（interface）的資訊，如流量、狀態
.1.3.6.1.2.1.31 提供進階網路介面統計資訊，如 64-bit 流量統計
excluded .1.3.6.1.4.1.2021.13.16 包含禁用 sensors 偵測，如用LXC避免可顯示實體主機的 sensors資訊
.1.3.6.1.4.1.8072.1.3 NET-SNMP-EXTEND-MIB擴充
extend distro /usr/bin/distro  將/usr/bin/distro資訊回報

社群名稱為 nms
限定librenms主機 192.168.0.10 可讀取
includeAllDisks 10% 監控磁碟空間使用率
load 12 10 5 設定系統負載平均值的門檻
```

於Librenms加入設備後，發現設備時Operating System會顯示詳細版本資訊

[![image.png](https://note.homesitetw.com/uploads/images/gallery/2025-06/scaled-1680-/image.png)](https://note.homesitetw.com/uploads/images/gallery/2025-06/image.png)

# LibreNMS 掃描自動新增設備

**於/opt/librenms/config.php設定**

```
$config['discovery_by_ip'] = true;
### Auto Discovery Support
$config['snmp']['community'][] = "JCE";    #community設定
$config['nets'][] = "10.166.0.0/24";       #網段或ip設定
$config['nets'][] = "10.166.64.0/24";
$config['nets'][] = "10.166.128.0/24";
$config['nets'][] = "10.166.192.0/24";
```

```
root@librenms:~$ su librenms 
#切換librenms使用者
librenms@librenms:~$ ./snmp-scan.py    
#執行script
```

# LibreNMS SNMP trap 設定

##### **運行環境**

- **PVE**
- **LXC**
- **Debian 12**

##### **安裝snmptrapd**

```
apt install snmptrapd -y
```

##### **設定**

**編輯`/etc/snmp/snmptrapd.conf`，新增以下**

```
disableAuthorization yes
authCommunity log,execute,net COMMUNITYSTRING
traphandle default /opt/librenms/snmptrap.php
```

**確認snmptrapd系統服務位置**

**[![image.png](https://note.homesitetw.com/uploads/images/gallery/2025-08/scaled-1680-/image.png)](https://note.homesitetw.com/uploads/images/gallery/2025-08/image.png)**

**修改`/lib/systemd/system/snmptrapd.service`**

```
[Unit]
Description=Simple Network Management Protocol (SNMP) Trap Daemon.
After=network.target
ConditionPathExists=/etc/snmp/snmptrapd.conf

[Service]
Environment="MIBSDIR=/opt/librenms/mibs"
Type=simple
ExecStart=/usr/sbin/snmptrapd -f -m IF-MIB -M /opt/librenms/mibs
ExecReload=/bin/kill -HUP $MAINPID

[Install]
WantedBy=multi-user.target
```

**重啟服務**

```
systemctl daemon-reload
systemctl enable snmptrapd
systemctl restart snmptrapd
```

##### **測試**

**Client發送eth0 down**

```
snmptrap -v 2c -c public 192.168.100.1 '' .1.3.6.1.6.3.1.1.5.3   .1.3.6.1.2.1.2.2.1.1 i 2   .1.3.6.1.2.1.2.2.1.2 s "eth0"   .1.3.6.1.2.1.2.2.1.7 i 1   .1.3.6.1.2.1.2.2.1.8 i 2
```

**確認網頁有收到TRAP**

**[![image.png](https://note.homesitetw.com/uploads/images/gallery/2025-08/scaled-1680-/evuimage.png)](https://note.homesitetw.com/uploads/images/gallery/2025-08/evuimage.png)**

**[https://docs.librenms.org/Extensions/SNMP-Trap-Handler/#option-1](https://docs.librenms.org/Extensions/SNMP-Trap-Handler/#option-1)**

# LibreNMS 自訂Custom OID

**因LS-WVL SNMP無溫度輸出，使用自訂Custom OID紀錄溫度**

**`/sys/class/thermal/thermal_zone0/temp`為LS-WVL溫度值**

**編輯`/etc/snmp/snmpd.conf`**

****extend擴展記得included .1.3.6.1.4.1.8072.1.3****

```
extend cpuTemp /bin/awk '{printf "%.2f",$1/1000}' /sys/class/thermal/thermal_zone0/temp
```

**確認snmpwalk可以抓到cpuTemp**

```
jason@test:~$ snmpwalk -v2c -c public 192.168.1.1 .1.3.6.1.4.1.8072.1.3
...
NET-SNMP-EXTEND-MIB::nsExtendOutLine."cpuTemp".1 = STRING: 54.31
```

**新增Custom OID**

[![image.png](https://note.homesitetw.com/uploads/images/gallery/2025-09/scaled-1680-/bpbimage.png)](https://note.homesitetw.com/uploads/images/gallery/2025-09/bpbimage.png)

**圖表紀錄**

[![image.png](https://note.homesitetw.com/uploads/images/gallery/2025-09/scaled-1680-/rb4image.png)](https://note.homesitetw.com/uploads/images/gallery/2025-09/rb4image.png)