- Cable modem is NOT accessible via SNMP. Attempt to SNMPWALK .18.104.22.168.22.214.171.124.126.96.36.199 to verify. Many ISP's block users from accessing the modem with SNMP.
- If the modem IS accessible via SNMP, you should use the DOCSIS Modem Stats script instead.
- Perl installed on the Cacti server.
There are two parts to this:
A) The generic Data Input Method, Data Template and Graph templates.
B) The Perl script which collects the information from the web enabled cable modem diagnostic pages.
The generic templates you shouldn't need to modify, unless you want to add additional fields not present. However, you will need to find the correct Perl Cable modem script that works with your modem. Many users have created them for the vast majority of the modems in use today. You should manually run the script against the cable modem to verify it functions, before attempting to use it with Cacti.
- Import the templates in Cacti
- Modify the 'Cablemodem - Diagnostics Page' Data Input Method so it uses the correct script in the Input String.
- Copy the perl script to your \cacti\scripts\ folder.
- Add a new device in Cacti, using NO host template.
- Change the down detection method to Ping and use UDP (or try ICMP). Top left corner of Cacti, the device should respond to pings. Also change the 'SNMP Version' field to Not In Use.
- Click on Data Sources.
- Click on Add select the Cable modem device. Select the 'Cablemodem - Frequencies' data template. Click create. Repeat for the 'Cablemodem - Power Levels' template too.
- Click on Graph Management. Add the graphs for 'Cablemodem - Frequency' and 'Cablemodem - Power Levels'.
- In each graph you just created, select the proper fields in the Graph Item Fields section.
A note to those writing (or re-writing) scripts for this template. Make sure you include some sort of logic that will timeout after a few seconds on a request. Otherwise, the script will hang while it attempts to contact the cable modem. This will then also cause a Cacti poller to hang, increasing the polling time significantly. The majority of the scripts use the Perl library LWP::Simple. The problem is that its default timeout for a request is 3 minutes!
Sample partial script that implements a short timeout:
The majority of the Perl scripts came from this forum post.