Cacti SNMP graphs on a multi-site lab

I pointed Cacti 1.2.31 at the same multi-site home-lab network used for the Zabbix write-up and recorded what the Cisco Router package actually graphed over SNMPv3, including the Layer 2 authNoPriv limit.

Diagram of Cacti 1.2.31 SNMPv3 polling a multi-site home-lab network, with the HQ edge toward provider A marked Et0/2.

If you already poll a campus-and-branch network in Zabbix, Cacti answers a narrower question: can the same SNMPv3 devices produce long-lived interface traffic and status graphs from the official Cisco package.

This write-up is from Cacti 1.2.31, built in my home lab on November 8, 2026. It complements Zabbix on a multi-site enterprise lab rather than repeating that walkthrough.

The network I graphed

The lab is the same multi-site design: HQ campus, data center, two branches, and two WAN providers. Provider A is preferred. Provider B is the backup.

Cacti 1.2.31 polling a multi-site home-lab network. The HQ edge toward provider A is marked Et0/2. A backup path toward provider B is shown. SNMP collection reaches the campus, data center, and two branches.
Cacti 1.2.31 collects SNMPv3 interface graphs from the same multi-site lab. The HQ edge toward provider A leaves on Et0/2. Built in my home lab.

I added the 15 Cisco IOS-XE 17.18.2 devices. The 11 Layer 3 routers are polled at Loopback0 so a WAN link down is not also a management-path down. The four access switches are polled at their in-band management addresses.

Linux endpoints are not in this Cacti instance. This install only graphs SNMP. It does not run the ICMP and HTTP simple checks from the Zabbix article.

Cacti Devices list with all 15 hosts showing Status Up and 100 percent availability. Hostname addresses are hidden.
Cacti Console, Devices after onboarding. All 15 rows show Status Up and 100 percent availability. Hostname addresses are hidden in this crop.

What collected

An official CLI install imported the Cacti Stats, Cisco Router, and Generic SNMP Device packages. I used host template "Cisco Router" for all 15 devices.

After interface reindexing, the first poller run at 8:41:43 AM Pacific Time on November 8, 2026 reported 15 hosts up, 276 data sources, and 199 RRDs processed in 6.6 seconds:

  • System description on the 11 routers identified IOS-XE enterprise software. The four access switches identified the Layer 2 IOS-XE image.
  • SNMPv3 on Layer 3 used authPriv (SHA and AES). The access switches used authNoPriv (SHA). That matches the same image limit recorded in the Zabbix article.
  • Interface discovery returned short names such as Et0/2 and Lo0. Where Cisco had a description, Cacti used it in the graph title. I cropped those descriptions out of the screenshots below. The HQ edge toward provider A is the Et0/2 traffic and status pair.
  • I created Interface Traffic (bits/sec) and Interface Status graphs for Ethernet names matching ^Et, plus a Device Uptime graph per host. That is 77 traffic graphs, 77 status graphs, and 15 uptime graphs.

The poller runs that job on a 300 second loop. It is not a one-off command. Later automatic cycles at 8:46:50, 8:51:58, and 8:57:05 AM PT kept the same 15/276/199 counts.

A last-hour graph preview for the HQ edge, from 8:02 to 9:02 AM Pacific Time, stayed blank until about 8:40 AM. That empty left side is the hour before this instance started writing RRDs, not a polling failure.

Cacti last-hour graph preview for the HQ edge showing CPU at zero and polling time samples starting around 8:40 AM.
Graph preview for the HQ edge router, last hour from 8:02 to 9:02 AM Pacific Time on November 8, 2026. Samples begin around 8:40 AM, when this Cacti instance started writing RRDs. CPU stays at 0. Polling time is in seconds.

The official Interface - Traffic template stores octet counters. The graph items use Cacti's Turn Bytes into Bits CDEF (CURRENT_DATA_SOURCE * 8), so the UI is bits per second. rrdtool fetch AVERAGE on the HQ edge graph toward provider A (Et0/2) showed three closed five-minute slots: about 1142/766 bytes per second ending 8:45 AM PT, 1085/691 ending 8:50 AM PT, and 1126/650 ending 8:55 AM PT. That is about 9.1, 8.7, and 9.0 kbps inbound after the CDEF. The matching status RRD last value was 1 (up). Those numbers came from the files the poller wrote. I did not edit counters or graph points.

The daily traffic graph matches that recent window. The long blank range to the left is the same honest start of collection. Current inbound on that view is about 8.0 kbps, average 8.7 kbps, maximum 9.1 kbps. Those are background rates from the live poll, not a traffic load I generated and not a failover test.

Daily Cacti traffic graph in bits per second for the HQ edge toward provider A, with samples only near 9:00 AM on November 8, 2026.
Interface traffic on the HQ edge toward provider A (Et0/2), in bits per second. The daily view is blank until the first samples near 9:00 AM on November 8, 2026. Current inbound is about 8.0 kbps, average 8.7 kbps, maximum 9.1 kbps.
Daily Cacti interface status graph for the HQ edge toward provider A, current status 1 up, with samples only near 9:00 AM.
Interface status for the same HQ edge link toward provider A (Et0/2). Current status is 1 (up). The earlier blank range is the same recent collection window.

The official Cisco package also created CPU graphs. On the HQ edge and the HQ access switch those RRDs last stored 0. I do not read that as a measured CPU load on these virtual devices.

A short HTTP check from a branch user to the HQ app succeeded at 8:46:43 AM PT, so the data path was alive at that moment. Larger transfers timed out. After that, pings to the app's data-plane address failed while local HTTP on the app host still answered.

Cacti and the access switch both showed the port toward the HQ app as up, in the server VLAN, and spanning-tree forwarding. The switch had not learned the app's MAC on that port, and the app could not complete ARP for its gateway. Other servers on the same VLAN still answered. An SNMP interface-up reading is not the same as the attached host being reachable. This was not a failover test I planned.

Daily Cacti traffic graph for the HQ access switch toward the HQ user, in bits per second, with samples only near 9:00 AM.
Traffic on the HQ access switch toward the HQ user endpoint, in bits per second. Current inbound is about 46 bits per second and outbound about 443 bits per second. This is not a generated traffic load.
Daily Cacti interface status graph for the HQ access switch port toward the HQ app, current status 1 up.
Interface status on the HQ access switch port toward the HQ app (Et0/3). Current status is 1 (up). An SNMP up reading is not proof the attached host is reachable.

What this post does not cover

I did not run Nagios, Icinga, OpenNMS, or PRTG on this network for this article. Cacti native alerting is not the focus here. This is not a ranking against Zabbix.

Read next

Nagios Core on a multi-site lab

I pointed Nagios Core 4.5.14 and official Nagios Plugins 2.5 at the same multi-site home-lab network used for the Zabbix and Cacti write-ups and recorded host checks, HTTP DNS SMTP and NTP services, and a scheduled soft-to-hard recovery on a local mail sink.