Ubuntu上snmp安装、配置、启动及远程测试完整过程
0.說明
????? ?
??????? 關于一個完整的教程,還是那句話,國內的要么不完整,要么就太舊了,而且思路也不清晰,所以這里寫一篇完整的給大家分享一下。
??????? 雖然對于Linux主機的監控可以通過執行特定的命令來完成,但是相比之后,通過snmp的方式來獲取Linux主機的信息則會更輕松簡單些,只不過在使用前的配置可能需要花多一點時間,不過這絕對值得!而且如果需要開發Linux主機的監控軟件,那使用snmp肯定是首選,畢竟它可以獲得的信息太多太多!
??????? 后面的內容就來分享一下在Ubuntu上安裝、配置、啟動snmp以及進行遠程測試的完整過程。
??????? 這里使用的操作系統為:Ubuntu 15.10
?
1.安裝
??????? 我們需要安裝下面三個軟件包:
??? snmpd:snmp服務端軟件
??? snmp:snmp客戶端軟件
??? snmp-mibs-downloader:用來下載更新本地mib庫的軟件
??????? 雖然最后我會用另一臺主機來進行遠程的測試,不過剛開始時,還是在服務端也把snmp客戶端軟件安裝好,方便做一些基本的測試。
??????? 執行下面的命令安裝這三個軟件:
ubuntu@leaf:~$ sudo apt-get install snmpd snmp snmp-mibs-downloader
??????? 需要注意的是,在安裝snmp-mibs-downloader的過程中,程序會幫我們自動下載mib庫,并保存在/usr/share/mibs目錄中:
ubuntu@leaf:/usr/share/mibs$ ls
iana? ietf
??????? 如果發現沒有些目錄或文件的話,在安裝完snmp-mibs-downloader后也可以手動執行下面的命令來下載mib庫:
ubuntu@leaf:~$ sudo download-mibs
??????? 會有很多輸出信息。
??????? 這樣的話,第一步安裝工作也就完成了。
?
2.配置
??????? 其實在安裝完snmpd軟件后,系統是為我們自動開啟了這個服務的:
ubuntu@leaf:~$ sudo service snmpd status
?* snmpd is running
??????? 在開始配置前,我們先來進行一些簡單的測試,看看服務是否正常:
??? ubuntu@leaf:~$ 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 leaf 4.2.0-34-generic #39-Ubuntu SMP Thu Mar 10 22:13:01 UTC 2016 x86_64"
??????? 沒有問題,有信息返回,那么接下來就直接進行各種配置了,不過在開始配置前先備份一下配置文件:
ubuntu@leaf:~$ cd /etc/snmp
ubuntu@leaf:/etc/snmp$ sudo cp snmpd.conf snmpd.conf.ori
ubuntu@leaf:/etc/snmp$ ls snmpd*
snmpd.conf? snmpd.conf.ori
??????? 當然,需要注意的是,后面所講的,使用的都是SNMPv2,其實這已經可以滿足我們的需求了。
(1)配置節點
??????? 修改/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服務,再使用命令觀察一下:
ubuntu@leaf:/etc/snmp$ sudo service snmpd restart
xpleaf@leaf:/etc/snmp$ 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: 1950716
??????? OK,沒有問題!不過需要注意的是,這里.1.3.6.1.4.1.2021.4.3.0表示的是LInux主機交換空間總量的一個節點,而輸出1950716,就說明我們的主機上的交換空間總量大概就是2GB左右。
(2)配置MIB庫
??????? 雖然上面已經可以正常獲取我們想要的信息,但是輸出結果很不直觀,這時我們配置一下MIB庫就可以了,不過需要注意的是,這個配置是對客戶端軟件的配置(只不過現在還是在我的同一臺服務器主機上進行操作)。
??????? 修改/etc/snmp/snmp.conf配置文件,將下面這一行注釋掉:
mibs :
??????? 然后重啟snmp服務,再通過命令觀察:
ubuntu@leaf:/etc/snmp$ sudo service snmpd restart
ubuntu@leaf:/etc/snmp$ snmpwalk -v 2c -c public localhost .1.3.6.1.4.1.2021.4.3.0
UCD-SNMP-MIB::memTotalSwap.0 = INTEGER: 1950716 kB
??????? 可以看到,現在的輸出就非常直觀了!這樣之后,其實我們在獲取相關節點信息時,也可以不用輸入那一長串的數字了:
ubuntu@leaf:/etc/snmp$ snmpwalk -v 2c -c public localhost memTotalSwap.0
UCD-SNMP-MIB::memTotalSwap.0 = INTEGER: 1950716 kB
ubuntu@leaf:/etc/snmp$ snmpwalk -v 2c -c public localhost memTotalReal.0
UCD-SNMP-MIB::memTotalReal.0 = INTEGER: 8093524 kB
??????? 其實這樣之后,你也就能夠發現使用snmp是有多么地強大了!關于MIB庫的節點值從哪里來,不需要去記,可以在網上找,也可以看我總結的一篇博文:《linux snmp常用結點值》,也可以在我的博客上找:http://xpleaf.blog.51cto.com。當然,如果你想知道是什么意思,為什么要這樣定義,那么我建議你去看相關專業的書籍,一個不錯的推薦是《TCP/IP 詳解 卷1:協議》,如果網絡基礎不太好的話,也可以去學習一下。
??????? 需要注意的是,現在只是在服務器端進行配置和測試,其實這一步的操作應該是在客戶端(另一臺主機上)完成的,這里只是為了方便。
(3)配置共同體
??????? 其實所謂共同體,把它理解為一個密碼就行了,前面我們在使用snmpwalk命令獲取主機的信息時,有一個-c public的參數,其實就是指定了這個共同體為public,這是默認的配置,當然在實際中,我們不可能使用默認的值,因此需要把它修改一下。
??????? 修改配置文件/etc/snmp/snmpd.conf,大概在52行,將下面的兩行:
rocommunity public? default??? -V systemonly
rocommunity6 public? default?? -V systemonly
??????? 修改為:
rocommunity xpleaf123? default??? -V systemonly
rocommunity6 xpleaf123? default?? -V systemonly
??????? 那么這里就把共同體修改為xpleaf123了,重啟snmp服務,通過命令觀察一下:
ubuntu@leaf:/etc/snmp$ snmpwalk -v 2c -c public localhost memTotalReal.0
Timeout: No Response from localhost
ubuntu@leaf:/etc/snmp$ snmpwalk -v 2c -c xpleaf123 localhost memTotalReal.0
UCD-SNMP-MIB::memTotalReal.0 = INTEGER: 8093524 kB
??????? 可以看到第一次獲取信息不成功,因為我們已經更新了共同體,舊的public將不能再使用,否則認證失敗就無法獲取snmp提供的主機信息。
(4)允許遠程主機訪問
??????? 默認情況下,snmp服務只是對本地開啟,是無法通過遠程獲取該主機的snmp信息的:
ubuntu@leaf:/etc/snmp$ sudo netstat -antup | grep 161 ?
udp??????? 0????? 0 127.0.0.1:161?????????? 0.0.0.0:*?????????????????????????? 11615/snmpd
??????? 可以看到,161端口只對本機開放(161端口號是snmp服務的端口號),我們需要修改一下,讓snmp服務對外開放。
??????? 修改/etc/snmp/snmpd.conf配置文件,大概在15行,將下面一行注釋掉:
agentAddress? udp:127.0.0.1:161
??????? 同時去掉下面這一行的注釋:
#agentAddress udp:161,udp6:[::1]:161
??????? 重新啟動snmp服務,再通過命令觀察:
ubuntu@leaf:/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
??????? 可以看到服務已經對外開放了,并且同時支持IPv4和IPv6。
??????? 這樣之后,我們就能在遠程主機進行測試。
?
3.啟動
??????? 其實前面的操作我們一直都啟動著snmp服務,不過這里還是要確保一下:
ubuntu@leaf:~$ sudo service snmpd start
ubuntu@leaf:~$ 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
?
4.(遠程)測試
??????? 在服務器本地我們已經做過測試,并且沒有問題,下面我們要做的是在遠程主機進行測試。
??????? 我另一臺遠程主機上的操作系統也是Ubuntu 15.04,并且已經安裝了snmp客戶端軟件和mib庫下載軟件,同時配置了MIB庫,下面就直接進行遠程的測試:
xpleaf@leaf:~$ snmpwalk -v 2c -c xpleaf123 115.159.*.* memTotalSwap.0
UCD-SNMP-MIB::memTotalSwap.0 = INTEGER: 1950716 kB
xpleaf@leaf:~$ snmpwalk -v 2c -c xpleaf123 115.159.*.* memTotalReal.0
UCD-SNMP-MIB::memTotalReal.0 = INTEGER: 8093524 kB
xpleaf@leaf:~$ snmpwalk -v 2c -c xpleaf123 115.159.*.* .1.3.6.1.4.1.2021.9.1.6.1
UCD-SNMP-MIB::dskTotal.1 = INTEGER: 8123832
??????? 可以看到,測試完全沒有問題!并且獲取的值和前面有服務器本地得到的一樣。
??????? 當然,如果你發現還是獲取不了的,那么你就需要考慮一下在服務器的主機上防火墻的設置有沒有問題了。
?
5.有什么用
??????? 如果你會一門后臺開發語言(比如Python),然后你的前端基礎又不錯(html、js、jquery、bootstrap、ajax等各種),基于snmp的基礎,那么你就完全可以自己開發一款Linux主機的監控主機了,這并不難,復雜的是你需要怎么對你的數據進行處理,而這個話就需要看每個人或每間公司的需求了。
??????? 博主目前自己就是在做相關監控軟件的開發,只是監控的不是Linux主機,而是其它網絡設備,雖然也是有點小復雜,但只要技術上的思路是對的,那么一切就沒有問題了。
??????? 因為感覺snmp對于大部分朋友應該都很有用處,因此就寫此文分享一下,雖然只是針對Ubuntu的
但在其它Linux發行版本上,相信也是大同小異的。還是那句話,希望能夠幫到有需要的朋友。
本文出自 “香飄葉子” 博客,請務必保留此出處http://xpleaf.blog.51cto.com/9315560/1757333
總結
以上是生活随笔為你收集整理的Ubuntu上snmp安装、配置、启动及远程测试完整过程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vc++ 利用jmail组件收发邮件
- 下一篇: win10+vs2017 snmp开发实