一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

SNMP協(xié)議在設(shè)備監(jiān)控中的使用

京東云 ? 來源:jf_75140285 ? 作者:jf_75140285 ? 2025-06-27 11:48 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

隨著網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,網(wǎng)絡(luò)管理變得日益重要。網(wǎng)絡(luò)管理員需要一種高效、可靠的方式來監(jiān)控網(wǎng)絡(luò)設(shè)備、收集狀態(tài)信息并對其進(jìn)行配置。簡單網(wǎng)絡(luò)管理協(xié)議(SNMP)正是為此目的而設(shè)計的。本文將對SNMP進(jìn)行詳細(xì)介紹,并提供使用SNMP進(jìn)行網(wǎng)絡(luò)管理的基本指南。

1.簡介

SNMP(Simple Network Management Protocol)是一個基于互聯(lián)網(wǎng)協(xié)議族(IP)的網(wǎng)絡(luò)管理標(biāo)準(zhǔn),用于在IP網(wǎng)絡(luò)中的管理節(jié)點與被管理節(jié)點之間進(jìn)行通信,以實現(xiàn)對網(wǎng)絡(luò)設(shè)備的遠(yuǎn)程監(jiān)控和管理。SNMP具有簡單、高效、易于實現(xiàn)和擴展性強等優(yōu)點,因此在網(wǎng)絡(luò)管理領(lǐng)域得到了廣泛應(yīng)用。

2.SNMP的組成和版本

2.1.SNMP協(xié)議的組成

SNMP協(xié)議架構(gòu)主要包括以下幾個部分:

wKgZO2heFJeALSFMAAHIRoxbf_Y301.png

??

1.管理信息庫(MIB):MIB是一個信息數(shù)據(jù)庫,用于存儲被管理設(shè)備的信息,如設(shè)備類型、接口狀態(tài)、路由表等。MIB是SNMP的核心,管理站通過SNMP協(xié)議獲取MIB中的信息,以實現(xiàn)對網(wǎng)絡(luò)設(shè)備的監(jiān)控和管理。

2.管理站(NMS):NMS是網(wǎng)絡(luò)管理系統(tǒng)中的核心組件,負(fù)責(zé)收集、處理和存儲來自被管理設(shè)備的信息。NMS通常運行在網(wǎng)絡(luò)管理中心的服務(wù)器上,通過網(wǎng)絡(luò)管理軟件實現(xiàn)對網(wǎng)絡(luò)設(shè)備的遠(yuǎn)程監(jiān)控和管理。

3.代理(Agent):Agent是被管理設(shè)備上的軟件模塊,負(fù)責(zé)接收NMS的查詢請求,并返回MIB中的相關(guān)信息。同時,Agent還可以將設(shè)備的狀態(tài)變化通知給NMS。

2.2.SNMP協(xié)議版本

目前SNMP協(xié)議有三個版本,分別是:V1、V2和V3

?V1:SNMP協(xié)議的最初版本

?V2:在V1的基礎(chǔ)上增加community(團(tuán)體名),這里的團(tuán)體名可以理解為密碼

?V3:增加認(rèn)證和對密文的傳輸?shù)闹С郑@種方式安全等級最高

3.SNMP報文

wKgZPGheFJmAE32zAAAKGyHuD1A140.png

??

SNMP報文包含三個部分

?版本號:表明當(dāng)前使用的版本,管理站和代理之間的版本號必須相同才能通信

?團(tuán)體名:團(tuán)體(community)是基本的安全機制,用于實現(xiàn)SNMP網(wǎng)絡(luò)管理員訪問SNMP管理代理時的身份驗證,類似于密碼,默認(rèn)值為 public。團(tuán)體名(Community name)是管理代理的口令,管理員被允許訪問數(shù)據(jù)對象的前提就是網(wǎng)絡(luò)管理員知道網(wǎng)絡(luò)代理的口令。

?PDU:snmp的數(shù)據(jù)結(jié)構(gòu)

3.1.PDU詳細(xì)報文

wKgZO2heFJqAXX-cAAAZRvCHvmY485.jpg

??

3.2.PDU類型

?get-request:從代理(本質(zhì)上是設(shè)備)獲取一個或多個參數(shù)值

?get-next-request:從代理緊接著取出下一個參數(shù)值

?set-request:設(shè)置代理一個或多個參數(shù)值

?get-response:對上述三種請求的響應(yīng)

?trap:設(shè)備主動上報的數(shù)據(jù)

3.3.差錯狀態(tài)

?noError:無錯誤

?tooBig:代理無法將回答裝入到一個SNMP報文中

?noSuchName:操作指明了一個不存在的變量

?badValue:一個set操作指明了一個無效值或無效語法

?readOnly:管理進(jìn)程試圖修改一個只讀變量

?genErr:某些其他差錯

3.4.trap類型

?coldStart:代理進(jìn)行了初始化

?warmStart:代理進(jìn)行了重新初始化

?linkDown:一個接口從工作狀態(tài)變?yōu)楣收蠣顟B(tài)

?linkUp:一個接口從故障狀態(tài)變?yōu)楣ぷ鳡顟B(tài)

?authenticationFailure:從SNMP管理進(jìn)程接收到具有一個無效共同體的報文

?egpNeighborLoss:一個EGP相鄰路由器變?yōu)楣收蠣顟B(tài)

?enterpriseSpecific:代理自定義事件,需要用后面的“特定代碼”來指明

4.MIB詳解

4.1.MIB樹結(jié)構(gòu)

MIB以樹狀結(jié)構(gòu)進(jìn)行存儲,樹的葉子節(jié)點表示管理對象,它可以通過從根節(jié)點開始的一條惟一路徑來識別,這也就是OID(Object Identifier)。

wKgZPGheFJqAYBHhAAAr5BO9Byk041.jpg

OID是由一些系列非負(fù)整數(shù)組成,用于唯一標(biāo)識管理對象在MIB樹中的位置。由SMI來保證OID不會沖突。

MIB文件一旦發(fā)布,OID就和被定義的對象綁定,不能修改。MIB節(jié)點不能被刪除,只能將它的狀態(tài)置為“obsolete”,表明該節(jié)點已經(jīng)被廢除。

在上圖的樹形結(jié)構(gòu)中,mgmt對象可以標(biāo)識為:{ iso(1) org(3) dod(6) internet(1) mgmt(2) },簡單標(biāo)記為:1.3.6.1.2,這種標(biāo)識就叫做OID。

NMS通過OID引用Agent中的對象。

4.2.MIB分類

MIB可以分為公有MIB和私有MIB兩種。

?公有MIB:一般由RFC定義,主要用來對各種公有協(xié)議進(jìn)行結(jié)構(gòu)化設(shè)計和接口標(biāo)準(zhǔn)化處理。大多數(shù)的設(shè)備制造商都需要按照RFC的定義來提供SNMP接口。

?私有MIB:是公有MIB的必要補充,當(dāng)公司自行開發(fā)私有協(xié)議或者特有功能時,可以利用私有MIB來完善SNMP接口的管理功能,同時對第三方網(wǎng)管軟件管理存在私有協(xié)議或特有功能的設(shè)備提供支持。

網(wǎng)絡(luò)設(shè)備的很多數(shù)據(jù)都以MIB的樹結(jié)構(gòu)存儲,根據(jù)數(shù)據(jù)對應(yīng)的OID,我們便可以獲取到網(wǎng)絡(luò)設(shè)備的各種統(tǒng)計數(shù)據(jù)和配置數(shù)據(jù),實現(xiàn)網(wǎng)絡(luò)設(shè)備的監(jiān)控。

5.SNMP實踐

5.1.snmp命令

5.1.1.snmpwalk

用于獲取 SNMP 設(shè)備上的數(shù)據(jù),它遍歷設(shè)備的 SNMP 樹,并返回特定對象標(biāo)識符(OID)的值,通常用于查詢設(shè)備的信息和狀態(tài)。使用 snmpwalk 可以獲取有關(guān)設(shè)備的詳細(xì)信息,例如接口、系統(tǒng)信息、傳感器狀態(tài)等。以下是 snmpwalk 的一般用法:

snmpwalk -v SNMP_VERSION -c COMMUNITY_STRING TARGET_HOST OID
SNMP_VERSION:SNMP 版本,通常是 "1"(SNMPv1)或 "2c"(SNMPv2c)。
COMMUNITY_STRING:SNMP 社區(qū)字符串,用于身份驗證。
TARGET_HOST:目標(biāo)設(shè)備的主機名或 IP 地址。
OID:要查詢的對象標(biāo)識符。

5.1.2.snmptrap

snmptrap 用于生成和發(fā)送 SNMP 陷阱(trap)到 SNMP 管理器,這些陷阱通常表示設(shè)備上發(fā)生的重要事件或告警。snmptrap 常用于監(jiān)控設(shè)備狀態(tài)變化和異常事件。以下是 snmptrap 的一般用法:

snmptrap -v SNMP_VERSION -c COMMUNITY_STRING TARGET_HOST TRAP_OID [OID_VALUE] [OPTIONS]
SNMP_VERSION:SNMP 版本,通常是 "1"(SNMPv1)或 "2c"(SNMPv2c)。
COMMUNITY_STRING:SNMP 社區(qū)字符串,用于身份驗證。
TARGET_HOST:目標(biāo) SNMP 管理器的主機名或 IP 地址。
TRAP_OID:陷阱的對象標(biāo)識符,表示事件類型。
OID_VALUE:可選,與陷阱相關(guān)的 OID 值。
OPTIONS:可選,包括發(fā)送陷阱的其他選項,如 -p(指定陷阱端口)等。

5.1.3.snmpget

用于獲取單個 SNMP 對象的值。你可以指定要查詢的 OID,它將返回相應(yīng)的值。

snmpget -v SNMP_VERSION -c COMMUNITY_STRING TARGET_HOST OID

snmpget -v SNMP_VERSION -c COMMUNITY_STRING TARGET_HOST OID

5.1.4.snmpset

用于設(shè)置 SNMP 對象的值。它允許你修改設(shè)備上的特定 OID 的值。

snmpset -v SNMP_VERSION -c COMMUNITY_STRING TARGET_HOST OID TYPE VALUE

5.1.5.snmpbulkwalk

類似于 snmpwalk,但它使用了 SNMP Bulk Protocol(SNMPv2c)來提高效率,特別對于大型數(shù)據(jù)集。

snmpbulkwalk -v SNMP_VERSION -c COMMUNITY_STRING TARGET_HOST OID

5.1.6.snmpinform

用于向 SNMP 管理器發(fā)送 SNMP INFORM 消息,這是一種更可靠的通知機制,它需要管理器進(jìn)行確認(rèn)。

snmpinform -v SNMP_VERSION -c COMMUNITY_STRING TARGET_HOST OID

在網(wǎng)絡(luò)設(shè)備信息采集中,我們通常會通過snmpget和snmpwalk命令獲取網(wǎng)絡(luò)設(shè)備的各種運行和配置數(shù)據(jù)。

5.2.代碼實現(xiàn)

基于以上知識,我們考慮通過代碼的方式執(zhí)行snmp命令,獲取設(shè)備的基本信息,實現(xiàn)設(shè)備的自動化監(jiān)控。本文所有案例都基于Java語言,其余語言類似。

5.2.1.引入依賴

如下所示,我們引入snmp的依賴:


   org.snmp4j
   snmp4j
   2.7.0

5.2.1.代碼實現(xiàn)

public class SnmpUtils {
    
    /**
     * 根據(jù)oid獲取數(shù)據(jù)
     * @param ip
     * @param community
     * @param oid
     * @return
     */
    @SneakyThrows
    public static void snmpGet(String ip, String community, String oid) {

        Snmp snmp = null;
        try {

            snmp = new Snmp(new DefaultUdpTransportMapping()); // 構(gòu)造一個UDP
            snmp.listen(); // 開始監(jiān)聽snmp消息

            CommunityTarget target = new CommunityTarget();
            target.setCommunity(new OctetString(community));// snmpv2的團(tuán)體名
            target.setVersion(SnmpConstants.version2c); // snmp版本
            target.setAddress(new UdpAddress(ip));
            target.setTimeout(1000); // 時延
            target.setRetries(2); // 重傳

            PDU pdu = new PDU();
            pdu.setType(PDU.GET);
            pdu.addOID(new VariableBinding(new OID(oid)));

            ResponseEvent responseEvent = snmp.get(pdu, target);
            PDU response = responseEvent.getResponse();
            Vector bindings = response.getVariableBindings();
            bindings.forEach(item ->{
                System.out.println(String.format("OID為:%s的值為:%s", item.getOid().toDottedString(), item.getVariable().getSyntaxString()));
            });

        }finally {
            if (snmp != null) {
                snmp.close();
            }
        }
    }

    /**
     * 根據(jù)oids獲取數(shù)據(jù)
     * @param ip
     * @param community
     * @return
     */
    @SneakyThrows
    public static void getTable(String ip, String community, List oidList)
    {
        Snmp snmp = null;
        LinkedHashMap> resMap = new LinkedHashMap();
        try {

            snmp = new Snmp(new DefaultUdpTransportMapping()); // 構(gòu)造一個UDP
            snmp.listen(); // 開始監(jiān)聽snmp消息

            CommunityTarget target = new CommunityTarget();
            target.setCommunity(new OctetString(community));// snmpv2的團(tuán)體名

            target.setVersion(SnmpConstants.version2c); // snmp版本

            target.setAddress(new UdpAddress(ip));
            target.setTimeout(1000); // 時延
            target.setRetries(2); // 重傳

            TableUtils utils = new TableUtils(snmp, new DefaultPDUFactory(
                    PDU.GETNEXT));// GETNEXT or GETBULK
            utils.setMaxNumRowsPerPDU(109); // only for GETBULK, set max-repetitions, default is 10

            utils.setCheckLexicographicOrdering(false);

            OID[] oids = oidList.stream().filter(StringUtils::isNotBlank).map(OID::new).toArray(OID[]::new);

            List table = utils.getTable(target, oids, null, null);
            table.forEach(item ->{
                for (VariableBinding column : item.getColumns()) {
                    System.out.println(String.format("當(dāng)前的oid為:%s,結(jié)果為:%s", column.getOid().toDottedString(), column.getVariable().getSyntaxString()));
                }
            });
        }finally {
            if (snmp != null) {
                snmp.close();
            }
        }
    }
}

其中snmpGet方法對應(yīng)snmpget命令,snmpWalk方法對應(yīng)snmpwalk命令。

6.總結(jié)

本文開篇即對SNMP(簡單網(wǎng)絡(luò)管理協(xié)議)的基本概念與核心構(gòu)成進(jìn)行了全面闡述,緊接著深入剖析了SNMP命令在實際網(wǎng)絡(luò)管理場景中的具體應(yīng)用。在文章的最后部分,通過Java編程語言的實踐應(yīng)用,本文成功展示了SNMP命令的實現(xiàn)過程。對SNMP協(xié)議的深入理解與掌握,無疑將為網(wǎng)絡(luò)設(shè)備的數(shù)據(jù)監(jiān)控及多元化自動化管理提供有力支持,進(jìn)而顯著提升網(wǎng)絡(luò)運維的工作效率。


審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • SNMP
    +關(guān)注

    關(guān)注

    0

    文章

    90

    瀏覽量

    30228
  • 設(shè)備監(jiān)控
    +關(guān)注

    關(guān)注

    0

    文章

    16

    瀏覽量

    6313
  • 京東云
    +關(guān)注

    關(guān)注

    0

    文章

    175

    瀏覽量

    128
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    IDC機房設(shè)備監(jiān)控SNMP協(xié)議獲取設(shè)備信息

    SNMP
    深圳市金鴿科技有限公司
    發(fā)布于 :2023年03月02日 19:52:49

    snmp協(xié)議抓包分析

    snmp 協(xié)議,下圖的情況不解,程序怎么控制,詢問你一此,應(yīng)答一次;圖中確實連續(xù)詢問三次,連續(xù)應(yīng)答不三次。希望能幫我解決下
    發(fā)表于 03-03 15:37

    Labview監(jiān)控帶有snmp網(wǎng)卡設(shè)備有沒有問題?

    想用Labview監(jiān)控帶有snmp網(wǎng)卡的設(shè)備,協(xié)議是TCP/IP.設(shè)備給出了MIB文件(管理信息庫(MIB)是TCP/IP網(wǎng)絡(luò)管理
    發(fā)表于 06-15 09:22

    用LWIP的SNMP監(jiān)控嵌入式設(shè)備

    各位大神: 最近要搞一個項目,用LWIP的SNMP監(jiān)控嵌入式設(shè)備,對ucos和lwip還算熟悉,但對snmp一頭霧水,請搞過snmp的大神指
    發(fā)表于 03-24 04:35

    SNMP協(xié)議WAGO工業(yè)以太網(wǎng)系統(tǒng)的應(yīng)用是什么?

    SNMP管理網(wǎng)絡(luò)由哪些部分組成?SNMP協(xié)議WAGO工業(yè)以太網(wǎng)系統(tǒng)的應(yīng)用是什么?
    發(fā)表于 05-20 06:46

    AN_基于FreeRTOS+LwIP的SNMP實現(xiàn)方案

    、路由器和其他網(wǎng)絡(luò)設(shè)備的遠(yuǎn)程管理和監(jiān)視。利用SNMP協(xié)議可以更好地管理和監(jiān)控網(wǎng)絡(luò)。管理工作站可以遠(yuǎn)程管理所有支持該協(xié)議的網(wǎng)絡(luò)
    發(fā)表于 11-02 07:03

    協(xié)議轉(zhuǎn)換網(wǎng)關(guān)支持OPC UA及SNMP協(xié)議

    工業(yè)自動化領(lǐng)域中,Modbus RTU、IEC61850、IEC101、PLC協(xié)議SNMP OPC UA是常見的通信協(xié)議。為了實現(xiàn)不同系統(tǒng)之間的數(shù)據(jù)交互,將上述
    發(fā)表于 10-09 19:52

    什么是簡單網(wǎng)絡(luò)管理協(xié)議(SNMP)

    什么是簡單網(wǎng)絡(luò)管理協(xié)議(SNMP) SNMP(Simple Network Management Protocol,簡單網(wǎng)絡(luò)管理協(xié)議)的前身是簡單網(wǎng)關(guān)
    發(fā)表于 03-20 15:13 ?2444次閱讀

    基于SNMP協(xié)議的電網(wǎng)實時視頻監(jiān)控系統(tǒng)設(shè)計

    電網(wǎng)設(shè)備數(shù)量、復(fù)雜度日益提高,不同電力設(shè)備生產(chǎn)廠商的視頻設(shè)備采用的協(xié)議標(biāo)準(zhǔn)、功能、兼容性不同,需要采用統(tǒng)一的
    發(fā)表于 10-31 15:31 ?10次下載
    基于<b class='flag-5'>SNMP</b><b class='flag-5'>協(xié)議</b>的電網(wǎng)實時視頻<b class='flag-5'>監(jiān)控</b>系統(tǒng)設(shè)計

    snmp協(xié)議詳解

    )定義的一套網(wǎng)絡(luò)管理協(xié)議。該協(xié)議基于簡單網(wǎng)關(guān)監(jiān)視協(xié)議(SGMP:Simple Gateway Monitor Protocol)。利用SNMP,一個管理工作站可以遠(yuǎn)程管理所有支持這種
    發(fā)表于 01-15 15:13 ?7142次閱讀
    <b class='flag-5'>snmp</b><b class='flag-5'>協(xié)議</b>詳解

    SNMP五種協(xié)議數(shù)據(jù)單元以及SNMP框架組成

    五層協(xié)議的應(yīng)用層協(xié)議,用于網(wǎng)絡(luò)管理的協(xié)議。SNMP主要用于網(wǎng)絡(luò)設(shè)備的管理。由于
    的頭像 發(fā)表于 08-19 17:32 ?6528次閱讀

    使用 ntopng 和 SNMP 監(jiān)視網(wǎng)絡(luò)設(shè)備

    總結(jié)SNMP廣泛用于網(wǎng)絡(luò)監(jiān)控。能夠遠(yuǎn)程監(jiān)控網(wǎng)絡(luò)設(shè)備是清晰了解當(dāng)前和過去網(wǎng)絡(luò)運行狀況的基礎(chǔ)。ntopng系統(tǒng)地與SNMP
    的頭像 發(fā)表于 02-07 16:48 ?1069次閱讀
    使用 ntopng 和 <b class='flag-5'>SNMP</b> 監(jiān)視網(wǎng)絡(luò)<b class='flag-5'>設(shè)備</b>

    什么是SNMPSNMP是如何工作的?

    用于監(jiān)控和管理各種設(shè)備,包括路由器、交換機、服務(wù)器和打印機等。 SNMP工作原理如下:一個網(wǎng)絡(luò)設(shè)備分為兩類,
    的頭像 發(fā)表于 12-27 13:58 ?2246次閱讀

    snmp協(xié)議的主要功能 snmp協(xié)議在哪一層

    SNMP(Simple Network Management Protocol)是一種用于網(wǎng)絡(luò)管理的應(yīng)用層協(xié)議。它主要用于監(jiān)控和管理網(wǎng)絡(luò)上的設(shè)備以及收集
    的頭像 發(fā)表于 01-22 15:00 ?2619次閱讀

    機房動環(huán)監(jiān)控系統(tǒng)Modbus轉(zhuǎn)SNMP V3協(xié)議遠(yuǎn)程I/O模塊

    的新型監(jiān)控方案的需求日益迫切。在此背景下,鋇錸技術(shù)推出了IOy系列SNMP協(xié)議遠(yuǎn)程IO模塊BL197。 一、SNMP
    的頭像 發(fā)表于 08-30 16:25 ?926次閱讀