網(wǎng)絡(luò)管理通常包含4個(gè)要素:
- 被管理節(jié)點(diǎn):需要進(jìn)行管理的設(shè)備埠居。
- 代理(Agent):跟蹤被管理設(shè)備狀態(tài)的軟件或硬件。
- 網(wǎng)絡(luò)管理工作站(Manager):與在不同的被管理節(jié)點(diǎn)中的代理通信对碌,并且顯示這些代理狀態(tài)的設(shè)備荆虱。
- 網(wǎng)絡(luò)管理協(xié)議:網(wǎng)絡(luò)管理工作站和代理用來(lái)交換信息的協(xié)議。
1. SNMP(Simple Network Management Protocol)
- 網(wǎng)絡(luò)管理站NMS(Network Management Station)
- SNMP代理器(Agent)
- SNMP協(xié)議
- 管理信息庫(kù)MIB(Management Information Base)
MIB是一個(gè)被管理對(duì)象的集合朽们,是NMS同Agent進(jìn)行溝通的橋梁怀读,可以使網(wǎng)管軟件和設(shè)備進(jìn)行標(biāo)準(zhǔn)對(duì)接。每一個(gè)Agent都維護(hù)這樣一個(gè)MIB庫(kù)骑脱,NMS可以對(duì)MIB庫(kù)中對(duì)象的值進(jìn)行讀取或設(shè)置愿吹。
NMS通過(guò)SNMP協(xié)議與設(shè)備的Agent通信,完成對(duì)MIB的讀取和修改操作惜姐,從而實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)設(shè)備的監(jiān)控與管理犁跪。
SNMP是NMS與Agent之間通信的載體,通過(guò)其協(xié)議數(shù)據(jù)單元PDU(Protocol Data Unit)完成信息交換歹袁。SNMP并不負(fù)責(zé)數(shù)據(jù)的實(shí)際傳輸坷衍,數(shù)據(jù)交換的任務(wù)是通過(guò)UDP等傳輸層協(xié)議來(lái)完成的。
Agent是設(shè)備上的代理進(jìn)程条舔,主要工作包括與NMS通信枫耳,對(duì)設(shè)備中的MIB庫(kù)進(jìn)行維護(hù),以管理和監(jiān)控設(shè)備中的各個(gè)模塊孟抗。
MIB保存設(shè)備中各個(gè)模塊的信息迁杨。通過(guò)對(duì)MIB信息的讀寫(xiě)操作來(lái)完成對(duì)設(shè)備的監(jiān)控和維護(hù)。
snmp協(xié)議數(shù)據(jù)單元
2. MIB(Management Information Base)
MIB是一個(gè)被管理對(duì)象的集合凄硼,它定義被管理對(duì)象的一系列屬性铅协,包括
- 對(duì)象的名字
- 對(duì)象的訪問(wèn)權(quán)限
-
對(duì)象的數(shù)據(jù)類(lèi)型
3. 安裝和配置
3.1 安裝
我們需要安裝下面三個(gè)軟件包:
- snmpd:snmp客戶(hù)端軟件(agent)
- snmp:snmp服務(wù)器端軟件
- snmp-mibs-downloader:用來(lái)下載更新本地mib庫(kù)的軟件
sudo apt-get install snmpd snmp snmp-mibs-downloader
注意:
在安裝snmp-mibs-downloader的過(guò)程中,程序會(huì)幫我們自動(dòng)下載mib庫(kù)摊沉,并保存在/usr/share/mibs目錄中:
root@miao-VirtualBox:/usr/share/mibs$ ls
iana ietf
如果發(fā)現(xiàn)沒(méi)有些目錄或文件的話狐史,在安裝完snmp-mibs-downloader后也可以手動(dòng)執(zhí)行下面的命令來(lái)下載mib庫(kù):
root@miao-VirtualBox:~$ sudo download-mibs
簡(jiǎn)單測(cè)試一下,是否正常
root@miao-VirtualBox:~# service snmpd status
● snmpd.service - LSB: SNMP agents
Loaded: loaded (/etc/init.d/snmpd; bad; vendor preset: enabled)
Active: active (running) since 五 2018-03-30 16:59:25 CST; 8min ago
root@miao-VirtualBox:~# snmpwalk -v 2c -c public localhost 1.3.6.1.2.1.1.1
SNMPv2-MIB::sysDescr.0 = STRING: Linux miao-VirtualBox 4.13.0-37-generic #42~16.04.1-Ubuntu SMP Wed Mar 7 16:03:28 UTC 2018 x86_64
3.2 被監(jiān)控端配置
3.2.1配置節(jié)點(diǎn)監(jiān)控項(xiàng)
# 配置節(jié)點(diǎn)
# 修改/etc/snmp/snmpd.conf文件,大概在45行骏全,將下面的兩行注釋掉:
view systemonly included .1.3.6.1.2.1.1
view systemonly included .1.3.6.1.2.1.25.1
# 增加下面一行:
view systemonly included .1
修改之后苍柏,重啟snmp服務(wù),再使用命令觀察一下:
sudo service snmpd restart
root@miao-VirtualBox:/etc/snmp# snmpwalk -v 2c -c public localhost .1.3.6.1.4.1.2021.4.3.0
UCD-SNMP-MIB::memTotalSwap.0 = INTEGER: 5240828 kB
3.2.2配置共同體
其實(shí)所謂同體姜贡,把它理解為一個(gè)密碼就行了试吁,前面我們?cè)谑褂胹nmpwalk命令獲取主機(jī)的信息時(shí),有一個(gè)-c public的參數(shù)楼咳,其實(shí)就是指定了這個(gè)共同體為public熄捍,這是默認(rèn)的配置,當(dāng)然在實(shí)際中爬橡,我們不可能使用默認(rèn)的值治唤,因此需要把它修改一下。
# 修改配置文件/etc/snmp/snmpd.conf糙申,大概在52行宾添,將下面的兩行:
rocommunity public default -V systemonly
rocommunity6 public default -V systemonly
# 修改為:
rocommunity miao default -V systemonly
rocommunity6 miao default -V systemonly
# 重啟服務(wù)后測(cè)試一下
root@miao-VirtualBox:/etc/snmp# snmpwalk -v 2c -c miao localhost .1.3.6.1.4.1.2021.4.3.0
iso.3.6.1.4.1.2021.4.3.0 = INTEGER: 5240828
root@miao-VirtualBox:/etc/snmp# snmpwalk -v 2c -c public localhost .1.3.6.1.4.1.2021.4.3.0
Timeout: No Response from localhost
3.2.3 遠(yuǎn)程主機(jī)訪問(wèn)
# 默認(rèn)情況下,snmp服務(wù)只是對(duì)本地開(kāi)啟柜裸,是無(wú)法通過(guò)遠(yuǎn)程獲取該主機(jī)的snmp信息的:
root@miao-VirtualBox:/etc/snmp$ sudo netstat -antup | grep 161
udp 0 0 127.0.0.1:161 0.0.0.0:* 11615/snmpd
# 可以看到缕陕,161端口只對(duì)本機(jī)開(kāi)放(161端口號(hào)是snmp服務(wù)的端口號(hào)),我們需要修改一下疙挺,讓snmp服務(wù)對(duì)外開(kāi)放扛邑。
# 修改/etc/snmp/snmpd.conf配置文件,大概在15行铐然,將下面一行注釋掉:
agentAddress udp:127.0.0.1:161
# 同時(shí)去掉下面這一行的注釋?zhuān)?
# agentAddress udp:161,udp6:[::1]:161
# 重新啟動(dòng)snmp服務(wù)蔬崩,再通過(guò)命令觀察:
root@miao-VirtualBox:/etc/snmp$ sudo netstat -antup | grep 161
udp 0 0 0.0.0.0:161 0.0.0.0:* 11656/snmpd
udp6 0 0 ::1:161 :::* 11656/snmpd
# 遠(yuǎn)程測(cè)試一下
root@miao-VirtualBox:~# snmpwalk -v 2c -c miao 192.168.185.208 memTotalSwap.0
UCD-SNMP-MIB::memTotalSwap.0 = INTEGER: 5240828 kB
root@miao-VirtualBox:~# snmpwalk -v 2c -c miao 192.168.185.208 1.3.6.1.2.1.1.1
SNMPv2-MIB::sysDescr.0 = STRING: Linux miao-VirtualBox 4.13.0-37-generic #42~16.04.1-Ubuntu SMP Wed Mar 7 16:03:28 UTC 2018 x86_64
3.3 配置MIB庫(kù)(服務(wù)端/監(jiān)控端配置即可)
雖然上面已經(jīng)可以正常獲取我們想要的信息,但是輸出結(jié)果很不直觀搀暑,這時(shí)我們配置一下MIB庫(kù)就可以了沥阳。
# 修改/etc/snmp/snmp.conf配置文件,將下面這一行注釋掉:
mibs :
# 然后重啟snmp服務(wù)
$ snmpwalk -v 2c -c public localhost .1.3.6.1.4.1.2021.4.3.0
UCD-SNMP-MIB::memTotalSwap.0 = INTEGER: 1950716 kB
$ snmpwalk -v 2c -c public localhost memTotalSwap.0
UCD-SNMP-MIB::memTotalSwap.0 = INTEGER: 1950716 kB
4 利用python封裝監(jiān)控api
待續(xù)……