Forum Discussion

LMacchi_55183's avatar
LMacchi_55183
Icon for Nimbostratus rankNimbostratus
Jun 30, 2009

Empty TMM Memory graph in Cacti

Hi,

I'm pretty new to F5 world, but learning fast. I've installed Cacti in a RedHat Server to monitor some of our F5 boxes.

Following a tutorial found here I've got it up and running, almost all configured as I need.

However, I can't get the TMM memory graph to work, all the values appear as NaN. Some details:

Inside the server where cacti is installed, using the shell, I go to scripts folder and run the script manually...

php ss_f5-bigip-tmm-memory.php f5_ip public 2 161 10

sysStatMemoryTotal: 13136560128 sysStatMemoryUsed: 2379967036

I go to rra folder, and run this command using the graph from one of the boxes as argument:

rrdtool fetch vp-01_tmmmemtotal_22.rrd AVERAGE | tail

1246389600: nan nan 
 1246389900: nan nan 
 1246390200: nan nan 
 1246390500: nan nan 
 1246390800: nan nan 
 1246391100: nan nan 
 1246391400: nan nan 
 1246391700: nan nan 
 1246392000: nan nan 
 1246392300: nan nan

When running this other command...

rrdtool info vp-01_tmmmemtotal_22.rrd

 
 filename = "vp-01_tmmmemtotal_22.rrd" 
 rrd_version = "0003" 
 step = 300 
 last_update = 1246282493 
 ds[TmmMemTotal].type = "GAUGE" 
 ds[TmmMemTotal].minimal_heartbeat = 600 
 ds[TmmMemTotal].min = 0.0000000000e+00 
 ds[TmmMemTotal].max = NaN 
 ds[TmmMemTotal].last_ds = "UNKN" 
 ds[TmmMemTotal].value = 0.0000000000e+00 
 ds[TmmMemTotal].unknown_sec = 293 
 ds[TmmMemUsed].type = "GAUGE" 
 ds[TmmMemUsed].minimal_heartbeat = 600 
 ds[TmmMemUsed].min = 0.0000000000e+00 
 ds[TmmMemUsed].max = NaN 
 ds[TmmMemUsed].last_ds = "UNKN" 
 ds[TmmMemUsed].value = 0.0000000000e+00 
 ds[TmmMemUsed].unknown_sec = 293 
 rra[0].cf = "AVERAGE" 
 rra[0].rows = 500 
 rra[0].pdp_per_row = 1 
 rra[0].xff = 5.0000000000e-01 
 rra[0].cdp_prep[0].value = NaN 
 rra[0].cdp_prep[0].unknown_datapoints = 0 
 rra[0].cdp_prep[1].value = NaN 
 rra[0].cdp_prep[1].unknown_datapoints = 0 
 rra[1].cf = "AVERAGE" 
 rra[1].rows = 600 
 rra[1].pdp_per_row = 1 
 rra[1].xff = 5.0000000000e-01 
 rra[1].cdp_prep[0].value = NaN 
 rra[1].cdp_prep[0].unknown_datapoints = 0 
 rra[1].cdp_prep[1].value = NaN 
 rra[1].cdp_prep[1].unknown_datapoints = 0 
 rra[2].cf = "AVERAGE" 
 rra[2].rows = 700 
 rra[2].pdp_per_row = 6 
 rra[2].xff = 5.0000000000e-01 
 rra[2].cdp_prep[0].value = NaN 
 rra[2].cdp_prep[0].unknown_datapoints = 0 
 rra[2].cdp_prep[1].value = NaN 
 rra[2].cdp_prep[1].unknown_datapoints = 0 
 rra[3].cf = "AVERAGE" 
 rra[3].rows = 775 
 rra[3].pdp_per_row = 24 
 rra[3].xff = 5.0000000000e-01 
 rra[3].cdp_prep[0].value = NaN 
 rra[3].cdp_prep[0].unknown_datapoints = 18 
 rra[3].cdp_prep[1].value = NaN 
 rra[3].cdp_prep[1].unknown_datapoints = 18 
 rra[4].cf = "AVERAGE" 
 rra[4].rows = 797 
 rra[4].pdp_per_row = 288 
 rra[4].xff = 5.0000000000e-01 
 rra[4].cdp_prep[0].value = NaN 
 rra[4].cdp_prep[0].unknown_datapoints = 162 
 rra[4].cdp_prep[1].value = NaN 
 rra[4].cdp_prep[1].unknown_datapoints = 162 
 rra[5].cf = "MAX" 
 rra[5].rows = 500 
 rra[5].pdp_per_row = 1 
 rra[5].xff = 5.0000000000e-01 
 rra[5].cdp_prep[0].value = NaN 
 rra[5].cdp_prep[0].unknown_datapoints = 0 
 rra[5].cdp_prep[1].value = NaN 
 rra[5].cdp_prep[1].unknown_datapoints = 0 
 rra[6].cf = "MAX" 
 rra[6].rows = 600 
 rra[6].pdp_per_row = 1 
 rra[6].xff = 5.0000000000e-01 
 rra[6].cdp_prep[0].value = NaN 
 rra[6].cdp_prep[0].unknown_datapoints = 0 
 rra[6].cdp_prep[1].value = NaN 
 rra[6].cdp_prep[1].unknown_datapoints = 0 
 rra[7].cf = "MAX" 
 rra[7].rows = 700 
 rra[7].pdp_per_row = 6 
 rra[7].xff = 5.0000000000e-01 
 rra[7].cdp_prep[0].value = NaN 
 rra[7].cdp_prep[0].unknown_datapoints = 0 
 rra[7].cdp_prep[1].value = NaN 
 rra[7].cdp_prep[1].unknown_datapoints = 0 
 rra[8].cf = "MAX" 
 rra[8].rows = 775 
 rra[8].pdp_per_row = 24 
 rra[8].xff = 5.0000000000e-01 
 rra[8].cdp_prep[0].value = NaN 
 rra[8].cdp_prep[0].unknown_datapoints = 18 
 rra[8].cdp_prep[1].value = NaN 
 rra[8].cdp_prep[1].unknown_datapoints = 18 
 rra[9].cf = "MAX" 
 rra[9].rows = 797 
 rra[9].pdp_per_row = 288 
 rra[9].xff = 5.0000000000e-01 
 rra[9].cdp_prep[0].value = NaN 
 rra[9].cdp_prep[0].unknown_datapoints = 162 
 rra[9].cdp_prep[1].value = NaN 
 rra[9].cdp_prep[1].unknown_datapoints = 162 
 

Finally, here's the script:

 
 [root@yblhpdefvm scripts] more f5-bigip-tmm-cpu.pl~ 
 !/usr/bin/perl 
  
  Usage: f5-bigip-tmm-cpu.pl   
  
  
 use Net::SNMP qw(:snmp); 
  
 my $host = $ARGV[0]; 
 my $snmp_comm = $ARGV[1]; 
 chomp $host; 
 chomp $snmp_comm; 
  
 my $tmmTotalCyl = '.1.3.6.1.4.1.3375.2.1.1.2.1.41.0'; 
 my $tmmIdleCyl = '.1.3.6.1.4.1.3375.2.1.1.2.1.42.0'; 
 my $tmmSleepCyl = '.1.3.6.1.4.1.3375.2.1.1.2.1.43.0'; 
  
 my ($session, $error) = Net::SNMP->session( 
         -hostname       => $host, 
         -community      => $snmp_comm, 
         -port           => 161, 
         -version        => 'snmpv2c', 
         -nonblocking    => 0 
         ); 
  
 if (!defined $session) 
         { 
         print "Received no SNMP response from $host\n"; 
         print STDERR "Error: $error\n"; 
         exit -1; 
         } 
  
  poll CPU oids 
 my $polled_oids = $session->get_request( 
                   -varbindlist => 
                   [$tmmTotalCyl, $tmmIdleCyl, $tmmSleepCyl] ); 
  
  calculate CPU Utilization 
 my $tmm_cpu = (( $polled_oids->{$tmmTotalCyl} - 
                 ($polled_oids->{$tmmIdleCyl} + $polled_oids->{$tmmSleepCyl})) 
                 / $polled_oids->{$tmmTotalCyl} * 100) ; 
  
  Round to integer 
 $tmm_cpu = int($tmm_cpu + .5); 
  
  print CPU Utilization to stdout for cli validation 
 print $tmm_cpu; 
 

As I said, I'm fairly new, and I can't seem to find the problem.

Any help will be deeply appreciated.

Cheers,

Laura

4 Replies

  • I too was having issues with the memory template. I re-configured it and now am getting results. I have some other updates as well, including LTM pool stats, GTM wideip/pool stats, WA hit counts, v.10 global host cpu stats (5sec/1min/5min), etc. I'll be expanding as I have time. You can download it from the wiki page:

     

     

    http://devcentral.f5.com/wiki/default.aspx/AdvDesignConfig/CactiF5HostTemplate.html Click here
  • Hi,

     

     

    Thanks for your answer. I've downloaded cacti_f5_host_template.zip but I can't find the TMM memory script:

     

     

    unzip cacti_f5_host_template.zip

     

    Archive: cacti_f5_host_template.zip

     

    inflating: f5_bigip_vs.xml

     

    inflating: f5_gtm_poolStat.xml

     

    inflating: f5_gtm_wip.xml

     

    inflating: cacti_host_template_f5_big-ip.xml

     

    inflating: f5_bigip_cpu.pl

     

    inflating: f5_bigip_ifStat.xml

     

    inflating: f5_bigip_pm.xml

     

    inflating: f5_bigip_pool.xml

     

     

    Is it one of those?
  • I removed it, the memory stat oids are entered in the data templates, so there is no need for the script.
  • Hi Jason,

     

    So where can I graph the memory usage? Have you had any issues with using SNMPv3? When I use SNMPv3, Cacti is no longer graphing the "F5 BIG-IP - Memory Utilization". Any thoughts?