Shunze 學園 (http://www.shunze.info/forum/index.php)
|- OpenNMS (http://www.shunze.info/forum/board.php?boardid=34)
|-- 《八》透過SNMP取得Linux資源狀態 (http://www.shunze.info/forum/threadid.php?boardid=34&threadid=1936)


作者: shunze 發表時間: 2015-10-28, 11:15:

《分享》透過SNMP取得Linux資源狀態

要在OpenNMS上取得環境中Linux主機的資源狀態,例如CPU使用率,連線人數,TCP連線數等,其實是很簡單的,
只要Linux上安裝好SNMP,OpenNMS就可以透過SNMP協定來抓取到這些系統資源。

以Ubuntu來說,安裝SNMP指令如下。

apt-get install snmp snmpd

以CentOS來說,安裝SNMP指令如下。
yum install net-snmp net-snmp-utils


安裝完成後,修改設定檔 /etc/snmp/snmpd.conf,依需求建立v1/v2c或v3的community/user,
讓OpenNMS能以這些設定的community或user去query該主機,並得到MIB的回應資訊即可。

v1 snmp的簡單read only community設定如下,其中Community-Name預設為 public,可依需求自行修改。
##    sec.name    source    community
com2sec    notConfigUser    default        <Community-Name>
##    group.name    sec.model    sec.name
group    notConfigGroup    v1        notConfigUser
##    incl/excl    subtree    mask
view    roview        included    .1
## context sec.model sec.level prefix read write notif
access notConfigGroup "" any noauth exact roview none none


而v2c的設定其實跟v1一樣,只是把版本由 v1 改為 v2c
##    sec.name    source    community
com2sec    notConfigUser    default        <Community-Name>
##    group.name    sec.model    sec.name
group    notConfigGroup    v2c        notConfigUser
##    incl/excl    subtree    mask
view    roview        included    .1
## context sec.model sec.level prefix read write notif
access notConfigGroup "" any noauth exact roview none none

至於v3的設定與v1/v2c不同,它有user的帳號/密碼概念,不再是單單透過Community Name去做驗證,
簡單的建立read only帳號的方式如下,啟動服務後就會建立一個名為snmpuser的v3 ready only帳號了。
##以MD5加密的方式建立使用者snmpuser的authentication密碼,以DES的方式建立privacy密碼。
createUser snmpuser MD5 <SNMP-AuthPWD> DES <SNMP-PrivPWD>
##建立v3版本ready only的snmpuser帳號
rouser snmpuser priv .1

以上設定,是簡單的讀取權限設定,
若您不希望開放所有MIB資料都可以讀取,請自行修改允許的MIB階層。


設定完成後,啟動snmpd服務,
service snmpd start

另外CentOS還需要下達以下指令才能在level 3,4,5時自動啟動,Ubuntu則不需要。
chkconfig --level 345 snmpd on


啟動snmpd服務後以對應版本的snmpwalk去測試能否取得到MIB的回應訊息。
SNMP v1
snmpwalk -v 1 -c <Community-Name> localhost

SNMP v2c
snmpwalk -v 2c -c <Community-Name> localhost

SNMP v3
snmpwalk -v 3 -u snmpuser -l authPriv -a MD5 -A <SNMP-AuthPWD> -x DES -X <SNMP-PrivPWD> localhost


測試無誤後,在OpenNMS中以對應的SNMP版本資訊去掃描,就可以抓到以下資訊。



再把 datacollection-config.xml 設定檔中的 snmpStorageFlag 參數由預設的 select 調整為 all 並重啟OpenNMS服務後,
就可以在Resource Graphs中的node-level得到以下豐富的CPU、Memory與TCP流量圖。
(snmpStorageFlag 設定為 all 的原因請參考這一篇 建立第三方物件node-level data collect)






























作者: shunze 發表時間: 2015-10-29, 10:05:

《分享》如何抓取Linux硬碟使用量資訊

如上文所述,在安裝snmp後,Linux已能讓snmp server抓取CPU、Memory與TCP Session等資訊,
但硬碟的相關資訊則還沒有辦法抓到...



爬文後發現,要讓Linux能提供硬碟資訊供snmp server抓取,其實很簡單;
只要在snmp的設定檔加入欲提供讀取的磁碟分割區路徑,就能解放disk資訊的讀取能力。

例如順子的Linux有/、/boot、/dev/shm這三個分割區,



那麼可以在 /etc/snmp/snmpd.conf 中加入以下內容。

disk /
disk /boot
disk /dev/shm

重啟snmpd服務之後,OpenNMS就能抓到Disk的相關資訊了∼










參考資料
Monitoring disk usage on Linux based systems

Powered by: Burning Board 1.1.1 2001 by WoltLab
Taiwan Translation by Achi