[{"data":1,"prerenderedAt":2371},["ShallowReactive",2],{"blog-\u002Fblog\u002F2026\u002F03\u002Fhow-to-monitor-industrial-network-usign-snmp":3},{"id":4,"title":5,"body":6,"description":12,"extension":2361,"meta":2362,"navigation":724,"path":2367,"seo":2368,"stem":2369,"__hash__":2370},"blog\u002Fblog\u002F2026\u002F03\u002Fhow-to-monitor-industrial-network-usign-snmp.md","How to Monitor Industrial Network Health Using SNMP",{"type":7,"value":8,"toc":2352},"minimark",[9,13,16,19,22,27,30,72,76,92,103,106,126,141,145,153,183,186,218,228,240,244,247,277,338,359,413,419,437,448,653,656,667,1038,1051,1059,1062,1163,1166,1170,1173,1184,1277,1288,1296,1311,1365,1376,1852,1870,1873,2036,2039,2043,2046,2055,2069,2113,2124,2242,2250,2263,2266,2320,2323,2332,2336,2339,2342,2345,2348],[10,11,12],"p",{},"Industrial networks fail quietly. A saturated uplink, a flapping interface, or a device nearing its resource ceiling degrades silently until a line goes down or a control loop breaks.",[10,14,15],{},"SNMP exists precisely to prevent that. Decades proven, it remains the most reliable protocol for extracting health telemetry from switches, routers, PLCs, and RTUs. No agents, no overhead, runs on everything.",[10,17,18],{},"The gap has always been implementation. Most teams either over-engineer it with heavyweight NMS platforms or under-engineer it with brittle scripts. Neither is acceptable when network visibility is an uptime and safety concern.",[10,20,21],{},"This guide walks through building a production-grade SNMP monitoring pipeline with FlowFuse, polling device metrics, discovering interfaces, and feeding telemetry into a FlowFuse Dashboard where your team can act on it.",[23,24,26],"h2",{"id":25},"prerequisites","Prerequisites",[10,28,29],{},"Before getting started, make sure you have the following in place:",[31,32,33,54,66],"ul",{},[34,35,36,40,41,48,49,53],"li",{},[37,38,39],"strong",{},"FlowFuse:"," A running FlowFuse instance on your edge device. If you do not have an account yet, ",[42,43,47],"a",{"href":44,"rel":45},"https:\u002F\u002Fapp.flowfuse.com\u002Faccount\u002Fcreate",[46],"nofollow","sign up"," to get started and follow this ",[42,50,52],{"href":51},"\u002Fblog\u002F2025\u002F09\u002Finstalling-node-red\u002F","guide to get Node-RED running",".",[34,55,56,59,60,65],{},[37,57,58],{},"An SNMP-enabled device:"," Any managed switch, router, PLC, or RTU with SNMP enabled and UDP port 161 accessible from your FlowFuse instance. If you do not have a real device available, you can run a local SNMP agent for testing — see ",[42,61,64],{"href":62,"rel":63},"http:\u002F\u002Fwww.net-snmp.org\u002Fdownload.html",[46],"net-snmp.org"," for installation instructions for your platform.",[34,67,68,71],{},[37,69,70],{},"UDP port 161 access:"," Confirm your community string and ensure firewall rules permit SNMP polling from your FlowFuse host to the target device.",[23,73,75],{"id":74},"understanding-snmp","Understanding SNMP",[10,77,78,83,84,87,88,91],{},[42,79,82],{"href":80,"rel":81},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FSimple_Network_Management_Protocol",[46],"SNMP"," operates on a simple manager-agent model. The ",[37,85,86],{},"manager"," (your FlowFuse instance) sends requests to the ",[37,89,90],{},"agent"," (a network device or server running an SNMP daemon) and the agent responds with the requested data. All communication happens over UDP port 161.",[10,93,94,95,98,99,102],{},"Data on the agent is organized in a ",[37,96,97],{},"Management Information Base (MIB)"," — a hierarchical tree of objects, each identified by an ",[37,100,101],{},"Object Identifier (OID)",". Every piece of information you can query from a device, its uptime, interface status, traffic counters, CPU load, has a unique OID.",[10,104,105],{},"There are three operations you will use in this guide:",[31,107,108,114,120],{},[34,109,110,113],{},[37,111,112],{},"GET:"," Fetch the value of a specific OID from a device.",[34,115,116,119],{},[37,117,118],{},"WALK:"," Traverse an entire OID subtree and return all values beneath it. Useful for querying all interfaces at once.",[34,121,122,125],{},[37,123,124],{},"SUBTREE:"," Fetch a specific OID subtree and everything beneath it. More targeted than a full walk.",[10,127,128,129,132,133,136,137,140],{},"SNMP also has versions. ",[37,130,131],{},"SNMPv1"," and ",[37,134,135],{},"v2c"," use a plain-text community string as authentication. ",[37,138,139],{},"SNMPv3"," adds user-based authentication and encryption. For production industrial environments, v3 is the right choice. For this guide, we use v2c to keep the focus on the implementation.",[23,142,144],{"id":143},"installing-snmp-package-in-flowfuse","Installing SNMP Package in FlowFuse",[10,146,147,148,152],{},"The ",[149,150,151],"code",{},"node-red-node-snmp"," package provides a set of nodes for communicating with SNMP-enabled devices directly from your flows. Before building the monitoring pipeline, install it into your FlowFuse instance.",[154,155,156,159,165,172,177],"ol",{},[34,157,158],{},"Open your FlowFuse instance and navigate to the Node-RED editor.",[34,160,161,162,53],{},"Click the hamburger menu in the top-right corner and select ",[37,163,164],{},"Manage Palette",[34,166,167,168,171],{},"Go to the ",[37,169,170],{},"Install"," tab.",[34,173,174,175,53],{},"Search for ",[149,176,151],{},[34,178,179,180,182],{},"Click ",[37,181,170],{}," and wait for the installation to complete.",[10,184,185],{},"Once installed, you will see the following nodes available in your palette under the network category:",[31,187,188,194,200,206,212],{},[34,189,190,193],{},[37,191,192],{},"snmp"," — fetch one or more specific OIDs",[34,195,196,199],{},[37,197,198],{},"snmp walker"," — walk from a given OID to the end of the MIB tree",[34,201,202,205],{},[37,203,204],{},"snmp subtree"," — fetch a specific OID subtree and everything beneath it",[34,207,208,211],{},[37,209,210],{},"snmp table"," — fetch structured SNMP table data",[34,213,214,217],{},[37,215,216],{},"snmp set"," — write values back to a device",[10,219,220,225],{},[221,222],"img",{"alt":223,"src":224},"SNMP nodes available in the Node-RED palette after installing node-red-node-snmp","\u002Fblog\u002F2026\u002F03\u002Fimages\u002Fsnmp-nodes.png",[226,227,223],"em",{},[10,229,230,231,233,234,236,237,239],{},"For this guide we will be working with ",[37,232,192],{},", ",[37,235,198],{},", and ",[37,238,204],{},". These three cover the core read operations needed for network health monitoring.",[23,241,243],{"id":242},"polling-device-metrics-with-snmp-get","Polling Device Metrics with SNMP GET",[10,245,246],{},"The snmp node sends a GET request to the agent and returns the values of the OIDs you specify. You can pass a single OID or a comma-separated list — the node fetches all of them in one request and returns the results as an array. This is the right operation when you know exactly what you want to fetch — system uptime, device name, description.",[10,248,249,250,253,254,257,258,263,264,267,268,271,272,53],{},"We will poll three key system OIDs in a single GET request every five seconds. All three sit under the ",[149,251,252],{},"system"," group (",[149,255,256],{},"1.3.6.1.2.1.1","), which is part of ",[42,259,262],{"href":260,"rel":261},"https:\u002F\u002Fwww.rfc-editor.org\u002Frfc\u002Frfc1213.html",[46],"MIB-II"," — the standard MIB supported by virtually every SNMP-enabled device. Standard OIDs are consistent across vendors, so the same OID returns ",[149,265,266],{},"sysUpTime"," whether you are querying a Cisco switch, a Siemens PLC, or a Linux server. Vendor-specific metrics live under ",[149,269,270],{},"1.3.6.1.4.1"," and vary by device — you will need the vendor's MIB file for those. For browsing standard OIDs, see the ",[42,273,276],{"href":274,"rel":275},"https:\u002F\u002Fwww.alvestrand.no\u002Fobjectid\u002F1.3.6.1.2.1.1.html",[46],"OID reference for the system group",[278,279,280,296],"table",{},[281,282,283],"thead",{},[284,285,286,290,293],"tr",{},[287,288,289],"th",{},"OID",[287,291,292],{},"Name",[287,294,295],{},"What it returns",[297,298,299,312,325],"tbody",{},[284,300,301,307,309],{},[302,303,304],"td",{},[149,305,306],{},"1.3.6.1.2.1.1.3.0",[302,308,266],{},[302,310,311],{},"How long the device has been running, in timeticks",[284,313,314,319,322],{},[302,315,316],{},[149,317,318],{},"1.3.6.1.2.1.1.5.0",[302,320,321],{},"sysName",[302,323,324],{},"The configured hostname of the device",[284,326,327,332,335],{},[302,328,329],{},[149,330,331],{},"1.3.6.1.2.1.1.1.0",[302,333,334],{},"sysDescr",[302,336,337],{},"A full description of the hardware and OS",[154,339,340,354],{},[34,341,342,343,346,347,350,351,53],{},"Drag an ",[37,344,345],{},"inject"," node onto the canvas and double click it. Set the repeat interval to ",[37,348,349],{},"every 5 seconds"," and click ",[37,352,353],{},"Done",[34,355,342,356,358],{},[37,357,192],{}," node onto the canvas and double click it to configure:",[278,360,361,371],{},[281,362,363],{},[284,364,365,368],{},[287,366,367],{},"Field",[287,369,370],{},"Value",[297,372,373,384,394,403],{},[284,374,375,378],{},[302,376,377],{},"Host",[302,379,380,381],{},"IP address of your target device, e.g. ",[149,382,383],{},"192.168.1.1",[284,385,386,389],{},[302,387,388],{},"Community",[302,390,391],{},[149,392,393],{},"public",[284,395,396,399],{},[302,397,398],{},"Version",[302,400,401],{},[149,402,135],{},[284,404,405,408],{},[302,406,407],{},"OIDs",[302,409,410],{},[149,411,412],{},"1.3.6.1.2.1.1.3.0,1.3.6.1.2.1.1.5.0,1.3.6.1.2.1.1.1.0",[414,415,416],"blockquote",{},[10,417,418],{},"Note: OIDs in the list must be comma-separated with no spaces between them.",[154,420,422,426],{"start":421},3,[34,423,179,424,53],{},[37,425,353],{},[34,427,428,429,432,433,436],{},"Drag a ",[37,430,431],{},"debug"," node onto the canvas, connect it to the snmp node output, and click ",[37,434,435],{},"Deploy"," to verify the raw response first.",[10,438,439,440,132,442,444,445,447],{},"You will notice the response is not immediately human-readable. OctetString values such as ",[149,441,321],{},[149,443,334],{}," come back as byte arrays, and ",[149,446,266],{}," arrives as a raw TimeTicks integer:",[449,450,455],"pre",{"className":451,"code":452,"language":453,"meta":454,"style":454},"language-json shiki shiki-themes github-light github-dark","[\n  { \"oid\": \"1.3.6.1.2.1.1.3.0\", \"type\": 67, \"value\": 317537, \"tstr\": \"TimeTicks\" },\n  { \"oid\": \"1.3.6.1.2.1.1.5.0\", \"type\": 4, \"value\": [34, 116, 101, 115, 116, ...], \"tstr\": \"OctetString\" },\n  { \"oid\": \"1.3.6.1.2.1.1.1.0\", \"type\": 4, \"value\": [68, 97, 114, 119, 105, ...], \"tstr\": \"OctetString\" }\n]\n","json","",[149,456,457,466,516,583,647],{"__ignoreMap":454},[458,459,462],"span",{"class":460,"line":461},"line",1,[458,463,465],{"class":464},"sVt8B","[\n",[458,467,469,472,476,479,483,485,488,490,493,495,498,500,503,505,508,510,513],{"class":460,"line":468},2,[458,470,471],{"class":464},"  { ",[458,473,475],{"class":474},"sj4cs","\"oid\"",[458,477,478],{"class":464},": ",[458,480,482],{"class":481},"sZZnC","\"1.3.6.1.2.1.1.3.0\"",[458,484,233],{"class":464},[458,486,487],{"class":474},"\"type\"",[458,489,478],{"class":464},[458,491,492],{"class":474},"67",[458,494,233],{"class":464},[458,496,497],{"class":474},"\"value\"",[458,499,478],{"class":464},[458,501,502],{"class":474},"317537",[458,504,233],{"class":464},[458,506,507],{"class":474},"\"tstr\"",[458,509,478],{"class":464},[458,511,512],{"class":481},"\"TimeTicks\"",[458,514,515],{"class":464}," },\n",[458,517,518,520,522,524,527,529,531,533,536,538,540,543,546,548,551,553,556,558,561,563,565,567,571,574,576,578,581],{"class":460,"line":421},[458,519,471],{"class":464},[458,521,475],{"class":474},[458,523,478],{"class":464},[458,525,526],{"class":481},"\"1.3.6.1.2.1.1.5.0\"",[458,528,233],{"class":464},[458,530,487],{"class":474},[458,532,478],{"class":464},[458,534,535],{"class":474},"4",[458,537,233],{"class":464},[458,539,497],{"class":474},[458,541,542],{"class":464},": [",[458,544,545],{"class":474},"34",[458,547,233],{"class":464},[458,549,550],{"class":474},"116",[458,552,233],{"class":464},[458,554,555],{"class":474},"101",[458,557,233],{"class":464},[458,559,560],{"class":474},"115",[458,562,233],{"class":464},[458,564,550],{"class":474},[458,566,233],{"class":464},[458,568,570],{"class":569},"s7hpK","...",[458,572,573],{"class":464},"], ",[458,575,507],{"class":474},[458,577,478],{"class":464},[458,579,580],{"class":481},"\"OctetString\"",[458,582,515],{"class":464},[458,584,586,588,590,592,595,597,599,601,603,605,607,609,612,614,617,619,622,624,627,629,632,634,636,638,640,642,644],{"class":460,"line":585},4,[458,587,471],{"class":464},[458,589,475],{"class":474},[458,591,478],{"class":464},[458,593,594],{"class":481},"\"1.3.6.1.2.1.1.1.0\"",[458,596,233],{"class":464},[458,598,487],{"class":474},[458,600,478],{"class":464},[458,602,535],{"class":474},[458,604,233],{"class":464},[458,606,497],{"class":474},[458,608,542],{"class":464},[458,610,611],{"class":474},"68",[458,613,233],{"class":464},[458,615,616],{"class":474},"97",[458,618,233],{"class":464},[458,620,621],{"class":474},"114",[458,623,233],{"class":464},[458,625,626],{"class":474},"119",[458,628,233],{"class":464},[458,630,631],{"class":474},"105",[458,633,233],{"class":464},[458,635,570],{"class":569},[458,637,573],{"class":464},[458,639,507],{"class":474},[458,641,478],{"class":464},[458,643,580],{"class":481},[458,645,646],{"class":464}," }\n",[458,648,650],{"class":460,"line":649},5,[458,651,652],{"class":464},"]\n",[10,654,655],{},"We need a function node to convert byte arrays to strings and TimeTicks to a readable uptime format.",[154,657,658,664],{"start":649},[34,659,428,660,663],{},[37,661,662],{},"function"," node onto the canvas and insert it between the snmp node and the debug node.",[34,665,666],{},"Double click it and add the following code:",[449,668,672],{"className":669,"code":670,"language":671,"meta":454,"style":454},"language-javascript shiki shiki-themes github-light github-dark","const parsed = msg.payload.map(item => {\n    let value = item.value;\n\n    if (item.tstr === \"OctetString\") {\n        value = Buffer.from(value).toString(\"utf8\").replace(\u002F\"\u002Fg, \"\");\n    }\n\n    if (item.tstr === \"TimeTicks\") {\n        const totalSeconds = Math.floor(value \u002F 100);\n        const days = Math.floor(totalSeconds \u002F 86400);\n        const hours = Math.floor((totalSeconds % 86400) \u002F 3600);\n        const minutes = Math.floor((totalSeconds % 3600) \u002F 60);\n        const seconds = totalSeconds % 60;\n        value = `${days}d ${hours}h ${minutes}m ${seconds}s`;\n    }\n\n    return { oid: item.oid, name: item.tstr, value };\n});\n\nmsg.payload = parsed;\nreturn msg;\n","javascript",[149,673,674,706,720,726,743,795,801,806,820,847,871,903,932,952,988,993,998,1007,1013,1018,1029],{"__ignoreMap":454},[458,675,676,680,683,686,689,693,696,700,703],{"class":460,"line":461},[458,677,679],{"class":678},"szBVR","const",[458,681,682],{"class":474}," parsed",[458,684,685],{"class":678}," =",[458,687,688],{"class":464}," msg.payload.",[458,690,692],{"class":691},"sScJk","map",[458,694,695],{"class":464},"(",[458,697,699],{"class":698},"s4XuR","item",[458,701,702],{"class":678}," =>",[458,704,705],{"class":464}," {\n",[458,707,708,711,714,717],{"class":460,"line":468},[458,709,710],{"class":678},"    let",[458,712,713],{"class":464}," value ",[458,715,716],{"class":678},"=",[458,718,719],{"class":464}," item.value;\n",[458,721,722],{"class":460,"line":421},[458,723,725],{"emptyLinePlaceholder":724},true,"\n",[458,727,728,731,734,737,740],{"class":460,"line":585},[458,729,730],{"class":678},"    if",[458,732,733],{"class":464}," (item.tstr ",[458,735,736],{"class":678},"===",[458,738,739],{"class":481}," \"OctetString\"",[458,741,742],{"class":464},") {\n",[458,744,745,748,750,753,756,759,762,764,767,770,773,775,778,782,784,787,789,792],{"class":460,"line":649},[458,746,747],{"class":464},"        value ",[458,749,716],{"class":678},[458,751,752],{"class":464}," Buffer.",[458,754,755],{"class":691},"from",[458,757,758],{"class":464},"(value).",[458,760,761],{"class":691},"toString",[458,763,695],{"class":464},[458,765,766],{"class":481},"\"utf8\"",[458,768,769],{"class":464},").",[458,771,772],{"class":691},"replace",[458,774,695],{"class":464},[458,776,777],{"class":481},"\u002F",[458,779,781],{"class":780},"sA_wV","\"",[458,783,777],{"class":481},[458,785,786],{"class":678},"g",[458,788,233],{"class":464},[458,790,791],{"class":481},"\"\"",[458,793,794],{"class":464},");\n",[458,796,798],{"class":460,"line":797},6,[458,799,800],{"class":464},"    }\n",[458,802,804],{"class":460,"line":803},7,[458,805,725],{"emptyLinePlaceholder":724},[458,807,809,811,813,815,818],{"class":460,"line":808},8,[458,810,730],{"class":678},[458,812,733],{"class":464},[458,814,736],{"class":678},[458,816,817],{"class":481}," \"TimeTicks\"",[458,819,742],{"class":464},[458,821,823,826,829,831,834,837,840,842,845],{"class":460,"line":822},9,[458,824,825],{"class":678},"        const",[458,827,828],{"class":474}," totalSeconds",[458,830,685],{"class":678},[458,832,833],{"class":464}," Math.",[458,835,836],{"class":691},"floor",[458,838,839],{"class":464},"(value ",[458,841,777],{"class":678},[458,843,844],{"class":474}," 100",[458,846,794],{"class":464},[458,848,850,852,855,857,859,861,864,866,869],{"class":460,"line":849},10,[458,851,825],{"class":678},[458,853,854],{"class":474}," days",[458,856,685],{"class":678},[458,858,833],{"class":464},[458,860,836],{"class":691},[458,862,863],{"class":464},"(totalSeconds ",[458,865,777],{"class":678},[458,867,868],{"class":474}," 86400",[458,870,794],{"class":464},[458,872,874,876,879,881,883,885,888,891,893,896,898,901],{"class":460,"line":873},11,[458,875,825],{"class":678},[458,877,878],{"class":474}," hours",[458,880,685],{"class":678},[458,882,833],{"class":464},[458,884,836],{"class":691},[458,886,887],{"class":464},"((totalSeconds ",[458,889,890],{"class":678},"%",[458,892,868],{"class":474},[458,894,895],{"class":464},") ",[458,897,777],{"class":678},[458,899,900],{"class":474}," 3600",[458,902,794],{"class":464},[458,904,906,908,911,913,915,917,919,921,923,925,927,930],{"class":460,"line":905},12,[458,907,825],{"class":678},[458,909,910],{"class":474}," minutes",[458,912,685],{"class":678},[458,914,833],{"class":464},[458,916,836],{"class":691},[458,918,887],{"class":464},[458,920,890],{"class":678},[458,922,900],{"class":474},[458,924,895],{"class":464},[458,926,777],{"class":678},[458,928,929],{"class":474}," 60",[458,931,794],{"class":464},[458,933,935,937,940,942,945,947,949],{"class":460,"line":934},13,[458,936,825],{"class":678},[458,938,939],{"class":474}," seconds",[458,941,685],{"class":678},[458,943,944],{"class":464}," totalSeconds ",[458,946,890],{"class":678},[458,948,929],{"class":474},[458,950,951],{"class":464},";\n",[458,953,955,957,959,962,965,968,971,974,977,980,983,986],{"class":460,"line":954},14,[458,956,747],{"class":464},[458,958,716],{"class":678},[458,960,961],{"class":481}," `${",[458,963,964],{"class":464},"days",[458,966,967],{"class":481},"}d ${",[458,969,970],{"class":464},"hours",[458,972,973],{"class":481},"}h ${",[458,975,976],{"class":464},"minutes",[458,978,979],{"class":481},"}m ${",[458,981,982],{"class":464},"seconds",[458,984,985],{"class":481},"}s`",[458,987,951],{"class":464},[458,989,991],{"class":460,"line":990},15,[458,992,800],{"class":464},[458,994,996],{"class":460,"line":995},16,[458,997,725],{"emptyLinePlaceholder":724},[458,999,1001,1004],{"class":460,"line":1000},17,[458,1002,1003],{"class":678},"    return",[458,1005,1006],{"class":464}," { oid: item.oid, name: item.tstr, value };\n",[458,1008,1010],{"class":460,"line":1009},18,[458,1011,1012],{"class":464},"});\n",[458,1014,1016],{"class":460,"line":1015},19,[458,1017,725],{"emptyLinePlaceholder":724},[458,1019,1021,1024,1026],{"class":460,"line":1020},20,[458,1022,1023],{"class":464},"msg.payload ",[458,1025,716],{"class":678},[458,1027,1028],{"class":464}," parsed;\n",[458,1030,1032,1035],{"class":460,"line":1031},21,[458,1033,1034],{"class":678},"return",[458,1036,1037],{"class":464}," msg;\n",[414,1039,1040],{},[10,1041,1042,1045,1046,1050],{},[37,1043,1044],{},"Tip:"," If you need different parsing logic for additional OID types or want to transform the output differently, you do not have to write it from scratch. FlowFuse's ",[42,1047,1049],{"href":1048},"\u002Fdocs\u002Fuser\u002Fexpert\u002Fnode-red-embedded-ai\u002F#function-code-generation","AI-powered function generation"," lets you describe what you need in plain English and generates the function node code for you directly inside the editor.",[154,1052,1053],{"start":803},[34,1054,179,1055,350,1057,53],{},[37,1056,353],{},[37,1058,435],{},[10,1060,1061],{},"The debug panel will now show clean, readable output:",[449,1063,1065],{"className":451,"code":1064,"language":453,"meta":454,"style":454},"[\n  { \"oid\": \"1.3.6.1.2.1.1.3.0\", \"name\": \"TimeTicks\", \"value\": \"0d 0h 52m 55s\" },\n  { \"oid\": \"1.3.6.1.2.1.1.5.0\", \"name\": \"OctetString\", \"value\": \"test-device\" },\n  { \"oid\": \"1.3.6.1.2.1.1.1.0\", \"name\": \"OctetString\", \"value\": \"Linux core-switch-01 5.15.0 #1 SMP x86_64\" }\n]\n",[149,1066,1067,1071,1101,1130,1159],{"__ignoreMap":454},[458,1068,1069],{"class":460,"line":461},[458,1070,465],{"class":464},[458,1072,1073,1075,1077,1079,1081,1083,1086,1088,1090,1092,1094,1096,1099],{"class":460,"line":468},[458,1074,471],{"class":464},[458,1076,475],{"class":474},[458,1078,478],{"class":464},[458,1080,482],{"class":481},[458,1082,233],{"class":464},[458,1084,1085],{"class":474},"\"name\"",[458,1087,478],{"class":464},[458,1089,512],{"class":481},[458,1091,233],{"class":464},[458,1093,497],{"class":474},[458,1095,478],{"class":464},[458,1097,1098],{"class":481},"\"0d 0h 52m 55s\"",[458,1100,515],{"class":464},[458,1102,1103,1105,1107,1109,1111,1113,1115,1117,1119,1121,1123,1125,1128],{"class":460,"line":421},[458,1104,471],{"class":464},[458,1106,475],{"class":474},[458,1108,478],{"class":464},[458,1110,526],{"class":481},[458,1112,233],{"class":464},[458,1114,1085],{"class":474},[458,1116,478],{"class":464},[458,1118,580],{"class":481},[458,1120,233],{"class":464},[458,1122,497],{"class":474},[458,1124,478],{"class":464},[458,1126,1127],{"class":481},"\"test-device\"",[458,1129,515],{"class":464},[458,1131,1132,1134,1136,1138,1140,1142,1144,1146,1148,1150,1152,1154,1157],{"class":460,"line":585},[458,1133,471],{"class":464},[458,1135,475],{"class":474},[458,1137,478],{"class":464},[458,1139,594],{"class":481},[458,1141,233],{"class":464},[458,1143,1085],{"class":474},[458,1145,478],{"class":464},[458,1147,580],{"class":481},[458,1149,233],{"class":464},[458,1151,497],{"class":474},[458,1153,478],{"class":464},[458,1155,1156],{"class":481},"\"Linux core-switch-01 5.15.0 #1 SMP x86_64\"",[458,1158,646],{"class":464},[458,1160,1161],{"class":460,"line":649},[458,1162,652],{"class":464},[10,1164,1165],{},"With system metrics polling cleanly, the next section covers using the snmp walker node to discover and monitor all network interfaces on the device.",[23,1167,1169],{"id":1168},"discovering-interfaces-with-snmp-walker","Discovering Interfaces with SNMP Walker",[10,1171,1172],{},"The snmp walker node traverses the MIB tree starting from a given OID and returns every object beneath it. Unlike GET where you specify exact OIDs, walker is useful when you do not know the full OID path in advance — for example, discovering all network interfaces on a device without knowing how many exist or what their index numbers are.",[10,1174,1175,1176,1179,1180,1183],{},"Network interfaces on any SNMP device live under the ",[149,1177,1178],{},"ifTable"," (",[149,1181,1182],{},"1.3.6.1.2.1.2.2","). Walking this subtree returns every interface along with its name, operational status, speed, and traffic counters — one entry per interface regardless of how many the device has.",[278,1185,1186,1196],{},[281,1187,1188],{},[284,1189,1190,1192,1194],{},[287,1191,289],{},[287,1193,292],{},[287,1195,295],{},[297,1197,1198,1211,1230,1251,1264],{},[284,1199,1200,1205,1208],{},[302,1201,1202],{},[149,1203,1204],{},"1.3.6.1.2.1.2.2.1.1",[302,1206,1207],{},"ifIndex",[302,1209,1210],{},"Unique index number for each interface",[284,1212,1213,1218,1221],{},[302,1214,1215],{},[149,1216,1217],{},"1.3.6.1.2.1.2.2.1.2",[302,1219,1220],{},"ifDescr",[302,1222,1223,1224,233,1227],{},"Interface name, e.g. ",[149,1225,1226],{},"eth0",[149,1228,1229],{},"GigabitEthernet0\u002F1",[284,1231,1232,1237,1240],{},[302,1233,1234],{},[149,1235,1236],{},"1.3.6.1.2.1.2.2.1.8",[302,1238,1239],{},"ifOperStatus",[302,1241,1242,1243,1246,1247,1250],{},"Operational status — ",[149,1244,1245],{},"1"," = up, ",[149,1248,1249],{},"2"," = down",[284,1252,1253,1258,1261],{},[302,1254,1255],{},[149,1256,1257],{},"1.3.6.1.2.1.2.2.1.10",[302,1259,1260],{},"ifInOctets",[302,1262,1263],{},"Total inbound bytes on the interface",[284,1265,1266,1271,1274],{},[302,1267,1268],{},[149,1269,1270],{},"1.3.6.1.2.1.2.2.1.16",[302,1272,1273],{},"ifOutOctets",[302,1275,1276],{},"Total outbound bytes on the interface",[10,1278,1279,1280,1282,1283,53],{},"Walking from ",[149,1281,1182],{}," returns all of the above for every interface in one request. For the full ifTable OID reference see ",[42,1284,1287],{"href":1285,"rel":1286},"https:\u002F\u002Fwww.alvestrand.no\u002Fobjectid\u002F1.3.6.1.2.1.2.2.html",[46],"alvestrand.no\u002Fobjectid\u002F1.3.6.1.2.1.2.2",[414,1289,1290],{},[10,1291,1292,1295],{},[37,1293,1294],{},"Note:"," The walker node requires a device with a populated interface table. If you are using a lightweight test agent, increase the timeout in the walker node configuration to at least 30 seconds. On resource-constrained devices that cannot handle bulk requests, use the snmp subtree node instead.",[154,1297,1298,1307],{},[34,1299,342,1300,346,1302,350,1305,53],{},[37,1301,345],{},[37,1303,1304],{},"every 10 seconds",[37,1306,353],{},[34,1308,342,1309,358],{},[37,1310,198],{},[278,1312,1313,1321],{},[281,1314,1315],{},[284,1316,1317,1319],{},[287,1318,367],{},[287,1320,370],{},[297,1322,1323,1331,1339,1347,1355],{},[284,1324,1325,1327],{},[302,1326,377],{},[302,1328,380,1329],{},[149,1330,383],{},[284,1332,1333,1335],{},[302,1334,388],{},[302,1336,1337],{},[149,1338,393],{},[284,1340,1341,1343],{},[302,1342,398],{},[302,1344,1345],{},[149,1346,135],{},[284,1348,1349,1351],{},[302,1350,289],{},[302,1352,1353],{},[149,1354,1182],{},[284,1356,1357,1360],{},[302,1358,1359],{},"Timeout",[302,1361,1362],{},[149,1363,1364],{},"30",[154,1366,1367,1371],{"start":421},[34,1368,179,1369,53],{},[37,1370,353],{},[34,1372,428,1373,1375],{},[37,1374,662],{}," node onto the canvas and insert it between the walker node and a debug node. Double click it and add the following code to parse the response into a readable structure:",[449,1377,1379],{"className":669,"code":1378,"language":671,"meta":454,"style":454},"const interfaces = {};\n\nmsg.payload.forEach(item => {\n    if (!item.oid.startsWith(\"1.3.6.1.2.1.2.2.1.\")) return;\n\n    const parts = item.oid.split(\".\");\n    const ifIndex = parts[parts.length - 1];\n    const subOid = parts.slice(0, -1).join(\".\");\n\n    if (!interfaces[ifIndex]) interfaces[ifIndex] = { index: ifIndex };\n\n    let value = item.value;\n\n    const oidMap = {\n        \"1.3.6.1.2.1.2.2.1.1\": \"ifIndex\",\n        \"1.3.6.1.2.1.2.2.1.2\": \"ifDescr\",\n        \"1.3.6.1.2.1.2.2.1.8\": \"ifOperStatus\",\n        \"1.3.6.1.2.1.2.2.1.10\": \"ifInOctets\",\n        \"1.3.6.1.2.1.2.2.1.16\": \"ifOutOctets\"\n    };\n\n    if (oidMap[subOid]) {\n        if (subOid === \"1.3.6.1.2.1.2.2.1.2\") {\n            const data = value.data || value;\n            value = Buffer.from(data).toString(\"utf8\").replace(\u002F\"\u002Fg, \"\").trim();\n        } else if (subOid === \"1.3.6.1.2.1.2.2.1.8\") {\n            value = value === 1 ? \"up\" : \"down\";\n        }\n        interfaces[ifIndex][oidMap[subOid]] = value;\n    }\n});\n\nmsg.payload = Object.values(interfaces).filter(i => i.ifDescr);\nreturn msg;\n",[149,1380,1381,1393,1397,1413,1440,1444,1467,1491,1529,1533,1549,1553,1563,1567,1578,1591,1603,1615,1627,1637,1642,1646,1654,1670,1690,1737,1758,1785,1791,1801,1806,1811,1816,1845],{"__ignoreMap":454},[458,1382,1383,1385,1388,1390],{"class":460,"line":461},[458,1384,679],{"class":678},[458,1386,1387],{"class":474}," interfaces",[458,1389,685],{"class":678},[458,1391,1392],{"class":464}," {};\n",[458,1394,1395],{"class":460,"line":468},[458,1396,725],{"emptyLinePlaceholder":724},[458,1398,1399,1402,1405,1407,1409,1411],{"class":460,"line":421},[458,1400,1401],{"class":464},"msg.payload.",[458,1403,1404],{"class":691},"forEach",[458,1406,695],{"class":464},[458,1408,699],{"class":698},[458,1410,702],{"class":678},[458,1412,705],{"class":464},[458,1414,1415,1417,1419,1422,1425,1428,1430,1433,1436,1438],{"class":460,"line":585},[458,1416,730],{"class":678},[458,1418,1179],{"class":464},[458,1420,1421],{"class":678},"!",[458,1423,1424],{"class":464},"item.oid.",[458,1426,1427],{"class":691},"startsWith",[458,1429,695],{"class":464},[458,1431,1432],{"class":481},"\"1.3.6.1.2.1.2.2.1.\"",[458,1434,1435],{"class":464},")) ",[458,1437,1034],{"class":678},[458,1439,951],{"class":464},[458,1441,1442],{"class":460,"line":649},[458,1443,725],{"emptyLinePlaceholder":724},[458,1445,1446,1449,1452,1454,1457,1460,1462,1465],{"class":460,"line":797},[458,1447,1448],{"class":678},"    const",[458,1450,1451],{"class":474}," parts",[458,1453,685],{"class":678},[458,1455,1456],{"class":464}," item.oid.",[458,1458,1459],{"class":691},"split",[458,1461,695],{"class":464},[458,1463,1464],{"class":481},"\".\"",[458,1466,794],{"class":464},[458,1468,1469,1471,1474,1476,1479,1482,1485,1488],{"class":460,"line":803},[458,1470,1448],{"class":678},[458,1472,1473],{"class":474}," ifIndex",[458,1475,685],{"class":678},[458,1477,1478],{"class":464}," parts[parts.",[458,1480,1481],{"class":474},"length",[458,1483,1484],{"class":678}," -",[458,1486,1487],{"class":474}," 1",[458,1489,1490],{"class":464},"];\n",[458,1492,1493,1495,1498,1500,1503,1506,1508,1511,1513,1516,1518,1520,1523,1525,1527],{"class":460,"line":808},[458,1494,1448],{"class":678},[458,1496,1497],{"class":474}," subOid",[458,1499,685],{"class":678},[458,1501,1502],{"class":464}," parts.",[458,1504,1505],{"class":691},"slice",[458,1507,695],{"class":464},[458,1509,1510],{"class":474},"0",[458,1512,233],{"class":464},[458,1514,1515],{"class":678},"-",[458,1517,1245],{"class":474},[458,1519,769],{"class":464},[458,1521,1522],{"class":691},"join",[458,1524,695],{"class":464},[458,1526,1464],{"class":481},[458,1528,794],{"class":464},[458,1530,1531],{"class":460,"line":822},[458,1532,725],{"emptyLinePlaceholder":724},[458,1534,1535,1537,1539,1541,1544,1546],{"class":460,"line":849},[458,1536,730],{"class":678},[458,1538,1179],{"class":464},[458,1540,1421],{"class":678},[458,1542,1543],{"class":464},"interfaces[ifIndex]) interfaces[ifIndex] ",[458,1545,716],{"class":678},[458,1547,1548],{"class":464}," { index: ifIndex };\n",[458,1550,1551],{"class":460,"line":873},[458,1552,725],{"emptyLinePlaceholder":724},[458,1554,1555,1557,1559,1561],{"class":460,"line":905},[458,1556,710],{"class":678},[458,1558,713],{"class":464},[458,1560,716],{"class":678},[458,1562,719],{"class":464},[458,1564,1565],{"class":460,"line":934},[458,1566,725],{"emptyLinePlaceholder":724},[458,1568,1569,1571,1574,1576],{"class":460,"line":954},[458,1570,1448],{"class":678},[458,1572,1573],{"class":474}," oidMap",[458,1575,685],{"class":678},[458,1577,705],{"class":464},[458,1579,1580,1583,1585,1588],{"class":460,"line":990},[458,1581,1582],{"class":481},"        \"1.3.6.1.2.1.2.2.1.1\"",[458,1584,478],{"class":464},[458,1586,1587],{"class":481},"\"ifIndex\"",[458,1589,1590],{"class":464},",\n",[458,1592,1593,1596,1598,1601],{"class":460,"line":995},[458,1594,1595],{"class":481},"        \"1.3.6.1.2.1.2.2.1.2\"",[458,1597,478],{"class":464},[458,1599,1600],{"class":481},"\"ifDescr\"",[458,1602,1590],{"class":464},[458,1604,1605,1608,1610,1613],{"class":460,"line":1000},[458,1606,1607],{"class":481},"        \"1.3.6.1.2.1.2.2.1.8\"",[458,1609,478],{"class":464},[458,1611,1612],{"class":481},"\"ifOperStatus\"",[458,1614,1590],{"class":464},[458,1616,1617,1620,1622,1625],{"class":460,"line":1009},[458,1618,1619],{"class":481},"        \"1.3.6.1.2.1.2.2.1.10\"",[458,1621,478],{"class":464},[458,1623,1624],{"class":481},"\"ifInOctets\"",[458,1626,1590],{"class":464},[458,1628,1629,1632,1634],{"class":460,"line":1015},[458,1630,1631],{"class":481},"        \"1.3.6.1.2.1.2.2.1.16\"",[458,1633,478],{"class":464},[458,1635,1636],{"class":481},"\"ifOutOctets\"\n",[458,1638,1639],{"class":460,"line":1020},[458,1640,1641],{"class":464},"    };\n",[458,1643,1644],{"class":460,"line":1031},[458,1645,725],{"emptyLinePlaceholder":724},[458,1647,1649,1651],{"class":460,"line":1648},22,[458,1650,730],{"class":678},[458,1652,1653],{"class":464}," (oidMap[subOid]) {\n",[458,1655,1657,1660,1663,1665,1668],{"class":460,"line":1656},23,[458,1658,1659],{"class":678},"        if",[458,1661,1662],{"class":464}," (subOid ",[458,1664,736],{"class":678},[458,1666,1667],{"class":481}," \"1.3.6.1.2.1.2.2.1.2\"",[458,1669,742],{"class":464},[458,1671,1673,1676,1679,1681,1684,1687],{"class":460,"line":1672},24,[458,1674,1675],{"class":678},"            const",[458,1677,1678],{"class":474}," data",[458,1680,685],{"class":678},[458,1682,1683],{"class":464}," value.data ",[458,1685,1686],{"class":678},"||",[458,1688,1689],{"class":464}," value;\n",[458,1691,1693,1696,1698,1700,1702,1705,1707,1709,1711,1713,1715,1717,1719,1721,1723,1725,1727,1729,1731,1734],{"class":460,"line":1692},25,[458,1694,1695],{"class":464},"            value ",[458,1697,716],{"class":678},[458,1699,752],{"class":464},[458,1701,755],{"class":691},[458,1703,1704],{"class":464},"(data).",[458,1706,761],{"class":691},[458,1708,695],{"class":464},[458,1710,766],{"class":481},[458,1712,769],{"class":464},[458,1714,772],{"class":691},[458,1716,695],{"class":464},[458,1718,777],{"class":481},[458,1720,781],{"class":780},[458,1722,777],{"class":481},[458,1724,786],{"class":678},[458,1726,233],{"class":464},[458,1728,791],{"class":481},[458,1730,769],{"class":464},[458,1732,1733],{"class":691},"trim",[458,1735,1736],{"class":464},"();\n",[458,1738,1740,1743,1746,1749,1751,1753,1756],{"class":460,"line":1739},26,[458,1741,1742],{"class":464},"        } ",[458,1744,1745],{"class":678},"else",[458,1747,1748],{"class":678}," if",[458,1750,1662],{"class":464},[458,1752,736],{"class":678},[458,1754,1755],{"class":481}," \"1.3.6.1.2.1.2.2.1.8\"",[458,1757,742],{"class":464},[458,1759,1761,1763,1765,1767,1769,1771,1774,1777,1780,1783],{"class":460,"line":1760},27,[458,1762,1695],{"class":464},[458,1764,716],{"class":678},[458,1766,713],{"class":464},[458,1768,736],{"class":678},[458,1770,1487],{"class":474},[458,1772,1773],{"class":678}," ?",[458,1775,1776],{"class":481}," \"up\"",[458,1778,1779],{"class":678}," :",[458,1781,1782],{"class":481}," \"down\"",[458,1784,951],{"class":464},[458,1786,1788],{"class":460,"line":1787},28,[458,1789,1790],{"class":464},"        }\n",[458,1792,1794,1797,1799],{"class":460,"line":1793},29,[458,1795,1796],{"class":464},"        interfaces[ifIndex][oidMap[subOid]] ",[458,1798,716],{"class":678},[458,1800,1689],{"class":464},[458,1802,1804],{"class":460,"line":1803},30,[458,1805,800],{"class":464},[458,1807,1809],{"class":460,"line":1808},31,[458,1810,1012],{"class":464},[458,1812,1814],{"class":460,"line":1813},32,[458,1815,725],{"emptyLinePlaceholder":724},[458,1817,1819,1821,1823,1826,1829,1832,1835,1837,1840,1842],{"class":460,"line":1818},33,[458,1820,1023],{"class":464},[458,1822,716],{"class":678},[458,1824,1825],{"class":464}," Object.",[458,1827,1828],{"class":691},"values",[458,1830,1831],{"class":464},"(interfaces).",[458,1833,1834],{"class":691},"filter",[458,1836,695],{"class":464},[458,1838,1839],{"class":698},"i",[458,1841,702],{"class":678},[458,1843,1844],{"class":464}," i.ifDescr);\n",[458,1846,1848,1850],{"class":460,"line":1847},34,[458,1849,1034],{"class":678},[458,1851,1037],{"class":464},[154,1853,1854,1858,1863,1866],{"start":649},[34,1855,179,1856,53],{},[37,1857,353],{},[34,1859,428,1860,1862],{},[37,1861,431],{}," node onto the canvas and connect it to the function node output.",[34,1864,1865],{},"Connect the inject node output to the walker node input, and the walker node output to the function node input.",[34,1867,179,1868,53],{},[37,1869,435],{},[10,1871,1872],{},"The debug panel will show a clean array of interface objects like this:",[449,1874,1876],{"className":451,"code":1875,"language":453,"meta":454,"style":454},"[\n  {\n    \"index\": \"1\",\n    \"ifIndex\": 1,\n    \"ifDescr\": \"lo\",\n    \"ifOperStatus\": \"up\",\n    \"ifInOctets\": 20526,\n    \"ifOutOctets\": 20526\n  },\n  {\n    \"index\": \"2\",\n    \"ifIndex\": 2,\n    \"ifDescr\": \"enp0s1\",\n    \"ifOperStatus\": \"up\",\n    \"ifInOctets\": 48159944,\n    \"ifOutOctets\": 4263495\n  }\n]\n",[149,1877,1878,1882,1887,1899,1910,1922,1934,1946,1956,1961,1965,1976,1986,1997,2007,2018,2027,2032],{"__ignoreMap":454},[458,1879,1880],{"class":460,"line":461},[458,1881,465],{"class":464},[458,1883,1884],{"class":460,"line":468},[458,1885,1886],{"class":464},"  {\n",[458,1888,1889,1892,1894,1897],{"class":460,"line":421},[458,1890,1891],{"class":474},"    \"index\"",[458,1893,478],{"class":464},[458,1895,1896],{"class":481},"\"1\"",[458,1898,1590],{"class":464},[458,1900,1901,1904,1906,1908],{"class":460,"line":585},[458,1902,1903],{"class":474},"    \"ifIndex\"",[458,1905,478],{"class":464},[458,1907,1245],{"class":474},[458,1909,1590],{"class":464},[458,1911,1912,1915,1917,1920],{"class":460,"line":649},[458,1913,1914],{"class":474},"    \"ifDescr\"",[458,1916,478],{"class":464},[458,1918,1919],{"class":481},"\"lo\"",[458,1921,1590],{"class":464},[458,1923,1924,1927,1929,1932],{"class":460,"line":797},[458,1925,1926],{"class":474},"    \"ifOperStatus\"",[458,1928,478],{"class":464},[458,1930,1931],{"class":481},"\"up\"",[458,1933,1590],{"class":464},[458,1935,1936,1939,1941,1944],{"class":460,"line":803},[458,1937,1938],{"class":474},"    \"ifInOctets\"",[458,1940,478],{"class":464},[458,1942,1943],{"class":474},"20526",[458,1945,1590],{"class":464},[458,1947,1948,1951,1953],{"class":460,"line":808},[458,1949,1950],{"class":474},"    \"ifOutOctets\"",[458,1952,478],{"class":464},[458,1954,1955],{"class":474},"20526\n",[458,1957,1958],{"class":460,"line":822},[458,1959,1960],{"class":464},"  },\n",[458,1962,1963],{"class":460,"line":849},[458,1964,1886],{"class":464},[458,1966,1967,1969,1971,1974],{"class":460,"line":873},[458,1968,1891],{"class":474},[458,1970,478],{"class":464},[458,1972,1973],{"class":481},"\"2\"",[458,1975,1590],{"class":464},[458,1977,1978,1980,1982,1984],{"class":460,"line":905},[458,1979,1903],{"class":474},[458,1981,478],{"class":464},[458,1983,1249],{"class":474},[458,1985,1590],{"class":464},[458,1987,1988,1990,1992,1995],{"class":460,"line":934},[458,1989,1914],{"class":474},[458,1991,478],{"class":464},[458,1993,1994],{"class":481},"\"enp0s1\"",[458,1996,1590],{"class":464},[458,1998,1999,2001,2003,2005],{"class":460,"line":954},[458,2000,1926],{"class":474},[458,2002,478],{"class":464},[458,2004,1931],{"class":481},[458,2006,1590],{"class":464},[458,2008,2009,2011,2013,2016],{"class":460,"line":990},[458,2010,1938],{"class":474},[458,2012,478],{"class":464},[458,2014,2015],{"class":474},"48159944",[458,2017,1590],{"class":464},[458,2019,2020,2022,2024],{"class":460,"line":995},[458,2021,1950],{"class":474},[458,2023,478],{"class":464},[458,2025,2026],{"class":474},"4263495\n",[458,2028,2029],{"class":460,"line":1000},[458,2030,2031],{"class":464},"  }\n",[458,2033,2034],{"class":460,"line":1009},[458,2035,652],{"class":464},[10,2037,2038],{},"Each entry represents one interface with its current operational status and traffic counters. In the next section we will use the snmp subtree node to fetch interface data more precisely by targeting a specific OID subtree.",[23,2040,2042],{"id":2041},"fetching-interface-data-with-snmp-subtree","Fetching Interface Data with SNMP Subtree",[10,2044,2045],{},"The snmp subtree node is similar to walker but more targeted. Where walker reads from a given OID to the end of the entire MIB tree, subtree fetches everything beneath a specific OID and stops there. This makes it more predictable and efficient when you know the exact branch you want.",[10,2047,2048,2049,2051,2052,2054],{},"For network health monitoring, a practical use of subtree is pulling all operational status values for every interface in one shot by targeting ",[149,2050,1239],{}," directly at ",[149,2053,1236],{},". This gives you a clean up\u002Fdown status for every interface on the device without pulling traffic counters or other data you do not need at that moment.",[154,2056,2057,2065],{},[34,2058,342,2059,346,2061,350,2063,53],{},[37,2060,345],{},[37,2062,1304],{},[37,2064,353],{},[34,2066,342,2067,358],{},[37,2068,204],{},[278,2070,2071,2079],{},[281,2072,2073],{},[284,2074,2075,2077],{},[287,2076,367],{},[287,2078,370],{},[297,2080,2081,2089,2097,2105],{},[284,2082,2083,2085],{},[302,2084,377],{},[302,2086,380,2087],{},[149,2088,383],{},[284,2090,2091,2093],{},[302,2092,388],{},[302,2094,2095],{},[149,2096,393],{},[284,2098,2099,2101],{},[302,2100,398],{},[302,2102,2103],{},[149,2104,135],{},[284,2106,2107,2109],{},[302,2108,289],{},[302,2110,2111],{},[149,2112,1236],{},[154,2114,2115,2119],{"start":421},[34,2116,179,2117,53],{},[37,2118,353],{},[34,2120,428,2121,2123],{},[37,2122,662],{}," node onto the canvas and insert it between the subtree node and a debug node. Double click it and add the following code to parse the interface status values:",[449,2125,2127],{"className":669,"code":2126,"language":671,"meta":454,"style":454},"const statuses = msg.payload.map(item => {\n    const parts = item.oid.split(\".\");\n    const ifIndex = parts[parts.length - 1];\n    return {\n        ifIndex: ifIndex,\n        ifOperStatus: item.value === 1 ? \"up\" : \"down\"\n    };\n});\n\nmsg.payload = statuses;\nreturn msg;\n",[149,2128,2129,2150,2168,2186,2192,2197,2215,2219,2223,2227,2236],{"__ignoreMap":454},[458,2130,2131,2133,2136,2138,2140,2142,2144,2146,2148],{"class":460,"line":461},[458,2132,679],{"class":678},[458,2134,2135],{"class":474}," statuses",[458,2137,685],{"class":678},[458,2139,688],{"class":464},[458,2141,692],{"class":691},[458,2143,695],{"class":464},[458,2145,699],{"class":698},[458,2147,702],{"class":678},[458,2149,705],{"class":464},[458,2151,2152,2154,2156,2158,2160,2162,2164,2166],{"class":460,"line":468},[458,2153,1448],{"class":678},[458,2155,1451],{"class":474},[458,2157,685],{"class":678},[458,2159,1456],{"class":464},[458,2161,1459],{"class":691},[458,2163,695],{"class":464},[458,2165,1464],{"class":481},[458,2167,794],{"class":464},[458,2169,2170,2172,2174,2176,2178,2180,2182,2184],{"class":460,"line":421},[458,2171,1448],{"class":678},[458,2173,1473],{"class":474},[458,2175,685],{"class":678},[458,2177,1478],{"class":464},[458,2179,1481],{"class":474},[458,2181,1484],{"class":678},[458,2183,1487],{"class":474},[458,2185,1490],{"class":464},[458,2187,2188,2190],{"class":460,"line":585},[458,2189,1003],{"class":678},[458,2191,705],{"class":464},[458,2193,2194],{"class":460,"line":649},[458,2195,2196],{"class":464},"        ifIndex: ifIndex,\n",[458,2198,2199,2202,2204,2206,2208,2210,2212],{"class":460,"line":797},[458,2200,2201],{"class":464},"        ifOperStatus: item.value ",[458,2203,736],{"class":678},[458,2205,1487],{"class":474},[458,2207,1773],{"class":678},[458,2209,1776],{"class":481},[458,2211,1779],{"class":678},[458,2213,2214],{"class":481}," \"down\"\n",[458,2216,2217],{"class":460,"line":803},[458,2218,1641],{"class":464},[458,2220,2221],{"class":460,"line":808},[458,2222,1012],{"class":464},[458,2224,2225],{"class":460,"line":822},[458,2226,725],{"emptyLinePlaceholder":724},[458,2228,2229,2231,2233],{"class":460,"line":849},[458,2230,1023],{"class":464},[458,2232,716],{"class":678},[458,2234,2235],{"class":464}," statuses;\n",[458,2237,2238,2240],{"class":460,"line":873},[458,2239,1034],{"class":678},[458,2241,1037],{"class":464},[414,2243,2244],{},[10,2245,2246,1045,2248,1050],{},[37,2247,1044],{},[42,2249,1049],{"href":1048},[154,2251,2252,2256,2259],{"start":649},[34,2253,179,2254,53],{},[37,2255,353],{},[34,2257,2258],{},"Connect the inject node to the subtree node, the subtree node to the function node, and the function node to a debug node.",[34,2260,179,2261,53],{},[37,2262,435],{},[10,2264,2265],{},"The debug panel will show a concise status array for every interface:",[449,2267,2269],{"className":451,"code":2268,"language":453,"meta":454,"style":454},"[\n  { \"ifIndex\": \"1\", \"ifOperStatus\": \"up\" },\n  { \"ifIndex\": \"2\", \"ifOperStatus\": \"down\" }\n]\n",[149,2270,2271,2275,2295,2316],{"__ignoreMap":454},[458,2272,2273],{"class":460,"line":461},[458,2274,465],{"class":464},[458,2276,2277,2279,2281,2283,2285,2287,2289,2291,2293],{"class":460,"line":468},[458,2278,471],{"class":464},[458,2280,1587],{"class":474},[458,2282,478],{"class":464},[458,2284,1896],{"class":481},[458,2286,233],{"class":464},[458,2288,1612],{"class":474},[458,2290,478],{"class":464},[458,2292,1931],{"class":481},[458,2294,515],{"class":464},[458,2296,2297,2299,2301,2303,2305,2307,2309,2311,2314],{"class":460,"line":421},[458,2298,471],{"class":464},[458,2300,1587],{"class":474},[458,2302,478],{"class":464},[458,2304,1973],{"class":481},[458,2306,233],{"class":464},[458,2308,1612],{"class":474},[458,2310,478],{"class":464},[458,2312,2313],{"class":481},"\"down\"",[458,2315,646],{"class":464},[458,2317,2318],{"class":460,"line":585},[458,2319,652],{"class":464},[10,2321,2322],{},"This is the most efficient way to run a continuous interface health check, one subtree poll every 10 seconds tells you the operational state of every interface on the device without fetching data you do not need.",[10,2324,2325,2326,2331],{},"With all three polling operations in place, the next step is wiring this data into a ",[42,2327,2330],{"href":2328,"rel":2329},"https:\u002F\u002Fdashboard.flowfuse.com\u002F",[46],"FlowFuse Dashboard"," so the information is visible at a glance.",[23,2333,2335],{"id":2334},"wrapping-up","Wrapping Up",[10,2337,2338],{},"Industrial networks don't announce their problems. They accumulate them silently until a line goes down, a control loop breaks, or production stops.",[10,2340,2341],{},"The pipeline you've built here changes that. GET, Walker, and Subtree give you precise, continuous visibility into every device on your network. FlowFuse delivers it without the infrastructure overhead of a full NMS platform or the maintenance burden of hand-rolled scripts.",[10,2343,2344],{},"Wire the telemetry into a FlowFuse Dashboard. Set threshold-based alerts. Extend your OID coverage to vendor-specific metrics as your requirements grow. The foundation is in place. Everything else is iteration.",[10,2346,2347],{},"Unmonitored networks are a liability. Now yours isn't.",[2349,2350,2351],"style",{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .s7hpK, html code.shiki .s7hpK{--shiki-default:#B31D28;--shiki-default-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .sA_wV, html code.shiki .sA_wV{--shiki-default:#032F62;--shiki-dark:#DBEDFF}",{"title":454,"searchDepth":468,"depth":468,"links":2353},[2354,2355,2356,2357,2358,2359,2360],{"id":25,"depth":468,"text":26},{"id":74,"depth":468,"text":75},{"id":143,"depth":468,"text":144},{"id":242,"depth":468,"text":243},{"id":1168,"depth":468,"text":1169},{"id":2041,"depth":468,"text":2042},{"id":2334,"depth":468,"text":2335},"md",{"navTitle":5,"excerpt":2363},{"type":7,"value":2364},[2365],[10,2366,12],{},"\u002Fblog\u002F2026\u002F03\u002Fhow-to-monitor-industrial-network-usign-snmp",{"title":5,"description":12},"blog\u002F2026\u002F03\u002Fhow-to-monitor-industrial-network-usign-snmp","S2UgQzKdfmA45U79c28ALX8lk7xC7chfxHLjUoDZD-o",1780070554427]