Ubuntu Server 18.04 上 SNMP 的安裝、配置、啟動及測試

前言

從事信息系統(tǒng)運(yùn)維工作,少不了跟SNMP打交道,說來慚愧,多年來一直不求甚解,懵懵懂懂的使用SNMP和網(wǎng)管軟件。至于這方面的資料和教程也鮮有完整透徹的,國內(nèi)的要么不完整,要么太舊了,自己的英文又不靈。這里就是將自己的學(xué)習(xí)使用軌跡記錄下來,以便以后用到時能省點(diǎn)事。

這里使用的操作系統(tǒng)為:Ubuntu Server 18.04.4 Amd64 版本(2020年3月29日)

一、安裝

我們需要安裝下面三個軟件包:

snmpd //snmp服務(wù)端軟件
snmp //snmp客戶端軟件
snmp-mibs-downloader //用來下載更新本地mib庫的軟件

執(zhí)行下面的命令安裝這三個軟件:

$ sudo apt-get install snmpd snmp snmp-mibs-downloader

需要注意的是,在安裝snmp-mibs-downloader的過程中,程序會幫我們自動下載mib庫,并保存在/usr/share/snmp/mibs目錄中。如果發(fā)現(xiàn)沒有些目錄或文件的話,在安裝完snmp-mibs-downloader后也可以手動執(zhí)行下面的命令來下載mib庫(會有很多輸出信息):

$ sudo download-mibs

還有一個開源程序包,叫做“Net-SNMP”的,工具很全很專業(yè),是一種開放源代碼的 SNMP 協(xié)議實(shí)現(xiàn)。它支持 SNMP v1, SNMP v2c 與 SNMP v3,并可以使用 IPV4 及 IPV6 。也包含 SNMP Trap 的所有相關(guān)實(shí)現(xiàn)。Net-SNMP 包含了SNMP實(shí)用程序集和完整的SNMP開發(fā)庫。Net-SNMP 可以通過snap直接網(wǎng)絡(luò)安裝:

$ sudo snap install net-snmp

二、配置

其實(shí)在安裝完snmpd軟件后,系統(tǒng)是為我們自動開啟了這個服務(wù)的:

$ sudo service snmpd status

現(xiàn)在,我們先來進(jìn)行一些簡單的測試,看看服務(wù)是否正常:

$ snmpwalk -v 2c -c public localhost 1.3.6.1.2.1.1.1
iso.3.6.1.2.1.1.1.0 = STRING: "Linux ubunsvr 4.15.0-91-generic #92-Ubuntu SMP Fri Feb 28 11:09:48 UTC 2020 x86_64"

有信息返回,那么接下來就直接進(jìn)行各種配置了。這里討論和使用的都是SNMPv2(最新的SNMPv3我還在迷糊中)。

配置節(jié)點(diǎn)。修改/etc/snmp/snmpd.conf文件:

$ sudo nano /etc/snmp/snmpd.conf

找到:

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.3.6.1.2.1.1
#view   systemonly  included   .1.3.6.1.2.1.25.1
view   systemonly  included   .1

這樣的話,我們就可以獲取更多的節(jié)點(diǎn)信息,因為如果不這樣做,我們能夠獲取的信息僅僅是上面兩個注釋掉的節(jié)點(diǎn)所包含的信息。修改之后,重啟snmp服務(wù),再使用命令觀察一下:

$ sudo service snmpd restart

$ sudo snmpwalk -v 2c -c public localhost .1.3.6.1.4.1.2021.4.3.0
iso.3.6.1.4.1.2021.4.3.0 = INTEGER: 4015100

沒有問題!不過需要注意的是,這里.1.3.6.1.4.1.2021.4.3.0表示的是LInux主機(jī)交換空間(swap)總量的一個節(jié)點(diǎn),而輸出4015100 kB,就說明我們的主機(jī)上的交換空間總量大概就是4GB左右。

配置MIB庫。雖然上面已經(jīng)可以正常獲取我們想要的信息,但是輸出結(jié)果很不直觀,這時我們配置一下MIB庫就可以了,不過需要注意的是,這個配置是對客戶端軟件的配置(只不過現(xiàn)在我的這臺機(jī)器既是服務(wù)器也是客戶機(jī))。修改/etc/snmp/snmp.conf配置文件,將下面這一行注釋掉:

$ sudo nano /etc/snmp/snmp.conf

#mibs :

然后重啟snmp服務(wù),再通過命令觀察:

$ sudo service snmpd restart

$ snmpwalk -v 2c -c public localhost .1.3.6.1.4.1.2021.4.3.0
UCD-SNMP-MIB::memTotalSwap.0 = INTEGER: 4015100 kB

可以看到,現(xiàn)在的輸出就非常直觀了!這樣之后,其實(shí)我們在獲取相關(guān)節(jié)點(diǎn)信息時,也可以不用輸入那一長串的數(shù)字了:

$ snmpwalk -v 2c -c public localhost memTotalSwap.0
UCD-SNMP-MIB::memTotalSwap.0 = INTEGER: 4015100 kB

$ snmpwalk -v 2c -c public localhost memTotalReal.0
UCD-SNMP-MIB::memTotalReal.0 = INTEGER: 4015876 kB

其實(shí)這樣之后,你也就能夠發(fā)現(xiàn)使用SNMP是有多么地強(qiáng)大了!關(guān)于MIB庫的節(jié)點(diǎn)值從哪里來,不需要去記,可以在網(wǎng)上找,也可以看這個文檔的后面部分。當(dāng)然,如果你想知道是什么意思,為什么要這樣定義,那么我建議你去看相關(guān)專業(yè)的書籍,一個不錯的推薦是《SNMP簡單網(wǎng)絡(luò)管理協(xié)議》,另一個推薦是神書《TCP/IP詳解 卷1:協(xié)議》,如果網(wǎng)絡(luò)基礎(chǔ)不太好的話,也可以去學(xué)習(xí)一下。需要注意的是,現(xiàn)在只是在服務(wù)器端進(jìn)行配置和測試,其實(shí)這一步的操作應(yīng)該是在客戶端完成的,這里只是為了方便。

《TCP/IP詳解 卷1:協(xié)議》
《SNMP簡單網(wǎng)絡(luò)管理協(xié)議》

配置社區(qū)名(共同體)。其實(shí)所謂社區(qū)名,把它理解為一個密碼就行了,前面我們在使用snmpwalk命令獲取主機(jī)的信息時,有一個“-c public”的參數(shù),其實(shí)就是指定了這個社區(qū)名為“public”,這是默認(rèn)的配置,當(dāng)然在實(shí)際中,我們不可能使用默認(rèn)的值,因此需要把它修改一下。修改配置文件“/etc/snmp/snmpd.conf”,將下面的兩行:

$ sudo nano /etc/snmp/snmpd.conf

rocommunity public  default    -V systemonly
rocommunity6 public  default   -V systemonly

修改為:

rocommunity osbear  default    -V systemonly
rocommunity6 osbear  default   -V systemonly

那么這里就把社區(qū)名修改為osbear了,重啟snmp服務(wù)。

$ sudo service snmpd restart

三、Net-SNMP 的幾個工具

Net-SNMP 包含很多功能,這里僅將自己爬網(wǎng)看到的記錄一下,詳細(xì)深入學(xué)習(xí)請移步專業(yè)網(wǎng)站。

snmpnetstat命令可以從支持 SNMP 的設(shè)備獲取特定的信息。比如下面的命令從目標(biāo)系統(tǒng)上獲得類似 netstat 的信息:

$ sudo snmpnetstat -v 2c -c public localhost
...
Active Internet (udp) Connections
Proto Local Address Remote Address PID
udp4 *.37634 . 6436
udp4 *.39879 . 0
udp4 localhost.snmp . 6436
udp4 localhost.domain . 0
...

$ sudo snmpstatus -v 2c -c public localhost
[UDP: [127.0.0.1]:161->[0.0.0.0]:46141]=>[Linux ubunsvr 4.15.0-91-generic #92-Ubuntu SMP Fri Feb 28 11:09:48 UTC 2020 x86_64] Up: 0:37:35.60
Interfaces: 2, Recv/Trans packets: 101897/64830 | IP: 62842/57591

snmptranslate 命令將 MIB OIDs 的兩種表現(xiàn)形式 ( 數(shù)字及文字 ) 相互轉(zhuǎn)換,并顯示 MIB 的內(nèi)容與結(jié)構(gòu),如下所示:

$ sudo snmptranslate .1.3.6.1.2.1.1.3.0
DISMAN-EVENT-MIB::sysUpTimeInstance

$ snmptranslate -On SNMPv2-MIB::sysUpTime.0
.1.3.6.1.2.1.1.3.0

四、Linux SNMP 常用結(jié)點(diǎn)值
1、針對Linux主機(jī)的對象標(biāo)識符

(1)CPU負(fù)載
1 minute Load: .1.3.6.1.4.1.2021.10.1.3.1
5 minute Load: .1.3.6.1.4.1.2021.10.1.3.2
15 minute Load: .1.3.6.1.4.1.2021.10.1.3.3

(2)CPU信息
percentage of user CPU time: .1.3.6.1.4.1.2021.11.9.0
raw user cpu time: .1.3.6.1.4.1.2021.11.50.0
percentages of system CPU time: .1.3.6.1.4.1.2021.11.10.0
raw system cpu time: .1.3.6.1.4.1.2021.11.52.0
percentages of idle CPU time: .1.3.6.1.4.1.2021.11.11.0
raw idle cpu time: .1.3.6.1.4.1.2021.11.53.0
raw nice cpu time: .1.3.6.1.4.1.2021.11.51.0

(3)內(nèi)存使用
Total Swap Size: .1.3.6.1.4.1.2021.4.3.0
Available Swap Space: .1.3.6.1.4.1.2021.4.4.0
Total RAM in machine: .1.3.6.1.4.1.2021.4.5.0
Total RAM used: .1.3.6.1.4.1.2021.4.6.0
Total RAM Free: .1.3.6.1.4.1.2021.4.11.0
Total RAM Shared: .1.3.6.1.4.1.2021.4.13.0
Total RAM Buffered: .1.3.6.1.4.1.2021.4.14.0
Total Cached Memory: .1.3.6.1.4.1.2021.4.15.0

(4)磁盤使用
Path where the disk is mounted: .1.3.6.1.4.1.2021.9.1.2.1
Path of the device for the partition: .1.3.6.1.4.1.2021.9.1.3.1
Total size of the disk/partion (kBytes): .1.3.6.1.4.1.2021.9.1.6.1
Available space on the disk: .1.3.6.1.4.1.2021.9.1.7.1
Used space on the disk: .1.3.6.1.4.1.2021.9.1.8.1
Percentage of space used on disk: .1.3.6.1.4.1.2021.9.1.9.1
Percentage of inodes used on disk: .1.3.6.1.4.1.2021.9.1.10.1

(5)系統(tǒng)運(yùn)行時間
.1.3.6.1.2.1.1.3.0

2、MIB對象標(biāo)識符

(1)System組
sysDescr 1.3.6.1.2.1.1.1
sysObjectID 1.3.6.1.2.1.1.2
sysUpTime 1.3.6.1.2.1.1.3
sysContact 1.3.6.1.2.1.1.4
sysName 1.3.6.1.2.1.1.5
sysLocation 1.3.6.1.2.1.1.6
sysServices 1.3.6.1.2.1.1.7

(2)Interfaces組
ifNumber 1.3.6.1.2.1.2.1
ifTable 1.3.6.1.2.1.2.2
ifEntry 1.3.6.1.2.1.2.2.1
ifIndex 1.3.6.1.2.1.2.2.1.1
ifDescr 1.3.6.1.2.1.2.2.1.2
ifType 1.3.6.1.2.1.2.2.1.3
ifMtu 1.3.6.1.2.1.2.2.1.4
ifSpeed 1.3.6.1.2.1.2.2.1.5
ifPhysAddress 1.3.6.1.2.1.2.2.1.6
ifAdminStatus 1.3.6.1.2.1.2.2.1.7
ifOperStatus 1.3.6.1.2.1.2.2.1.8
ifLastChange 1.3.6.1.2.1.2.2.1.9
ifInOctets 1.3.6.1.2.1.2.2.1.10
ifInUcastPkts 1.3.6.1.2.1.2.2.1.11
ifInNUcastPkts 1.3.6.1.2.1.2.2.1.12
ifInDiscards 1.3.6.1.2.1.2.2.1.13
ifInErrors 1.3.6.1.2.1.2.2.1.14
ifInUnknownProtos 1.3.6.1.2.1.2.2.1.15
ifOutOctets 1.3.6.1.2.1.2.2.1.16
ifOutUcastPkts 1.3.6.1.2.1.2.2.1.17
ifOutNUcastPkts 1.3.6.1.2.1.2.2.1.18
ifOutDiscards 1.3.6.1.2.1.2.2.1.19
ifOutErrors 1.3.6.1.2.1.2.2.1.20
ifOutQLen 1.3.6.1.2.1.2.2.1.21
ifSpecific 1.3.6.1.2.1.2.2.1.22

(3)IP組
ipForwarding 1.3.6.1.2.1.4.1
ipDefaultTTL 1.3.6.1.2.1.4.2
ipInReceives 1.3.6.1.2.1.4.3
ipInHdrErrors 1.3.6.1.2.1.4.4
ipInAddrErrors 1.3.6.1.2.1.4.5
ipForwDatagrams 1.3.6.1.2.1.4.6
ipInUnknownProtos 1.3.6.1.2.1.4.7
ipInDiscards 1.3.6.1.2.1.4.8
ipInDelivers 1.3.6.1.2.1.4.9
ipOutRequests 1.3.6.1.2.1.4.10
ipOutDiscards 1.3.6.1.2.1.4.11
ipOutNoRoutes 1.3.6.1.2.1.4.12
ipReasmTimeout 1.3.6.1.2.1.4.13
ipReasmReqds 1.3.6.1.2.1.4.14
ipReasmOKs 1.3.6.1.2.1.4.15
ipReasmFails 1.3.6.1.2.1.4.16
ipFragsOKs 1.3.6.1.2.1.4.17
ipFragsFails 1.3.6.1.2.1.4.18
ipFragCreates 1.3.6.1.2.1.4.19
ipAddrTable 1.3.6.1.2.1.4.20
ipAddrEntry 1.3.6.1.2.1.4.20.1
ipAdEntAddr 1.3.6.1.2.1.4.20.1.1
ipAdEntIfIndex 1.3.6.1.2.1.4.20.1.2
ipAdEntNetMask 1.3.6.1.2.1.4.20.1.3
ipAdEntBcastAddr 1.3.6.1.2.1.4.20.1.4
ipAdEntReasmMaxSize 1.3.6.1.2.1.4.20.1.5

(4)ICMP組
icmpInMsgs 1.3.6.1.2.1.5.1
icmpInErrors 1.3.6.1.2.1.5.2
icmpInDestUnreachs 1.3.6.1.2.1.5.3
icmpInTimeExcds 1.3.6.1.2.1.5.4
icmpInParmProbs 1.3.6.1.2.1.5.5
icmpInSrcQuenchs 1.3.6.1.2.1.5.6
icmpInRedirects 1.3.6.1.2.1.5.7
icmpInEchos 1.3.6.1.2.1.5.8
icmpInEchoReps 1.3.6.1.2.1.5.9
icmpInTimestamps 1.3.6.1.2.1.5.10
icmpInTimestampReps 1.3.6.1.2.1.5.11
icmpInAddrMasks 1.3.6.1.2.1.5.12
icmpInAddrMaskReps 1.3.6.1.2.1.5.13
icmpOutMsgs 1.3.6.1.2.1.5.14
icmpOutErrors 1.3.6.1.2.1.5.15
icmpOutDestUnreachs 1.3.6.1.2.1.5.16
icmpOutTimeExcds 1.3.6.1.2.1.5.17
icmpOutParmProbs 1.3.6.1.2.1.5.18
icmpOutSrcQuenchs 1.3.6.1.2.1.5.19
icmpOutRedirects 1.3.6.1.2.1.5.20
icmpOutEchos 1.3.6.1.2.1.5.21
icmpOutEchoReps 1.3.6.1.2.1.5.22
icmpOutTimestamps 1.3.6.1.2.1.5.23
icmpOutTimestampReps 1.3.6.1.2.1.5.24
icmpOutAddrMasks 1.3.6.1.2.1.5.25
icmpOutAddrMaskReps 1.3.6.1.2.1.5.26

(5)TCP組
tcpRtoAlgorithm 1.3.6.1.2.1.6.1
tcpRtoMin 1.3.6.1.2.1.6.2
tcpRtoMax 1.3.6.1.2.1.6.3
tcpMaxConn 1.3.6.1.2.1.6.4
tcpActiveOpens 1.3.6.1.2.1.6.5
tcpPassiveOpens 1.3.6.1.2.1.6.6
tcpAttemptFails 1.3.6.1.2.1.6.7
tcpEstabResets 1.3.6.1.2.1.6.8
tcpCurrEstab 1.3.6.1.2.1.6.9
tcpInSegs 1.3.6.1.2.1.6.10
tcpOutSegs 1.3.6.1.2.1.6.11
tcpRetransSegs 1.3.6.1.2.1.6.12
tcpConnTable 1.3.6.1.2.1.6.13
tcpConnEntry 1.3.6.1.2.1.6.13.1
tcpConnState 1.3.6.1.2.1.6.13.1.1
tcpConnLocalAddress 1.3.6.1.2.1.6.13.1.2
tcpConnLocalPort 1.3.6.1.2.1.6.13.1.3
tcpConnRemAddress 1.3.6.1.2.1.6.13.1.4
tcpConnRemPort 1.3.6.1.2.1.6.13.1.5
tcpInErrs 1.3.6.1.2.1.6.14
tcpOutRsts 1.3.6.1.2.1.6.15

(6)UDP組
udpInDatagrams 1.3.6.1.2.1.7.1
udpNoPorts 1.3.6.1.2.1.7.2
udpInErrors 1.3.6.1.2.1.7.3
udpOutDatagrams 1.3.6.1.2.1.7.4
udpTable 1.3.6.1.2.1.7.5
udpEntry 1.3.6.1.2.1.7.5.1
udpLocalAddress 1.3.6.1.2.1.7.5.1.1
udpLocalPort 1.3.6.1.2.1.7.5.1.2

(7)SNMP組
snmpInPkts 1.3.6.1.2.1.11.1
snmpOutPkts 1.3.6.1.2.1.11.2
snmpInBadVersions 1.3.6.1.2.1.11.3
snmpInBadCommunityNames 1.3.6.1.2.1.11.4
snmpInBadCommunityUses 1.3.6.1.2.1.11.5
snmpInASNParseErrs 1.3.6.1.2.1.11.6
NOT USED 1.3.6.1.2.1.11.7
snmpInTooBigs 1.3.6.1.2.1.11.8
snmpInNoSuchNames 1.3.6.1.2.1.11.9
snmpInBadValues 1.3.6.1.2.1.11.10
snmpInReadOnlys 1.3.6.1.2.1.11.11
snmpInGenErrs 1.3.6.1.2.1.11.12
snmpInTotalReqVars 1.3.6.1.2.1.11.13
snmpInTotalSetVars 1.3.6.1.2.1.11.14
snmpInGetRequests 1.3.6.1.2.1.11.15
snmpInGetNexts 1.3.6.1.2.1.11.16
snmpInSetRequests 1.3.6.1.2.1.11.17
snmpInGetResponses 1.3.6.1.2.1.11.18
snmpInTraps 1.3.6.1.2.1.11.19
snmpOutTooBigs 1.3.6.1.2.1.11.20
snmpOutNoSuchNames 1.3.6.1.2.1.11.21
snmpOutBadValues 1.3.6.1.2.1.11.22
NOT USED 1.3.6.1.2.1.11.23
snmpOutGenErrs 1.3.6.1.2.1.11.24
snmpOutGetRequests 1.3.6.1.2.1.11.25
snmpOutGetNexts 1.3.6.1.2.1.11.26
snmpOutSetRequests 1.3.6.1.2.1.11.27
snmpOutGetResponses 1.3.6.1.2.1.11.28
snmpOutTraps 1.3.6.1.2.1.11.29
snmpEnableAuthenTraps 1.3.6.1.2.1.11.30

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容