Skip to main content

LibreNMS 自訂 LVM-Thin Pool 監控

傳統 LVM: 當您建立傳統的 LV(Logical Volume)並格式化掛載(例如 /dev/mapper/vg-lv 掛載到 /data),它在作業系統中是一個標準的「掛載檔案系統」。LibreNMS 透過標準的 SNMP(HOST-RESOURCES-MIB)就能直接抓到這個掛載點的磁碟容量與使用率。
LVM-Thin Pool: LVM-Thin Pool 是一個「區塊層級的儲存池」(如 Proxmox VE 上的 local-lvm)。它本身沒有檔案系統,也沒有掛載到任何目錄上。因為它在系統中沒有 mount point,標準的 SNMP 走索引時根本看不到它,LibreNMS 自然就無法自動探索(Discovery)並畫出圖表。

建立SNMP Extend 腳本

我的lvm-thin是使用USB外接硬碟,已經建立usb-lvm-thin

建立/etc/snmp/usb-lvm-thin,usb-lvm-thin修改成自已的Thin Pool

#!/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

新增/etc/sudoers.d/snmpd-lvm,讓snmp能執行lvdisplay

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

確認snmp程序能抓取資料

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

/etc/snmp/snmpd.conf新增extend

extend lvmthin /etc/snmp/usb-lvm-thin
service snmpd restart

Custom OID設定

確認已經建立OID,名稱統一為在設備Custom OID頁面新增OID,LVM-THIN,後續只要自訂告警數值,TestLVM OID確認有抓到資料THIN OID都能統一套用

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

 image.png

image.png 

確認有顯示圖表

image.pngimage.png

建立警報規則

選擇Create rule from collection,選擇CustomOID over warning limit

Add rule放在上面,讓descr匹配LVM-THIN

image.png

建立警報範本

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

image.png