master
yaml 1,272 lines 62.6 KB
Raw
1 plugin_name: go.d.plugin
2 modules:
3 - meta:
4 id: collector-go.d.plugin-snmp
5 plugin_name: go.d.plugin
6 module_name: snmp
7 monitored_instance:
8 name: SNMP devices
9 link: ""
10 icon_filename: SNMP.png
11 categories:
12 - data-collection.networking
13 keywords:
14 # Protocol/generic
15 - snmp
16 - mib
17 - oid
18 - network
19 # Device types
20 - router
21 - switch
22 - firewall
23 - ap
24 - access point
25 - wireless controller
26 - wlc
27 - wifi
28 - vpn
29 - pdu
30 - ups
31 - nas
32 - san
33 - printer
34 # Standard MIB-related (from std-* profiles)
35 - bgp
36 - ospf
37 - ucd
38 # Vendors (from profiles) + common variants
39 - 3com
40 - a10
41 - alcatel
42 - lucent
43 - nokia
44 - anue
45 - apc
46 - netbotz
47 - arista
48 - aruba
49 - audiocodes
50 - avaya
51 - avocent
52 - avtech
53 - roomalert
54 - barracuda
55 - bluecat
56 - brocade
57 - cumulus
58 - brother
59 - chatsworth
60 - checkpoint
61 - chrysalis
62 - cisco
63 - cisco asa
64 - cisco asr
65 - cisco catalyst
66 - cisco nexus
67 - cisco ironport
68 - cisco ics
69 - cisco wlc
70 - cisco ucs
71 - meraki
72 - citrix
73 - netscaler
74 - cradlepoint
75 - cyberpower
76 - dell
77 - dell emc
78 - poweredge
79 - sonicwall
80 - dialogic
81 - dlink
82 - d-link
83 - eaton
84 - exagrid
85 - extreme
86 - f5
87 - big-ip
88 - fireeye
89 - bluecoat
90 - proxysg
91 - sgos
92 - symantec
93 - fortinet
94 - fortigate
95 - fortiswitch
96 - gigamon
97 - hp
98 - hewlett packard
99 - hp ilo
100 - ilo
101 - ilo4
102 - hp h3c
103 - hp icf
104 - hpe
105 - proliant
106 - huawei
107 - 3com huawei
108 - ibm
109 - datapower
110 - lenovo
111 - idrac
112 - dell idrac
113 - infinera
114 - coriant
115 - infoblox
116 - isilon
117 - ixsystems
118 - truenas
119 - juniper
120 - junos
121 - kyocera
122 - linksys
123 - mcafee
124 - mikrotik
125 - mellanox
126 - nasuni
127 - nec
128 - net-snmp
129 - netsnmp
130 - netapp
131 - netgear
132 - readynas
133 - omron
134 - opengear
135 - palo alto
136 - cloudgenix
137 - peplink
138 - raritan
139 - riverbed
140 - ruckus
141 - serveriron
142 - server-iron
143 - servertech
144 - silverpeak
145 - silver peak
146 - edgeconnect
147 - sinetica
148 - sophos
149 - synology
150 - diskstation
151 - tp-link
152 - tplink
153 - tripplite
154 - tripp lite
155 - ubiquiti
156 - unifi
157 - velocloud
158 - vertiv
159 - liebert
160 - watchguard
161 - western digital
162 - wd
163 - mycloud
164 - zebra
165 - zyxel
166 related_resources:
167 integrations:
168 list: []
169 info_provided_to_referring_integrations:
170 description: ""
171 overview:
172 data_collection:
173 metrics_description: |
174 This collector discovers and monitors any SNMP-enabled network device.
175
176 - **Built-in vendor profiles**: Netdata ships with a [large library of profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/snmp.profiles/default) for major vendors, enabling automatic, out-of-the-box monitoring—**no manual OID configuration needed** for common hardware.
177 - **Custom profiles supported**: Users can extend or override stock profiles to add new devices, modify charts, or collect additional OIDs.
178 - **Automatic vendor/model detection**: Devices are matched to the right profile using selectors such as `sysObjectID` and `sysDescr`.
179 - **ICMP ping**: Optional round-trip latency monitoring alongside SNMP, with a `ping_only` mode available.
180 - **SNMP v1, v2c, and v3 support**: Fully implemented via the [gosnmp](https://github.com/gosnmp/gosnmp) library.
181 - **Shared device-level licensing metrics for supported profiles**: When a profile exposes license telemetry, Netdata emits compact per-device licensing charts for earliest expiry, license-state counts (`healthy`, `informational`, `degraded`, `broken`, `ignored`), and highest usage pressure. Supported profile coverage includes Check Point licensing state and per-blade expiry, Fortinet FortiGate contract/service/account expirations, Cisco traditional licensing end-date/remaining-time/state/usage telemetry, Cisco Smart Licensing authorization, certificate, evaluation, and state telemetry, Sophos Firewall subscription state and per-license expiry telemetry, Blue Coat ProxySG application/feature/component expiry, expire-type, and state telemetry, and basic MikroTik RouterOS upgrade-entitlement telemetry. For MikroTik, epoch-like placeholder `mtxrLicUpgrUntil` values are ignored instead of treated as real expired licenses.
182 - **Interactive licensing drill-down**: The `snmp:licenses` function follows the existing SNMP function pattern and shows normalized licensing rows for the selected SNMP job/device using cached collector data.
183
184
185 **Built-in profiles for major vendors:**
186
187 | Category | Vendors |
188 |----------|---------|
189 | Switches & Routers | Cisco (Catalyst, Nexus, ASR, ISR), Arista, Juniper, HP/HPE, Dell, Extreme |
190 | Firewalls | Palo Alto, Fortinet FortiGate, Cisco ASA, Checkpoint, SonicWall, Sophos |
191 | Wireless | Aruba, Cisco WLC, Ubiquiti, Alcatel-Lucent |
192 | Load Balancers | F5 BIG-IP, Citrix NetScaler, A10 Thunder |
193 | Infrastructure | APC UPS/PDU, Dell servers, plus standard MIBs (BGP, OSPF, TCP/UDP) |
194
195 > This table highlights common vendors—the **full library includes many more**.
196
197 **SNMP BGP monitoring**
198
199 Netdata ships BGP monitoring profiles for generic `BGP4-MIB` devices and vendor MIBs including Cisco, Juniper, Nokia SR OS, Huawei, Arista, and Dell.
200
201 The operator-facing BGP charts are normalized under:
202
203 - `snmp.bgp.peers.*`
204 - `snmp.bgp.peer_families.*`
205 - `snmp.bgp.devices.peer_counts`
206 - `snmp.bgp.devices.peer_states`
207
208 Rich per-peer diagnostics such as previous state, last error, graceful-restart state, and vendor unavailability reasons are exposed through the **Live** function `snmp:bgp-peers` instead of being charted as regular time-series.
209
210 This SNMP BGP surface is designed for:
211
212 - peer/session availability and FSM state
213 - established uptime
214 - BGP UPDATE and message traffic
215 - route-count monitoring where the vendor MIB exposes truthful counts
216 - stock alerts for peer down, update churn, transition anomalies, and accepted-prefix drift
217
218 **Important limits**
219
220 - Standard `BGP4-MIB` gives peer health and message counters, but **not** full route-count coverage.
221 - Some route counters are **current gauges**, while others are **cumulative totals**. Netdata keeps them separate instead of flattening unlike semantics into one fake chart.
222 - Huawei contributes to device-level **peer/session counts**, but not device-level **peer state counts** in this SNMP batch.
223 - SNMP does **not** provide live per-route inventory. If you need “all routes to and from a peer in real time”, that belongs to BMP, not this integration page.
224 method_description: |
225 :::info
226
227 See: [SNMP Profile Format](/src/go/plugin/go.d/collector/snmp/profile-format.md) to learn how to write your own or extend stock ones.
228
229 :::
230
231 **Profile locations**
232
233 | Type | Default path | Notes |
234 |------|--------------|-------|
235 | **Stock profiles** | `/usr/lib/netdata/conf.d/go.d/snmp.profiles/default/` | Shipped with Netdata |
236 | **User profiles** | `/etc/netdata/go.d/snmp.profiles/` | Place custom or modified profiles here |
237
238 > Depending on installation, paths may be prefixed with `/opt/netdata`.
239
240 A **profile** defines:
241
242 - Device selectors for auto-matching (e.g. `sysObjectID`, `sysDescr`)
243 - The exact OIDs to collect (scalars and tables)
244 - How to label table rows (metric tags)
245 - Chart/metric metadata (units, families, types), including optional **virtual metrics**
246
247 **At runtime, the collector**:
248
249 1. Reads standard system OIDs (e.g. `sysObjectID`, `sysDescr`) to identify the device
250 2. Picks the best matching vendor/model profile(s)
251 3. Collects exactly the metrics those profiles define
252 supported_platforms:
253 include: []
254 exclude: []
255 multi_instance: true
256 additional_permissions:
257 description: ""
258 default_behavior:
259 auto_detection:
260 description: |
261 SNMP service discovery can automatically scan configured networks and feed the SNMP collector with discovered devices.
262
263 - Disabled by default; enable and configure explicitly.
264 - Supports single IPs, ranges, and CIDR blocks (up to 512 IPs per subnet).
265 - Uses the provided SNMP credentials (v1/v2c/v3) to probe devices.
266 - Caches discovery results (configurable) to reduce network load.
267 - At collection time, each discovered device is matched to the appropriate [profile](/src/go/plugin/go.d/collector/snmp/profile-format.md) based on its `sysObjectID`, `sysDescr`, and the profile’s selector rules.
268
269 The configuration file name is [go.d/sd/snmp.conf](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/config/go.d/sd/snmp.conf).
270
271 You can edit the configuration file using the edit-config script from the Netdata [config directory](https://learn.netdata.cloud/docs/netdata-agent/configuration#locate-your-config-directory).
272
273 ```bash
274 cd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata
275 sudo ./edit-config go.d/sd/snmp.conf
276 ```
277 limits:
278 description: ""
279 performance_impact:
280 description: |
281 **Device constraints**: Many SNMP devices (e.g., access switches) have limited CPU/ASIC time for management. If you see timeouts or gaps, reduce `update_every` or `max_repetitions`, or stagger polling across devices.
282
283 **Concurrent polling**: Parallel access by multiple tools may cause missed counters on some devices. Increase the collection interval (`update_every`) to reduce request pressure.
284 setup:
285 prerequisites:
286 list:
287 - title: "Prepare the SNMP device"
288 description: |
289 Before configuring the collector:
290 - Enable the SNMP service on the target device (via its management interface).
291 - Ensure the device is reachable from the Netdata node on UDP/161.
292 - Gather connection details: IP/DNS, SNMP version, and either a community (v1/v2c) or v3 credentials (user, auth/priv).
293 configuration:
294 file:
295 name: go.d/snmp.conf
296 options:
297 description: |
298 The following options can be defined globally: update_every, autodetection_retry.
299 folding:
300 title: Config options
301 enabled: true
302 list:
303 - name: update_every
304 group: Collection
305 description: Data collection frequency.
306 default_value: 10
307 required: false
308 - name: autodetection_retry
309 group: Collection
310 description: Recheck interval in seconds. Zero means no recheck will be scheduled.
311 default_value: 0
312 required: false
313
314 - name: hostname
315 group: Target
316 description: Target host (IP or DNS name, IPv4/IPv6).
317 default_value: ""
318 required: true
319
320 - name: community
321 group: SNMPv1/2
322 description: SNMPv1/2 community string.
323 default_value: public
324 required: false
325
326 - name: user.name
327 group: SNMPv3
328 description: SNMPv3 user name.
329 default_value: ""
330 required: false
331 - name: user.level
332 group: SNMPv3
333 description: Security level of SNMPv3 messages.
334 default_value: ""
335 required: false
336 detailed_description: |
337 The security of an SNMPv3 message as per RFC 3414 (`user.level`):
338
339 | String value | Int value | Description |
340 |:------------:|:---------:|------------------------------------------|
341 | none | 1 | no message authentication or encryption |
342 | authNoPriv | 2 | message authentication and no encryption |
343 | authPriv | 3 | message authentication and encryption |
344 - name: user.auth_proto
345 group: SNMPv3
346 description: Authentication protocol for SNMPv3 messages.
347 default_value: ""
348 required: false
349 detailed_description: |
350 The digest algorithm for SNMPv3 messages that require authentication (`user.auth_proto`):
351
352 | String value | Int value | Description |
353 |:------------:|:---------:|-------------------------------------------|
354 | none | 1 | no message authentication |
355 | md5 | 2 | MD5 message authentication (HMAC-MD5-96) |
356 | sha | 3 | SHA message authentication (HMAC-SHA-96) |
357 | sha224 | 4 | SHA message authentication (HMAC-SHA-224) |
358 | sha256 | 5 | SHA message authentication (HMAC-SHA-256) |
359 | sha384 | 6 | SHA message authentication (HMAC-SHA-384) |
360 | sha512 | 7 | SHA message authentication (HMAC-SHA-512) |
361 - name: user.auth_key
362 group: SNMPv3
363 description: Authentication protocol pass phrase for SNMPv3 messages.
364 default_value: ""
365 required: false
366 - name: user.priv_proto
367 group: SNMPv3
368 description: Privacy protocol for SNMPv3 messages.
369 default_value: ""
370 required: false
371 detailed_description: |
372 The encryption algorithm for SNMPv3 messages that require privacy (`user.priv_proto`):
373
374 | String value | Int value | Description |
375 |:------------:|:---------:|-------------------------------------------------------------------------|
376 | none | 1 | no message encryption |
377 | des | 2 | ES encryption (CBC-DES) |
378 | aes | 3 | 128-bit AES encryption (CFB-AES-128) |
379 | aes192 | 4 | 192-bit AES encryption (CFB-AES-192) with "Blumenthal" key localization |
380 | aes256 | 5 | 256-bit AES encryption (CFB-AES-256) with "Blumenthal" key localization |
381 | aes192c | 6 | 192-bit AES encryption (CFB-AES-192) with "Reeder" key localization |
382 | aes256c | 7 | 256-bit AES encryption (CFB-AES-256) with "Reeder" key localization |
383 - name: user.priv_key
384 group: SNMPv3
385 description: Privacy protocol pass phrase for SNMPv3 messages.
386 default_value: ""
387 required: false
388 - name: user.context_name
389 group: SNMPv3
390 description: SNMPv3 context name used to address a specific MIB view on multi-context agents (e.g. virtual routers, logical partitions, snmpsim-simulated devices). Leave empty to use the default context.
391 default_value: ""
392 required: false
393
394 - name: options.version
395 group: SNMP transport
396 description: "SNMP version. Available versions: 1, 2, 3."
397 default_value: 2
398 required: false
399 - name: options.port
400 group: SNMP transport
401 description: Target port.
402 default_value: 161
403 required: false
404 - name: options.retries
405 group: SNMP transport
406 description: Retries to attempt.
407 default_value: 1
408 required: false
409 - name: options.timeout
410 group: SNMP transport
411 description: SNMP request/response timeout.
412 default_value: 5
413 required: false
414 - name: options.max_repetitions
415 group: SNMP transport
416 description: Controls how many SNMP variables to retrieve in a single GETBULK request.
417 default_value: 25
418 required: false
419 - name: options.max_request_size
420 group: SNMP transport
421 description: Maximum number of OIDs allowed in a single GET request.
422 default_value: 60
423 required: false
424
425 - name: ping_only
426 group: Ping
427 description: Collect only ICMP round-trip metrics and skip periodic SNMP polling. Implies ping is enabled regardless of the `ping.enabled` setting. A minimal SNMP sysInfo probe still runs at setup for naming/labels/metadata.
428 default_value: false
429 required: false
430 - name: ping.enabled
431 group: Ping
432 description: Enable ICMP round-trip measurements (runs alongside SNMP). When disabled, no ping metrics are collected.
433 default_value: true
434 required: false
435 - name: ping.privileged
436 group: Ping
437 description: Use raw ICMP (privileged). If false, unprivileged mode is used.
438 default_value: true
439 required: false
440 - name: ping.packets
441 group: Ping
442 description: Number of ping packets to send per iteration.
443 default_value: 3
444 required: false
445 - name: ping.interval
446 group: Ping
447 description: Interval between sending ping packets.
448 default_value: 100ms
449 required: false
450
451 - name: manual_profiles
452 group: Profiles
453 description: A list of profiles to force-apply when auto-detection cannot be used.
454 default_value: "[]"
455 required: false
456
457 - name: create_vnode
458 group: Virtual node
459 description: If set, the collector will create a Netdata Virtual Node for this SNMP device, which will appear as a separate Node in Netdata.
460 default_value: "true"
461 required: false
462 - name: vnode_device_down_threshold
463 group: Virtual node
464 description: Number of consecutive failed data collections before marking the device as down.
465 default_value: 3
466 required: false
467 - name: vnode.guid
468 group: Virtual node
469 description: A unique identifier for the Virtual Node. If not set, a GUID will be automatically generated from the device's IP address.
470 default_value: ""
471 required: false
472 - name: vnode.hostname
473 group: Virtual node
474 description: The hostname that will be used for the Virtual Node. If not set, the device's hostname will be used.
475 default_value: ""
476 required: false
477 - name: vnode.labels
478 group: Virtual node
479 description: Additional key-value pairs to associate with the Virtual Node.
480 default_value: ""
481 required: false
482 examples:
483 folding:
484 title: Config
485 enabled: true
486 list:
487 - name: SNMPv1/2
488 description: |
489 In this example:
490
491 - the SNMP device is `192.0.2.1`.
492 - the SNMP version is `2`.
493 - the SNMP community is `public`.
494 - we will update the values every 10 seconds.
495
496 Profiles are auto-selected at runtime
497 config: |
498 jobs:
499 - name: switch
500 update_every: 10
501 hostname: 192.0.2.1
502 community: public
503 options:
504 version: 2
505 - name: SNMPv3
506 description: |
507 To use SNMPv3:
508
509 - use `user` instead of `community`.
510 - set `options.version` to 3.
511 config: |
512 jobs:
513 - name: switch
514 update_every: 10
515 hostname: 192.0.2.1
516 options:
517 version: 3
518 user:
519 name: username
520 level: authPriv
521 auth_proto: sha256
522 auth_key: auth_protocol_passphrase
523 priv_proto: aes256
524 priv_key: priv_protocol_passphrase
525 - name: SNMPv3 with multiple devices
526 description: |
527 This example monitors multiple SNMP devices that share the same SNMPv3 credentials.
528
529 It uses [YAML anchors](https://yaml.org/spec/1.2.2/#3222-anchors-and-aliases) to define the
530 full job once (`&snmp_v3_job`) and then reuse it with `<<: *snmp_v3_job`,
531 overriding only `name` and `hostname` for each additional device.
532 config: |
533 jobs:
534 - &snmp_v3_job
535 name: switch1
536 update_every: 10
537 hostname: 192.0.2.1
538 options:
539 version: 3
540 user:
541 name: username
542 level: authPriv
543 auth_proto: sha256
544 auth_key: auth_protocol_passphrase
545 priv_proto: aes256
546 priv_key: priv_protocol_passphrase
547
548 - <<: *snmp_v3_job
549 name: switch2
550 hostname: 192.0.2.2
551
552 - <<: *snmp_v3_job
553 name: switch3
554 hostname: 192.0.2.3
555 - name: BGP router with forced profile
556 description: |
557 Use `manual_profiles` when auto-detection cannot safely distinguish the device, or when you want to force a specific vendor BGP profile during testing.
558
559 This example targets a Cisco ASR router and keeps the optional ICMP latency charts enabled.
560 config: |
561 jobs:
562 - name: edge-router
563 update_every: 10
564 hostname: 192.0.2.10
565 community: public
566 manual_profiles:
567 - cisco-asr
568 options:
569 version: 2
570 alerts:
571 - name: snmp_license_expiring
572 metric: snmp.license.remaining_time
573 info: "The earliest monitored SNMP license or subscription on this device is close to expiration."
574 link: https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp.conf
575 - name: snmp_license_authorization_expiring
576 metric: snmp.license.authorization_remaining_time
577 info: "The license authorization timer on this device is close to expiration."
578 link: https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp.conf
579 - name: snmp_license_certificate_expiring
580 metric: snmp.license.certificate_remaining_time
581 info: "The license certificate timer on this device is close to expiration."
582 link: https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp.conf
583 - name: snmp_license_grace_period_ending
584 metric: snmp.license.grace_remaining_time
585 info: "The licensing grace or evaluation period on this device is ending or already expired."
586 link: https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp.conf
587 - name: snmp_license_state_warning
588 metric: snmp.license.state
589 info: "One or more monitored licenses on this device are degraded, in grace, or otherwise in warning state."
590 link: https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp.conf
591 - name: snmp_license_state_critical
592 metric: snmp.license.state
593 info: "One or more monitored licenses on this device are expired, invalid, unauthorized, or otherwise in critical state."
594 link: https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp.conf
595 - name: snmp_license_usage_high
596 metric: snmp.license.usage_percent
597 info: "The most constrained monitored license pool on this device is nearing exhaustion."
598 link: https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp.conf
599 - name: snmp_bgp_peer_down
600 link: https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp_bgp.conf
601 metric: snmp.bgp.peers.availability
602 info: BGP peer is administratively enabled but remains out of Established
603 - name: snmp_bgp_peer_family_down
604 link: https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp_bgp.conf
605 metric: snmp.bgp.peer_families.availability
606 info: BGP peer-family is administratively enabled but remains out of Established
607 - name: snmp_bgp_peer_transitions_anomaly
608 link: https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp_bgp.conf
609 metric: snmp.bgp.peers.established_transitions
610 info: ML anomaly detection on per-peer established transition activity
611 - name: snmp_bgp_peer_family_transitions_anomaly
612 link: https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp_bgp.conf
613 metric: snmp.bgp.peer_families.established_transitions
614 info: ML anomaly detection on per-peer-family established transition activity
615 - name: snmp_bgp_peer_updates_anomaly
616 link: https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp_bgp.conf
617 metric: snmp.bgp.peers.update_traffic
618 info: ML anomaly detection on per-peer BGP UPDATE traffic
619 - name: snmp_bgp_peer_family_updates_anomaly
620 link: https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp_bgp.conf
621 metric: snmp.bgp.peer_families.update_traffic
622 info: ML anomaly detection on per-peer-family BGP UPDATE traffic
623 - name: snmp_bgp_peer_family_prefixes_accepted_anomaly
624 link: https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp_bgp.conf
625 metric: snmp.bgp.peer_families.route_counts.current
626 info: ML anomaly detection on accepted-prefix gauges where the vendor MIB exposes them
627 functions:
628 description: |
629 This collector exposes real-time functions for interactive troubleshooting in the Live tab.
630 list:
631 - id: interfaces
632 name: Network Interfaces
633 description: |
634 Provides detailed network interface traffic and status metrics from SNMP-enabled devices.
635
636 This function queries cached SNMP interface data collected during regular polling cycles and presents it in a sortable, filterable table. Each row represents a network interface on the monitored SNMP device, with comprehensive metrics for traffic analysis, error monitoring, and operational status tracking.
637
638 Use cases:
639 - Identify top bandwidth-consuming interfaces on routers, switches, and access points
640 - Monitor interface operational and administrative status for network health
641 - Investigate packet errors, discards, and unusual traffic patterns
642
643 Data is sourced from the IF-MIB (RFC 2863) interface counters and is cached from the last successful SNMP collection. No additional SNMP requests are triggered when calling this function.
644 parameters:
645 - id: if_type_group
646 name: Type Group
647 description: Filter interfaces by their type classification group. Custom mapping categorizes IANA interface types into practical groups for easier filtering.
648 type: select
649 required: true
650 default: ethernet
651 options:
652 - id: ethernet
653 name: Ethernet
654 default: true
655 - id: aggregation
656 name: Aggregation
657 - id: virtual
658 name: Virtual
659 - id: other
660 name: Other
661 returns:
662 description: Network interface metrics from cached SNMP data, including traffic rates, packet statistics, operational status, and error counters. Each row represents one physical or virtual interface.
663 columns:
664 - name: Interface
665 type: string
666 unit: ""
667 description: Network interface name or identifier (e.g., eth0, GigabitEthernet1/0/1, Vlan100)
668 - name: Type
669 type: string
670 unit: ""
671 description: IANA-assigned interface type from IF-MIB (e.g., ethernetCsmacd, ieee80211, softwareLoopback)
672 - name: Type Group
673 type: string
674 unit: ""
675 description: "Custom categorization mapping IANA interface types into practical groups: Ethernet (physical Ethernet interfaces), Aggregation (LAG/port-channels, bonds), Virtual (VLANs, loopbacks), or Other (all remaining types)"
676 - name: Admin Status
677 type: string
678 unit: ""
679 description: "Administrative state configured on the interface: up (enabled for use), down (administratively disabled), or testing (currently in test mode). Different from operational status."
680 - name: Oper Status
681 type: string
682 unit: ""
683 description: "Current operational state of the interface: up (operational and passing traffic), down (not operational), testing (in test mode), unknown (status cannot be determined), dormant (waiting for external actions), notPresent (interface removed but configuration remains), or lowerLayerDown (interface down due to lower-layer issues)"
684 - name: Traffic In
685 type: float
686 unit: "bit/s"
687 description: Inbound network traffic rate in bits per second. High values indicate heavy inbound data flow that may require capacity planning.
688 - name: Traffic Out
689 type: float
690 unit: "bit/s"
691 description: Outbound network traffic rate in bits per second. High values indicate heavy outbound data flow. Compare with Traffic In to identify asymmetric usage patterns.
692 - name: Unicast In
693 type: float
694 unit: "packets/s"
695 visibility: hidden
696 description: Rate of unicast packets (destined for a single recipient) received per second. Normal traffic pattern for point-to-point communications.
697 - name: Unicast Out
698 type: float
699 unit: "packets/s"
700 visibility: hidden
701 description: Rate of unicast packets (addressed to a single destination) transmitted per second.
702 - name: Broadcast In
703 type: float
704 unit: "packets/s"
705 visibility: hidden
706 description: Rate of broadcast packets (sent to all nodes on network) received per second. High values may indicate network storms, ARP flooding, or misconfigured devices.
707 - name: Broadcast Out
708 type: float
709 unit: "packets/s"
710 visibility: hidden
711 description: Rate of broadcast packets transmitted per second. Consistently high broadcast rates can degrade network performance.
712 - name: Packets In
713 type: float
714 unit: "packets/s"
715 description: Total inbound packet rate (sum of unicast, broadcast, and multicast) per second. Useful for overall interface load assessment.
716 - name: Packets Out
717 type: float
718 unit: "packets/s"
719 description: Total outbound packet rate (sum of unicast, broadcast, and multicast) per second.
720 - name: Errors In
721 type: float
722 unit: "packets/s"
723 visibility: hidden
724 description: Rate of inbound packets with errors that prevented delivery. Non-zero values indicate physical layer issues (cable problems, signal integrity) or buffer overruns.
725 - name: Errors Out
726 type: float
727 unit: "packets/s"
728 visibility: hidden
729 description: Rate of outbound packets with transmission errors. Non-zero values may indicate interface hardware issues, cabling problems, or duplex mismatches.
730 - name: Discards In
731 type: float
732 unit: "packets/s"
733 description: Rate of inbound packets deliberately discarded by the device (often due to resource constraints, security policies, or unrecognized frames). Unlike errors, the interface may have been functioning correctly but chose to drop the packet.
734 - name: Discards Out
735 type: float
736 unit: "packets/s"
737 description: Rate of outbound packets deliberately discarded. Can indicate output queue overflows, ACL drops, or security policy rejections.
738 - name: Multicast In
739 type: float
740 unit: "packets/s"
741 visibility: hidden
742 description: Rate of multicast packets (destined for a group) received per second. Common in video streaming, multicast applications, and routing protocols.
743 - name: Multicast Out
744 type: float
745 unit: "packets/s"
746 visibility: hidden
747 description: Rate of multicast packets transmitted per second.
748 performance: |
749 Uses cached SNMP data only, no additional SNMP requests are triggered:<br/>• Responses are instantaneous from memory cache<br/>• Large devices with many interfaces may return many rows
750 security: |
751 Exposes interface names, operational status, and traffic counters only:<br/>• No packet payloads or authentication credentials are exposed<br/>• No device configuration details are exposed
752 availability: |
753 Available when:<br/>• The collector has completed at least one data collection cycle<br/>• Interface data is cached from the last successful SNMP collection<br/>• Returns HTTP 503 if cache is not ready yet
754
755 - id: bgp-peers
756 name: BGP Peers
757 description: |
758 Provides detailed current BGP peer and peer-family state from cached SNMP data.
759
760 This function uses the normalized BGP surface produced during regular SNMP polling and presents it as a sortable, filterable troubleshooting table. It is designed for details that are useful operationally but should not be charted as regular time-series, such as previous state, last error, last down reason, graceful restart state, and vendor-specific unavailability reasons.
761
762 Use cases:
763 - Identify exactly which peer or peer-family is unhealthy right now
764 - See the most recent BGP NOTIFICATION error as human-readable text
765 - Inspect peer identity, AFI/SAFI scope, prefix gauges, and current troubleshooting context in one view
766
767 Data is sourced from the last successful SNMP collection cycle. No additional SNMP requests are triggered when calling this function.
768 parameters:
769 - id: view
770 name: View
771 description: Choose whether to show peer rows, peer-family rows, or both.
772 type: select
773 required: true
774 default: peers
775 options:
776 - id: peers
777 name: Peers
778 default: true
779 - id: peer_families
780 name: Peer Families
781 - id: all
782 name: All
783 returns:
784 description: Current BGP peer and peer-family details from cached normalized SNMP data. Each row represents either one peer or one peer plus AFI/SAFI, depending on the selected view. Additional hidden columns provide raw codes, message totals, and threshold fields for deeper inspection in the UI.
785 columns:
786 - name: Scope
787 type: string
788 unit: ""
789 description: Whether the row represents a peer or a peer-family.
790 - name: Routing Instance
791 type: string
792 unit: ""
793 description: Routing-instance / VRF identifier when exposed by the source MIB.
794 - name: Neighbor
795 type: string
796 unit: ""
797 description: Remote peer address.
798 - name: Local Address
799 type: string
800 unit: ""
801 description: Local address used for the BGP session when exposed by the source MIB.
802 - name: Remote AS
803 type: string
804 unit: ""
805 description: Remote Autonomous System number.
806 - name: Peer Description
807 type: string
808 unit: ""
809 description: Peer description or label when exposed by the source MIB.
810 - name: Family
811 type: string
812 unit: ""
813 description: Address-family / SAFI scope for peer-family rows.
814 - name: Admin Status
815 type: string
816 unit: ""
817 description: Whether the peer is administratively enabled.
818 - name: Connection State
819 type: string
820 unit: ""
821 description: Current BGP FSM state.
822 - name: Previous State
823 type: string
824 unit: ""
825 description: Previous FSM state when the source MIB exposes it.
826 - name: Established Uptime
827 type: integer
828 unit: "seconds"
829 description: Time spent in the Established state.
830 - name: Last Update Age
831 type: integer
832 unit: "seconds"
833 description: Time since the last received UPDATE.
834 - name: Updates Received
835 type: integer
836 unit: "updates"
837 description: Current received UPDATE counter from the latest poll.
838 - name: Updates Sent
839 type: integer
840 unit: "updates"
841 description: Current sent UPDATE counter from the latest poll.
842 - name: Prefixes Accepted
843 type: integer
844 unit: "prefixes"
845 description: Current accepted-prefix gauge where the source MIB exposes it.
846 - name: Prefixes Advertised
847 type: integer
848 unit: "prefixes"
849 description: Current advertised-prefix gauge where the source MIB exposes it.
850 - name: Last Error
851 type: string
852 unit: ""
853 description: Human-readable BGP last-error text derived from the code/subcode pair when available.
854 - name: Down Reason
855 type: string
856 unit: ""
857 description: Last peer-down reason when the source MIB exposes it.
858 - name: GR State
859 type: string
860 unit: ""
861 description: Graceful-restart state for peer-family scoped rows when exposed by the source MIB.
862 - name: Unavailability Reason
863 type: string
864 unit: ""
865 description: Vendor-specific unavailability reason for peer-family scoped rows when exposed by the source MIB.
866 performance: |
867 Uses cached normalized SNMP data only, no additional SNMP requests are triggered:<br/>• Responses are instantaneous from memory cache<br/>• Large devices with many peers or peer-families may return many rows
868 security: |
869 Exposes current BGP control-plane state and identifiers only:<br/>• No authentication credentials are exposed<br/>• No device configuration changes are triggered<br/>• No packet payloads or full route inventory are exposed
870 availability: |
871 Available when:<br/>• The collector has completed at least one successful BGP-capable SNMP collection cycle<br/>• BGP peer data exists for the matched profile(s)<br/>• Returns HTTP 503 if no BGP rows are available yet
872
873 - id: topology
874 name: Network Topology
875 description: |
876 Provides the agent-wide SNMP topology view built from all currently running topology-enabled SNMP jobs.
877
878 This function reads cached LLDP/CDP, bridge, FDB, ARP, and STP data collected by the independent topology refresh loop and returns a netdata.topology.v1 payload with compact actor, link, evidence, and detail tables. No additional SNMP requests are triggered when calling this function.
879
880 Use cases:
881 - Discover Layer 2 neighbors and link mapping
882 - Validate cabling and port connections
883 - Identify adjacent devices that are discovered but not monitored
884 parameters:
885 - id: nodes_identity
886 name: Nodes Identity
887 description: Choose actor identity strategy. `ip` collapses nodes by management IP and removes non-IP inferred actors. `mac` keeps MAC-oriented identities.
888 type: select
889 required: true
890 default: ip
891 options:
892 - id: ip
893 name: IP
894 default: true
895 - id: mac
896 name: MAC
897 - id: map_type
898 name: Map
899 description: Select the topology map mode. Defaults to the managed-device LLDP/CDP view. Other modes progressively include inferred devices and lower-confidence links.
900 type: select
901 required: true
902 default: lldp_cdp_managed
903 options:
904 - id: lldp_cdp_managed
905 name: LLDP/CDP/Managed Devices Map
906 default: true
907 - id: high_confidence_inferred
908 name: High Confidence Inferred Map
909 - id: all_devices_low_confidence
910 name: All Devices (Low Confidence)
911 - id: inference_strategy
912 name: Infer Strategy
913 description: Select the inference algorithm used for FDB/STP/CDP correlation.
914 type: select
915 required: true
916 default: fdb_minimum_knowledge
917 options:
918 - id: fdb_minimum_knowledge
919 name: FDB Minimum-Knowledge (Baseline)
920 default: true
921 - id: stp_parent_tree
922 name: STP Parent Tree
923 - id: fdb_pairwise_minimum_knowledge
924 name: FDB Pairwise Minimum-Knowledge
925 - id: stp_fdb_correlated
926 name: STP + FDB Correlated
927 - id: cdp_fdb_hybrid
928 name: CDP + FDB Hybrid
929 - id: managed_snmp_device_focus
930 name: Focus On
931 description: Limit depth filtering to selected managed SNMP roots. The static default is `all_devices`; additional `ip:<address>` options are supplied dynamically from the current managed SNMP jobs.
932 type: multiselect
933 required: true
934 default: all_devices
935 options:
936 - id: all_devices
937 name: All Devices
938 default: true
939 - id: depth
940 name: Focus Depth
941 description: Limit topology expansion hops from the focus roots. `all` disables depth filtering.
942 type: select
943 required: true
944 default: all
945 options:
946 - id: all
947 name: All
948 default: true
949 - id: "0"
950 name: "0"
951 - id: "1"
952 name: "1"
953 - id: "2"
954 name: "2"
955 - id: "3"
956 name: "3"
957 - id: "4"
958 name: "4"
959 - id: "5"
960 name: "5"
961 - id: "6"
962 name: "6"
963 - id: "7"
964 name: "7"
965 - id: "8"
966 name: "8"
967 - id: "9"
968 name: "9"
969 - id: "10"
970 name: "10"
971 returns:
972 description: Agent-wide SNMP topology data using the netdata.topology.v1 schema, suitable for cross-agent aggregation.
973 columns:
974 - name: schema_version
975 type: string
976 unit: ""
977 description: Topology schema version.
978 - name: producer
979 type: object
980 unit: ""
981 description: Producer metadata identifying the SNMP L2 topology source, plugin, and local node when available.
982 - name: collected_at
983 type: datetime
984 unit: ""
985 description: Collection timestamp in RFC 3339 format.
986 - name: view
987 type: object
988 unit: ""
989 description: Topology view metadata, including selected mode and focus parameters when present.
990 - name: dictionaries
991 type: object
992 unit: ""
993 description: Compact-table dictionaries used by actors, links, evidence, and detail tables.
994 - name: types
995 type: object
996 unit: ""
997 description: Actor, link, evidence, table, and presentation type registry.
998 - name: presentation
999 type: object
1000 unit: ""
1001 description: Graph-level presentation metadata.
1002 - name: actors
1003 type: object
1004 unit: ""
1005 description: Compact actor table for managed devices, discovered devices, inferred endpoints, and network segments.
1006 - name: links
1007 type: object
1008 unit: ""
1009 description: Compact link table for LLDP, CDP, bridge, FDB, STP, ARP, SNMP, and inferred L2 relationships.
1010 - name: evidence
1011 type: object
1012 unit: ""
1013 description: Relationship evidence tables backing the rendered links.
1014 - name: tables
1015 type: object
1016 unit: ""
1017 description: Actor detail, port, path, and label tables used by topology modals.
1018 - name: stats
1019 type: object
1020 unit: ""
1021 description: Summary stats for collected observations, actors, links, and pruning/filtering decisions.
1022 performance: |
1023 Uses cached SNMP data only, no additional SNMP requests are triggered:<br/>• Responses are instantaneous from memory cache<br/>• Large devices with many discovered neighbors may return many rows
1024 security: |
1025 Exposes discovered device identifiers, interface/port identifiers, and management addresses only:<br/>• No packet payloads or authentication credentials are exposed<br/>• No device configuration details are exposed
1026 availability: |
1027 Available when:<br/>• The collector has completed at least one successful topology refresh cycle<br/>• LLDP/CDP topology data is present in cache from the last successful topology refresh<br/>• Returns HTTP 503 if topology cache is not ready yet
1028
1029 - id: licenses
1030 name: Licenses
1031 description: |
1032 Provides normalized licensing rows for the selected SNMP device.
1033
1034 This function reads the collector's cached licensing rows and shows one row per normalized license entry. It is the drill-down view behind the device-level licensing charts: expiry timers, authorization/certificate/grace timers, usage/capacity, raw vendor state, normalized state bucket, and operational impact.
1035
1036 It follows the same pattern as the SNMP `interfaces` function:
1037 - the function itself is global for the SNMP collector
1038 - the Live tab targets the selected SNMP job/device automatically using the standard SNMP function context
1039 - the returned rows belong only to that selected device
1040
1041 Use cases:
1042 - See which exact license rows make the device show degraded or broken counts
1043 - Inspect expiry and grace timers for subscriptions, support, and smart-licensing signals
1044 - Review usage/capacity for finite license pools on the selected device
1045
1046 Data is sourced from the last successful SNMP collection. No extra SNMP requests are triggered when calling this function.
1047 parameters: []
1048 returns:
1049 description: Normalized licensing rows for the selected SNMP device. Each row represents one cached normalized licensing entry from the collector.
1050 columns:
1051 - name: License
1052 type: string
1053 unit: ""
1054 description: Human-readable license row name, or the normalized license identifier when no name exists.
1055 - name: ID
1056 type: string
1057 unit: ""
1058 visibility: hidden
1059 description: Stable row identifier used by the UI to track one normalized licensing row across updates.
1060 - name: Bucket
1061 type: string
1062 unit: ""
1063 description: "Normalized health bucket for the row: healthy, informational, degraded, broken, or ignored."
1064 - name: State
1065 type: string
1066 unit: ""
1067 description: Raw vendor licensing state when the device exposes one.
1068 - name: Component
1069 type: string
1070 unit: ""
1071 description: Normalized component or area associated with the license row.
1072 - name: Type
1073 type: string
1074 unit: ""
1075 description: Normalized license type such as subscription, certificate, authorization, evaluation, or usage pool.
1076 - name: Remaining
1077 type: duration
1078 unit: "milliseconds"
1079 description: Time remaining until the row's primary expiry, when applicable.
1080 - name: Expiry
1081 type: timestamp
1082 unit: ""
1083 description: Absolute expiry time for the row, when known.
1084 - name: Usage
1085 type: integer
1086 unit: "licenses"
1087 description: Used license units for finite pools.
1088 - name: Capacity
1089 type: integer
1090 unit: "licenses"
1091 description: Total capacity for finite license pools.
1092 - name: Usage %
1093 type: float
1094 unit: "percentage"
1095 description: Usage pressure for finite license pools.
1096 - name: Impact
1097 type: string
1098 unit: ""
1099 description: Operational impact text when the vendor or profile provides it.
1100 performance: |
1101 Uses cached SNMP data only, no additional SNMP requests are triggered:<br/>• Responses are instantaneous from memory cache<br/>• Large devices with many licensing rows may return many rows
1102 security: |
1103 Exposes licensing names, states, timers, counts, and impact notes only:<br/>• No credentials or secrets are exposed<br/>• No device configuration is modified
1104 availability: |
1105 Available when:<br/>• The collector has completed at least one licensing-aware data collection cycle that produced licensing rows<br/>• Licensing data is cached from the last successful SNMP collection<br/>• Returns HTTP 503 if cache is not ready yet or the device/profile exposes no licensing rows
1106 metrics:
1107 folding:
1108 title: Metrics
1109 enabled: false
1110 description: |
1111 Metrics and charts are **defined by the matched SNMP profile(s)** at runtime. They differ by vendor/model/OS and may include, for example, interface counters, optics, CPU/memory, temperature, VLANs, and more. Use the **Metrics** tab on the device’s dashboard to see exactly what is collected for that device.
1112
1113 Supported licensing profiles also emit a small set of shared **device-level licensing contexts**:
1114
1115 - `snmp.license.remaining_time`: earliest remaining time to expiry across monitored licenses and subscriptions on the device
1116 - `snmp.license.authorization_remaining_time`: earliest remaining time for license authorization timers
1117 - `snmp.license.certificate_remaining_time`: earliest remaining time for licensing certificate timers
1118 - `snmp.license.grace_remaining_time`: earliest remaining time for grace or evaluation timers
1119 - `snmp.license.usage_percent`: highest license pool pressure across finite usage pools on the device
1120 - `snmp.license.state`: count of licensing rows on the device by normalized state bucket (`healthy`, `informational`, `degraded`, `broken`, `ignored`)
1121
1122 The licensing charts are intentionally aggregated to keep one clean device view:
1123
1124 - Netdata reports the **earliest** expiry-related deadline on the device.
1125 - Netdata reports how many licensing rows are **healthy**, **informational**, **degraded**, **broken**, and **ignored** on the device.
1126 - Netdata reports the **highest** usage pressure across finite license pools on the device.
1127
1128 Licensing support is intentionally conditional:
1129
1130 - licensing charts appear only for devices whose matched SNMP profile exposes licensing telemetry
1131 - not every supported device exposes all licensing dimensions
1132 - `remaining_time` and related time charts appear only when the device exposes expiry-like timers
1133 - `usage_percent` appears only when the device exposes finite usage and capacity data
1134 - `snmp.license.state` appears only when the device exposes enough state/compliance/validity data to normalize rows
1135
1136 Default alerts from `src/health/health.d/snmp.conf` use `30d/7d` for expiry-related timers, `7d/0d` for grace timers, and `80/95` for usage pressure. You can override them like any other Netdata health configuration.
1137
1138 :::tip
1139
1140 To understand the structure of these profiles (metrics, tags, virtual metrics, etc.), see **[SNMP Profile Format](/src/go/plugin/go.d/collector/snmp/profile-format.md)**.
1141
1142 :::
1143
1144 If `ping.enabled` is true, ICMP latency/packet-loss charts are also provided (or exclusively, when `ping_only: true`).
1145
1146 **For BGP-capable profiles, the public chart contract is:**
1147
1148 - `snmp.bgp.peers.*` for one BGP peer/session per chart instance
1149 - `snmp.bgp.peer_families.*` for one peer plus AFI/SAFI per chart instance
1150 - `snmp.bgp.devices.peer_counts` for device-level peer/session counts
1151 - `snmp.bgp.devices.peer_states` for device-level peer-state summaries where the source MIB exposes canonical peer rows
1152 - Rich peer diagnostics live in the Live function `snmp:bgp-peers`, not in charted time-series
1153
1154 **BGP capability notes**
1155
1156 | Vendor / MIB surface | Peer charts | Peer-family charts | Device peer counts | Device peer states | Route counts |
1157 |----------------------|-------------|--------------------|--------------------|--------------------|--------------|
1158 | Standard `BGP4-MIB` | Yes | No | Yes | Yes | No |
1159 | Cisco ASR | Yes | Yes | Yes | Yes | Yes |
1160 | Juniper MX | Yes | Yes | Yes | Yes | Yes |
1161 | Nokia SR OS | Yes | Yes | Yes | Yes | Yes |
1162 | Arista | Yes | Yes | Yes | Yes | Yes |
1163 | Dell OS10 | Yes | Yes | Yes | Yes | Yes |
1164 | Huawei | Partial | Yes | Yes | No | Totals only |
1165
1166 **Interpretation guidance**
1167
1168 - `route_counts.current` contains current gauges such as received, accepted, advertised, active, suppressed, or withdrawn prefixes when the vendor MIB exposes them.
1169 - `route_totals` contains cumulative counters where the vendor MIB only exposes totals.
1170 - When the source model is peer-family scoped, alerts and chart labels include AFI/SAFI so operators can distinguish otherwise similar peers.
1171 availability: []
1172 dynamic_context_prefixes:
1173 - prefix: snmp.
1174 reason: SNMP profiles emit vendor- and device-specific chart contexts at runtime under the snmp namespace.
1175 scopes:
1176 - name: device licensing
1177 description: Shared device-level licensing health metrics emitted when the matched SNMP profile provides licensing telemetry. Supported profile coverage includes Check Point licensing state and per-blade expiry, Fortinet FortiGate contract/service/account expirations, Cisco traditional licensing end-date/remaining-time/state/usage telemetry, Cisco Smart Licensing authorization, certificate, evaluation, and state telemetry, Sophos Firewall subscription state and per-license expiry telemetry, Blue Coat ProxySG application/feature/component expiry, expire-type, and state telemetry, and basic MikroTik RouterOS upgrade-entitlement telemetry. MikroTik support is intentionally limited to the RouterOS upgrade-entitlement fields exposed by SNMP, and epoch-like placeholder `mtxrLicUpgrUntil` values are ignored.
1178 labels:
1179 - name: component
1180 description: Always `licensing` for the shared SNMP licensing charts.
1181 metrics:
1182 - name: snmp.license.remaining_time
1183 description: Earliest remaining time to expiry across monitored licenses and subscriptions on the device.
1184 unit: seconds
1185 chart_type: line
1186 dimensions:
1187 - name: remaining_time
1188 - name: snmp.license.authorization_remaining_time
1189 description: Earliest remaining time for licensing authorization timers on the device.
1190 unit: seconds
1191 chart_type: line
1192 dimensions:
1193 - name: remaining_time
1194 - name: snmp.license.certificate_remaining_time
1195 description: Earliest remaining time for licensing certificate timers on the device.
1196 unit: seconds
1197 chart_type: line
1198 dimensions:
1199 - name: remaining_time
1200 - name: snmp.license.grace_remaining_time
1201 description: Earliest remaining time for licensing grace or evaluation timers on the device.
1202 unit: seconds
1203 chart_type: line
1204 dimensions:
1205 - name: remaining_time
1206 - name: snmp.license.usage_percent
1207 description: Highest usage pressure across finite licensing pools on the device.
1208 unit: percentage
1209 chart_type: area
1210 dimensions:
1211 - name: usage_percent
1212 - name: snmp.license.state
1213 description: "Count of licensing rows on the device by normalized state bucket: healthy, informational, degraded, broken, and ignored."
1214 unit: licenses
1215 chart_type: stacked
1216 dimensions:
1217 - name: healthy
1218 - name: informational
1219 - name: degraded
1220 - name: broken
1221 - name: ignored
1222 troubleshooting:
1223 problems:
1224 list:
1225 - name: Debugging Gaps on Charts
1226 description: |
1227 If your SNMP charts show gaps, it means the collector could not finish metric collection before the next scheduled run. This usually happens when SNMP tables take longer to collect than your configured `update_every`.
1228
1229 These gaps do *not* mean the device stopped exporting SNMP metrics — only that the collector had to skip cycles.
1230
1231 **Step 1: Check the Logs**
1232
1233 [Look for messages](#getting-logs) like:
1234
1235 ```text
1236 level=warn msg="skipping data collection: previous run is still in progress for 4s (skipped 4 times in a row, interval 1s)" collector=snmp job=your_device
1237 level=info msg="data collection resumed after 4.36s (skipped 4 times)" collector=snmp job=your_device
1238 ```
1239
1240 The “resumed after” message shows how long the previous collection actually took.
1241 For example, if a run needs ~4.4 seconds and `update_every` is 1 second, 4 cycles will be skipped.
1242
1243
1244 **Step 2: Check Collection Timings**
1245
1246 Open **SNMP → Internal → Stats** in the dashboard.
1247 The **SNMP profile collection timings** chart shows how long each part of the SNMP polling takes.
1248 Table metrics are usually the slowest and often determine the total collection time.
1249
1250 **Step 3: Increase the data collection interval**
1251
1252 [Set `update_every`](#setup) to a value **higher than your slowest collection time**, with some extra buffer for network variability.
1253
1254 | Typical Collection Time | Recommended `update_every` |
1255 |-------------------------|-----------------------------|
1256 | < 2 seconds | 2 seconds |
1257 | 2–5 seconds | 5 seconds |
1258 | 5–10 seconds | 10 seconds |
1259 | > 10 seconds | collection_time × 2 |
1260
1261 :::info
1262
1263 - **Rule of thumb:** `update_every` should be at least 2× your slowest table collection time.
1264 - The default `update_every: 10` works well in most environments.
1265 - Only reduce it if your device consistently responds fast enough.
1266
1267 :::
1268
1269 **Quick Checklist**
1270 1. Do logs show “skipping data collection”?
1271 2. Does *Internal → Stats* show collection time > `update_every`?
1272 3. Increase `update_every` until skips disappear.