# LibreNMS 自訂 LVM-Thin Pool 監控

<div class="" data-bfc="" data-complete="true" data-hveid="CAIIAAgACA8QAQ" data-sfc-cp="" data-sfc-root="c" data-ved="2ahUKEwinnvn1meuXAxUWsFYBHVKKDuEQi4wTegoIAggACAAIDxAB" id="bkmrk-%E5%82%B3%E7%B5%B1-lvm%EF%BC%9A-%E7%95%B6%E6%82%A8%E5%BB%BA%E7%AB%8B%E5%82%B3%E7%B5%B1%E7%9A%84-lv%EF%BC%88l" jsaction="" jscontroller="eHDDzf#DtOdcb" jsuid="HbIrYb_63">**<span style="color: rgb(0, 0, 0);"><span class="iNqyIf" data-complete="true" data-sfc-cp="" data-sfc-root="c"><span class="rQesXe MPyX"><span style="color: rgb(224, 62, 45);">傳統 LVM</span>：</span> 當您建立傳統的 LV（Logical Volume）並格式化掛載（例如 `/dev/mapper/vg-lv` 掛載到 `/data`），它在作業系統中是一個標準的「掛載檔案系統」。LibreNMS 透過標準的 SNMP（HOST-RESOURCES-MIB）就能直接抓到這個掛載點的磁碟容量與使用率。</span></span>**</div><div class="" data-bfc="" data-complete="true" data-hveid="CAIIAAgACA8QBQ" data-sfc-cp="" data-sfc-root="c" data-ved="2ahUKEwinnvn1meuXAxUWsFYBHVKKDuEQi4wTegoIAggACAAIDxAF" id="bkmrk-lvm-thin-pool%EF%BC%9A-lvm-t" jsaction="" jscontroller="eHDDzf#DtOdcb" jsuid="HbIrYb_6e">**<span class="iNqyIf" data-complete="true" data-sfc-cp="" data-sfc-root="c" style="color: rgb(0, 0, 0);"><span class="rQesXe MPyX"><span style="color: rgb(224, 62, 45);">LVM-Thin Pool</span>：</span> LVM-Thin Pool 是一個「區塊層級的儲存池」（如 Proxmox VE 上的 `local-lvm`）。<span class="rQesXe MPyX">它本身沒有檔案系統，也沒有掛載到任何目錄上</span>。因為它在系統中沒有 mount point，標準的 SNMP 走索引時根本看不到它，LibreNMS 自然就無法自動探索（Discovery）並畫出圖表。</span>**</div>#### <span style="color: rgb(0, 0, 0);">**<span class="iNqyIf" data-complete="true" data-sfc-cp="" data-sfc-root="c">建立SNMP Extend 腳本</span>**</span>

<span style="color: rgb(0, 0, 0);">**<span class="iNqyIf" data-complete="true" data-sfc-cp="" data-sfc-root="c">我的lvm-thin是使用USB外接硬碟，已經建立usb-lvm-thin</span>**</span>

<span style="color: rgb(0, 0, 0);">**<span class="iNqyIf" data-complete="true" data-sfc-cp="" data-sfc-root="c">建立`/etc/snmp/usb-lvm-thin`，<span style="color: rgb(45, 194, 107);">usb-lvm-thin</span>修改成自已的Thin Pool</span>**</span>

```
#!/bin/bash
percent=$(sudo /sbin/lvdisplay -m usb-lvm-thin 2>/dev/null | /bin/grep "Allocated pool data" | /usr/bin/awk '{print $4}' | /bin/sed 's/[.].*$//')

if [ -z "$percent" ]; then
    echo "0"
else
    echo "$percent"
fi
```

```
chmod +x /etc/snmp/usb-lvm-thin
```

<span style="color: rgb(0, 0, 0);">**新增`/etc/sudoers.d/snmpd-lvm`**</span><span style="color: rgb(0, 0, 0);">**，讓snmp能執行lvdisplay**</span>

```
Debian-snmp ALL=(ALL) NOPASSWD: /sbin/lvdisplay
```

<span style="color: rgb(0, 0, 0);">**確認snmp程序能抓取資料**</span>

```
su -s /bin/bash Debian-snmp -c "/etc/snmp/usb-lvm-thin"
```

`<span style="color: rgb(0, 0, 0);"><strong>/etc/snmp/snmpd.conf</strong></span>`<span style="color: rgb(0, 0, 0);">**新增extend**</span>

```
extend lvmthin /etc/snmp/usb-lvm-thin
```

```
service snmpd restart
```

#### <span style="color: rgb(0, 0, 0);">**Custom OID設定**</span>

**確認已經建立OID，名稱統一為<span style="color: rgb(224, 62, 45);">LVM-THIN</span>，後續只要自訂LVM THIN OID都能統一套用**

```
NET-SNMP-EXTEND-MIB::nsExtendOutLine."lvmthin".1
```

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

<span style="color: rgb(0, 0, 0);">**確認有顯示圖表**</span>

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

#### **建立警報規則**

<span style="color: rgb(0, 0, 0);">**選擇`Create rule from collection`，選擇`CustomOID over warning limit`**</span>

<span style="color: rgb(0, 0, 0);">**Add rule放在上面，讓descr匹配LVM-THIN**</span>

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

#### **建立警報範本**

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

```
{{ $alert->title }}
設備名稱: {{ $alert->display }} 
@if (!empty($alert->uptime_short))
運行時間: {{ $alert->uptime_short }}
@endif
@if ($alert->state == 0)
持續時間: {{ $alert->elapsed }}
恢復時間: {{ $alert->timestamp }}
@else
告警時間: {{ $alert->timestamp }}
@if ($alert->faults)
@foreach ($alert->faults as $key => $value)
超過告警值: {{ $value['customoid_limit_warn'] }} %
硬碟名稱: {{ $value['customoid_descr'] }}
使用率: {{ $value['customoid_current'] }} %
@endforeach
@endif
@endif
```

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

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