Ⅰ zabbix通過snmp 和通過agent 獲取的信息有什麼區別
Zabbix通過專用的Agent或者SNMP收集相關的監控數據,然後存儲到資料庫裡面實時在前台展示。Zabbix監控數據主要分為以下兩類:歷史數據:history相關表,從history_uint表裡面可以查詢到設備監控項目的最大,最小和平均值,即存儲監控數據的原始數據。趨勢數據:trends相關表,趨勢數據是經過Zabbix計算的數據,數據是從history_uint裡面匯總的,從trends_uint可以查看到監控數據每小時最大,最小和平均值,即存儲監控數據的匯總數據。Zabbix可以通過兩種方式獲取歷史數據:1.通過Zabbix前台獲取歷史數據通過Zabbix前台查看歷史數據非常簡單,可以通過Monitoring->Lastestdata的方式查看。也可以點擊右上角的Asplaintest按鈕保存成文本文件。2.通過前台獲取的數據進行處理和二次查詢有很多限制,因此可以通過SQL語句直接從後台DB查詢數據。首先大家應該熟悉SQL語句Select常用用法:SELECT[ALL|DISTINCT]Select_List[INTO[New_Table_name]FROM{Table_name|View_name}[[,{table2_name|view2_name}[,…]][WHERESerch_conditions][GROUPBYGroup_by_list][HAVINGSerch_conditions][ORDERBYOrder_list[ASC|DEsC]]說明:1)SELECT子句指定要查詢的特定表中的列,它可以是*,表達式,列表等。2)INTO子句指定要生成新的表。3)FROM子句指定要查詢的表或者視圖。4)WHERE子句用來限定查詢的范圍和條件。5)GROUPBY子句指定分組查詢子句。6)HAVING子句用於指定分組子句的條件。7)ORDERBY可以根據一個或者多個列來排序查詢結果,在該子句中,既可以使用列名,也可以使用相對列號,ASC表示升序,DESC表示降序。8)mysql聚合函數:sum(),count(),avg(),max(),avg()等都是聚合函數,當我們在用聚合函數的時候,一般都要用到GROUPBY先進行分組,然後再進行聚合函數的運算。運算完後就要用到Having子句進行判斷了,例如聚合函數的值是否大於某一個值等等。
Ⅱ snmp里的設置聯系方式和設置設備位置是做什麼的有什麼作用
保持你的web網頁郵箱和手機郵箱同步
Ⅲ 如何利用snmp協議獲取設備的品牌和型號請問有相對應的OID嗎
根據 OID 和請求方式請求即可獲得數據
Ⅳ SNMP是什麼
簡單網路管理協議(SNMP)首先是由Internet工程任務組織(Internet
Engineering
Task
Force)(IETF)的研究小組為了解決Internet上的路由器管理問題而提出的。許多人認為
SNMP在IP上運行的原因是Internet運行的是TCP/IP協議,然而事實並不是這樣。
SNMP被設計成與協議無關,所以它可以在IP,IPX,AppleTalk,OSI以及其他用到的傳輸協議上被使用。
SNMP是一系列協議組和規范(見下表),它們提供了一種從網路上的設備中收集網路管理信息的方法。SNMP也為設備向網路管理工作站報告問題和錯誤提供了一種方法。
名字
說明
MIB
管理信息庫
SMI
管理信息的結構和標識
SNMP
簡單網路管理協議
從被管理設備中收集數據有兩種方法:一種是只輪詢(polling-only)的方法,另一種是基於中斷(interrupt-based)的方法。
如果你只使用只輪詢的方法,那麼網路管理工作站總是在控制之下。而這種方法的缺陷在於信息的實時性,尤其是錯誤的實時性。你多久輪詢一次,並且在輪詢時按照什麼樣的設備順序呢?如果輪詢間隔太小,那麼將產生太多不必要的通信量。如果輪詢間隔太大,並且在輪詢時順序不對,那麼關於一些大的災難性的事件的通知又會太饅。這就違背了積極主動的網路管理目的。
當有異常事件發生時,基於中斷的方法可以立即通知網路管理工作站(在這里假設該設備還沒有崩潰,並且在被管理設備和管理工作站之間仍有一條可用的通信途徑)。然而,這種方法也不是沒有他的缺陷的,首先,產生錯誤或自陷需要系統資源。如果自陷必須轉發大量的信息,那麼被管理設備可能不得不消耗更多的時間和系統資源來產生自陷,從而影響了它執行主要的功能(違背了網路管理的原則2)。
而且,如果幾個同類型的自陷事件接連發生,那麼大量網路帶寬可能將被相同的信息所佔用(違背了網路管理的原則1)。尤其是如果自陷是關於網路擁擠問題的時候,事情就會變得特別糟糕。克服這一缺陷的一種方法就是對於被管理設備來說,應當設置關於什麼時候報告問題的閾值(threshold)。但不幸的是這種方法可能再一次違背了網路管理的原則2,因為設備必須消耗更多的時間和系統資源,來決定一個自陷是否應該被產生。
結果,以上兩種方法的結合:面向自陷的輪詢方法(trap-directed
polling)可能是執行網路管理最為有效的方法了。一般來說,網路管理工作站輪詢在被管理設備中的代理來收集數據,並且在控制台上用數字或圖形的表示方式來顯示這些數據。這就允許網路管理員分析和管理設備以及網路通信量了。
被管理設備中的代理可以在任何時候向網路管理工作站報告錯誤情況,例如預制定閾值越界程度等等。代理並不需要等到管理工作站為獲得這些錯誤情況而輪詢他的時候才會報告。這些錯誤情況就是眾所周知的SNMP自陷(trap)。
在這種結合的方法中,當一個設備產生了一個自陷時,你可以使用網路管理工作站來查詢該設備(假設它仍然是可到達的),以獲得更多的信息。
Ⅳ java通過snmp多線程並發訪問設備獲取數據
snmp訪問設備獲取數據有非同步的方法,跟多線程同時使用效果更好
Ⅵ 怎麼獲取snmp服務的設備信息,有什麼工具嗎
SNMP(Simple Network Management Protocol,簡單網路管理協議)的前身是簡單網關監控協議(SGMP),用來對通信線路進行管理。隨後,人們對SGMP進行了很大的修改,特別是加入了符合Internet定義的SMI和MIB:體系結構,改進後的協議就是著名的SNMP。SNMP的目標是管理互聯網Internet上眾多廠家生產的軟硬體平台,因此SNMP受Internet標准網路管理框架的影響很大。
SNMP開發於九十年代早期,其目的是簡化大型網路中設備的管理和數據的獲取。許多與網路有關的軟體包,如HP的OpenView和Nortel Networks的Optivity Network Management System,還有Multi Router Traffic Grapher(MRTG)之類的免費軟體,都用SNMP服務來簡化網路的管理和維護。
由於SNMP的效果實在太好了,所以網路硬體廠商開始把SNMP加入到它們製造的每一台設備。今天,各種網路設備上都可以看到默認啟用的SNMP服務,從交換機到路由器,從防火牆到網路列印機,無一例外。
僅僅是分布廣泛還不足以造成威脅,問題是許多廠商安裝的SNMP都採用了默認的通信字元串(例如密碼),這些通信字元串是程序獲取設備信息和修改配置必不可少的。採用默認通信字元串的好處是網路上的軟體可以直接訪問設備,無需經過復雜的配置。
通信字元串主要包含兩類命令:GET命令,SET命令。GET命令從設備讀取數據,這些數據通常是操作參數,例如連接狀態、介面名稱等。SET命令允許設置設備的某些參數,這類功能一般有限制,例如關閉某個網路介面、修改路由器參數等功能。但很顯然,GET、SET命令都可能被用於拒絕服務攻擊(DoS)和惡意修改網路參數。
最常見的默認通信字元串是public(只讀)和private(讀/寫),除此之外還有許多廠商私有的默認通信字元串。幾乎所有運行SNMP的網路設備上,都可以找到某種形式的默認通信字元串。
SNMP 2.0和SNMP 1.0的安全機制比較脆弱,通信不加密,所有通信字元串和數據都以明文形式發送。攻擊者一旦捕獲了網路通信,就可以利用各種嗅探工具直接獲取通信字元串,即使用戶改變了通信字元串的默認值也無濟於事。
近幾年才出現的SNMP 3.0解決了一部分問題。為保護通信字元串,SNMP 3.0使用DES(Data Encryption Standard)演算法加密數據通信;另外,SNMP 3.0還能夠用MD5和SHA(Secure Hash Algorithm)技術驗證節點的標識符,從而防止攻擊者冒充管理節點的身份操作網路。
雖然SNMP 3.0出現已經有一段時間了,但目前還沒有廣泛應用。如果設備是2、3年前的產品,很可能根本不支持SNMP 3.0;甚至有些較新的設備也只有SNMP 2.0或SNMP 1.0。
即使設備已經支持SNMP 3.0,許多廠商使用的還是標準的通信字元串,這些字元串對黑客組織來說根本不是秘密。因此,雖然SNMP 3.0比以前的版本提供了更多的安全特性,如果配置不當,其實際效果仍舊有限。
Ⅶ 如何利用SNMP來獲取監控數據
基本知識准備:
1、SNMP(簡單網路管理協議)
2、一些腳本知識,可以編寫任意一種腳本。
3、知道Nagios怎麼用。
好啦,現在開始:
1、編寫一個可以輸出本機Nginx並發連接數的腳本,輸出結果為連接數。我這里腳本比較簡單,只是看看已經鏈接80埠的。當然也可以自己編寫更精確的腳本。
[root@webserver2 scripts]# cat showhttp.sh
#!/bin/bash
echo `netstat -nat | grep -i "80" | wc -l`
2、配置snmp,如何安裝我就不說的,自己去弄唄。
yum install net-snmp* 我是這么安裝的。
看下我的snmp配置文件:
[root@webserver2 ~]# grep -v '^#' /etc/snmp/snmpd.conf | grep -v '^$'
com2sec notConfigUser default public
group notConfigGroup v1 notConfigUser
group notConfigGroup v2c notConfigUser
view systemview included .1.3.6.1.2.1.1
view systemview included .1.3.6.1.2.1.25.1.1
view systemview included .1.3.6.1.4.1.2021
access notConfigGroup "" any noauth exact systemview none none
syslocation Unknown (edit /etc/snmp/snmpd.conf)
syscontact Root <root@localhost> (configure /etc/snmp/snmp.local.conf)
pass .1.3.6.1.4.1.4413.4.1 /usr/bin/ucd5820stat
exec .1.3.6.1.4.1.2021.51 showhttp /bin/bash /root/scripts/showhttp.sh
然後重載下snmp的配置文件。
/etc/init.d/snmpd reload
使用snmpwalk測試下,能不能通過snmp來獲取數據。
[root@webserver2 ~]# snmpwalk -v 1 -c public 192.168.137.102 .1.3.6.1.4.1.2021.51
UCD-SNMP-MIB::ucdavis.51.1.1 = INTEGER: 1
UCD-SNMP-MIB::ucdavis.51.2.1 = STRING: "showhttp"
UCD-SNMP-MIB::ucdavis.51.3.1 = STRING: "/bin/bash /root/scripts/showhttp.sh"
UCD-SNMP-MIB::ucdavis.51.100.1 = INTEGER: 0
UCD-SNMP-MIB::ucdavis.51.101.1 = STRING: "7"
UCD-SNMP-MIB::ucdavis.51.102.1 = INTEGER: 0
UCD-SNMP-MIB::ucdavis.51.103.1 = ""
[root@webserver2 ~]# snmpwalk -v 1 -c public 192.168.137.102 showhttp
showhttp: Unknown Object Identifier (Sub-id not found: (top) -> showhttp)
[root@webserver2 ~]# snmpwalk -v 1 -c public 192.168.137.102 .1.3.6.1.4.1.2021.51.101.1
UCD-SNMP-MIB::ucdavis.51.101.1 = STRING: "5"
至此位置,snmp就配置好了。至於原理,google、一大堆。限於自己的表述能力和打字速度就不在此復述了。
下面我登錄nagios的監控機,來監控這台機器的http連接數量。
2、首先安裝nagios,這里跳過。
3、先寫個如下腳本,獲取被監控的設備的snmp值。
[root@webserver2 libexec]# cat show_http
#!/bin/bash
OID='.1.3.6.1.4.1.2021.51.101.1'
IPADDRESS=$2
COMMUNITY=$1
if [[ -z $IPADDRESS ]] || [[ -z $COMMUNITY ]]; then
echo "Mabe ... ...Usage: show_http <COMMUNITY> <IPADDRESS>"
exit 4
fi
counts=`snmpwalk -v 1 -c $COMMUNITY $IPADDRESS $OID 2>/dev/null | awk -F'"' '{print $2}'`
if [ -z $counts ]; then
echo "Mabe snmpd is down OR ipaddress error OR community fault."
exit 4
fi
if [ $counts -ge 200 ]; then
echo "Cirtical - connection - $counts"
exit 2
elif [ $counts -ge 100 ]; then
echo "Warning - connection - $counts"
exit 1
else
echo "OK - connection - $counts"
exit 0
fi
3、最nagios進行一些配置:
define command{
command_name check-host-alive
command_line $USER1$/show_http nagios $HOSTADDRESS$ #添加一條命令,參數是團體名和主機地址,團體名,我直接用了nagios。為了可擴展性的考慮,大家也可以使用resources文件來定義。這里不再復述。
}
define host{ #添加一台主機
use web-server
host_name nginx-server
alias nginx-server
address 192.168.137.101
}
define service{ #添加一項監控服務
use web-service
host_name nginx-server
service_description showhttp
check_command check_httplink
}
聯系人什麼的,我就不配置了,用配置文件來修改真心疲憊。
這里順便推薦兩款軟體Centreon、NagiosQL很不錯的哦~
Ⅷ SNMP主要用於哪些領域
SNMP協議主要有五種報文get、get-next、set、get-response,trap。l get-request操作:從代理進程處提取一個或多個參數值l get-next-request操作:從代理進程處提取緊跟當前參數值的下一個參數值l set-request操作:設置代理進程的一個或多個參數值 l get-response操作:返回的一個或多個參數值。這個操作是由代理進程發出的,它是前面三種操作的響應操作。l trap操作:代理進程主動發出的報文,通知管理進程有某些事情發生。其中前三種報文是管理進程發出的;後兩種是代理進程發出的。在代理進程端是用熟知埠161倆接收get或set報文,而在管理進程端是用熟知埠162來接收trap報文。 下面具體講解5種SNMP操作。(1) get-request操作 管理站需要主動向agent讀取管理對象的值,以獲得設備或網路的運行數據和管理信息,進而規劃網路管理。SNMP不支持一次讀取一張表或表中一行數據。但是當需要讀取多個數據,如果分多次讀取則會提高網路負擔,所以,Get-Request支持一次提交多個對象標識(OID),以便一次獲取他們的值,提高網路利用率。(2) get-next-request操作SNMP不支持一次讀取一張表或表中一行數據的讀取,Get-Next-Request提供了一種簡單的方法。對一個OID進行Get-Next-Request操作,將會收到一個下一個可讀取的對象的實例標識,接著對他Get-Next-Request將會得到再下一個實例標識,不斷執行下去,將可以讀取完整張表。一方面Get-Next-Request實現很簡單,但是在讀取表中數據的時候卻不可避免地有一個大麻煩。表中的數據是以行為單位,每一行又由若干列組成,如果讀取一行數據,應該讀取這一行的每一列,但是SNMP的Get-Next-Request表時是先列後行,就是說先把第一列中所有行數據讀取完,再讀取下一列所有行。這樣,客戶端就需要做很多工作。另一方面,這樣顯然傳遞了很多不必要的數據,浪費了帶寬。跟Get-Request一樣,Get-Next-Request可以在PDU里綁定多個OID或實例標識,以提高效率。同樣的,綁定多個OID情況下,相應的Get-Response的PDU同樣會返回每一個OID的下一個可用實例標識標識符或相應錯誤。利用綁定多個OID可以比單個執行Get-Next-Request有效率。(3) set-request操作網路管理中,有時需要對設備的一些參數、配置、狀態進行重新配置。需要一種遠程的管理機制,Set-Request就是這樣的操作。set操作可以對MIB中許可權為:write-only、read-write的對象進行set操作。盡管set操作為改變配置提供了一種比較方便的方法,但是SNMP並沒有直接提供操作遠程設備的操作。但這不代表SNMP沒有這種能力,我們可以藉助於Set-Request操作間接地實現這一性能。設備通過MIB定義一個操作的對象,類型為write-only或read-write,約定操作取值,NMS可以對這個對象進行設置,設備以自己的方式得知此對象的值改變後,可以按照對象取值的含義執行操作,從而實現遠程式控制制。set操作也允許一次提供幾個set的對象和值,以便在一個PDU里操作多個對象。set操作的成功應答包里包含設置的對象的最新取值(也就是設置的值)。(4) get-response操作GetResponse對get、set、getNext進行應答,由agent被動地產生並發出。當操作成功地被執行時,GetResponsePDU里包含操作中請求操作的對象oid和他們的值。前面提到,前三種操作都支持在一個PDU里綁定多個對象,相應的GetResponse應答也包含相應變數的值。對於失敗的操作,GetResponse需要在PDU里標注相應的錯誤代碼。GetResponse對請求數據包里的request-id域不操作,原數返回,以使請求端能將應答包和請求包準確匹配,同時也可以作為請求和接收方校驗重復數據包的依據。當操作成功時,error-status值為noError,error-index為0。variablebindings中的變數的value域填上相應值。當操作失敗時,error-status為相應的錯誤代碼,如果錯誤由variablebindings組中某個對象引起,則error-index為該對象在variablebindings中的索引。(5) trap操作SNMP的前三種操作是NMS主動發起的操作,網路中存在大量的設備,NMS輪循一次需要一段時間,如果設備發生了重要的狀態改變,等到下一次輪循到來,可能已經失去實時性,NMS不能及時掌握設備數據或狀態的變化。另一方面,考慮到對網路的佔用,又不可能以很小的間隔去輪循設備。所以,需要一種機制讓設備能夠自主地發出警報,通知狀態或配置的改變和其它一些重要事件。Trap就是由agent主動發出的警報PDU,通知NMS重要的改變。RFC 1157中定義了5種常見類型的Trap,用於這些常見網路狀態的報警。另外提供了一個自定義的類型,並提供一個PDU單元提供自定義Trap的子代碼,用於SNMP的實現者定義和發送自己的Trap。另一方面,但Trap也有一些問題,因為SNMP使用的是UDP,無連接的數據報,Trap有可能不能傳遞到NMS,另一方面agent不知道NMS是否收到Trap。另外,發送Trap一般都是由重要的狀態引起的,某些情況下,系統發生了災難性的故障,導致Trap也無法發出,比如系統崩潰、網路故障等。所以,一個網路管理系統要綜合使用這些操作,互為補充,才能建立一個可靠的管理系統。單獨依靠每一種操作都有片面性。
Ⅸ snmp的四個基本組成部分應該分別在哪些設備上實現
SNMP管理的網路主要由三部分組成:
被管理的設備
SNMP代理
網路管理系統(NMS)
它們回之間的關系如答右圖所示。
網路中被管理的每一個設備都存在一個管理信息庫(MIB)用於收集並儲存管理信息。通過SNMP協議,NMS能獲取這些信息。被管理設備,又稱為網路單元或網路節點,可以是支持SNMP協議的路由器、交換機、伺服器或者主機等等。
SNMP代理是被管理設備上的一個網路管理軟體模塊,擁有本地設備的相關管理信息,並用於將它們轉換成與SNMP兼容的格式,傳遞給NMS。
NMS運行應用程序來實現監控被管理設備的功能。另外,NMS還為網路管理提供大量的處理程序及必須的儲存資源。
Ⅹ SNMP協議如何區分路由器、交換機、PC等設備類型如果SNMP無法獲取,又有什麼方式可以去獲取
snmp 一般都是抓oid 1.3.6.1.2.1.1.1.0 sysDescr.0 取出來的值自己去判斷。