FC_RTGraph - how to graph information from SNMP devices

Submitted by admin on Sat, 08/21/2010 - 08:49

FC_RTGraph is a tool that allows you to collect and graph information from SNMP devices. It is an excellent tool for real-time monitoring that takes an XML formatted config file as input. Collected SNMP data can be graphed in highly customizable 3D graphs (Bar, Area, Line, 3D). FC_RTGraph supports SNMPv1, SNMPv2 and SNMPv3 and runs on all Windows versions from Windows XP onwards.

FC_RTGraph explained

Free version versus commercial version

The free version is limited to supporting the mib-2 OIDs (all OIDs under 1.3.6.1.2.1). The licensed/commercial version does not have any limitation!

Commandline

FC_RTGraph can be started from the commandline or through a shortcut on the desktop. The name and location of the config xml file can be specified using the /xml commandline switch as in:

C:\RTGraph\FC_RTGraph.exe /xml "C:\RTGraph\GraphConfig.xml"

Base config file for FC_RTGraph

The config xml file has the following format

<?xml version="1.0"?>
<fccomp>
   <comptype>rtgraph</comptype>
   <programtitle></programtitle>
   <savesettfile></savesettfile>
   <xaxis></xaxis>
   <yaxis></yaxis>
   <charttype></charttype>
   <barstyle></barstyle>
   <multibartype></multibartype>
   <top20only></top20only>
   <showvaluelabels></showvaluelabels>
   <automaticupdownscaling></automaticupdownscaling>
   <darkbackground></darkbackground>
   <chart3d></chart3d>
   <refreshinstances></refreshinstances>
   <legendalignment></legendalignment>
   <maxlegendlength></maxlegendlength>
   <left></left>
   <top></top>
   <width></width>
   <height></height>
   <preferredinstance></preferredinstance>
   <charttitle></charttitle>
   <contpanvisible></contpanvisible>
   <piboxvisible></piboxvisible>
   <pollinginterval></pollinginterval>
   <savessfile></savessfile>
   <host></host>
   <community></community>
   <snmpport></snmpport>
   <snmpversion></snmpversion>
   <shooter>
      <raw></raw>
      <linear></linear>
      <shootertargettable>
         <shootertargetentry>
            <oid></oid>
            <instance></instance>
            <delta></delta>
            <visible></visible>
            <formula></formula>
            <color></color>
         </shootertargetentry>
      </shootertargettable>
   </shooter>
   <oidtable>
      <oidentry>
         <oid></oid>
         <oiddescr></oiddescr>
         <format></format>
         <oidtype></oidtype>
      </oidentry>
   </oidtable>
   <vendorspecific>
      <vlogofile></vlogofile>
      <vappname></vappname>
      <vappversion></vappversion>
   </vendorspecific>
</fccomp>

The XML tags explained in detail! - The tag reference table.

The reference table for the xml tag descriptions used in the FineConnection components can be found here.

Examples

Attention! Attention! If you copy and paste the xml examples shown below don't forget to modify the "host dependent" fields in order to poll devices in your own network environment. Also, be aware that not all hosts support snmp nor have it enabled by default!

Example 1.

The following XML file is the configuration for a graph that collects (every sec) the incoming bytes (ifInOctets) on port 7 of a switch. The instance ".7" is hard-coded in the <instance></instance> tag. The series color (lime) is set through the <color></color> tag. The OID ifInOctets is of type "Counter32". We're interested in the increase of this value, hence the <delta>true</delta> tag. Finally, the Y-axis contains the global variabl "$PI". $PI is substituted at runtime by the value of the Polling Interval. If you change the Polling Interval at runtime (by using the PI control), the Y-axis changes accordingly.

<?xml version="1.0"?>
<fccomp>
   <comptype>rtgraph</comptype>
   <programtitle>Example 1</programtitle>
   <savesettfile></savesettfile>
   <xaxis>Samples</xaxis>
   <yaxis>Bytes/$PI sec</yaxis>
   <charttype>bar</charttype>
   <barstyle>gradient</barstyle>
   <multibartype>behind</multibartype>
   <top20only>true</top20only>
   <showvaluelabels>false</showvaluelabels>
   <automaticupdownscaling>false</automaticupdownscaling>
   <darkbackground>false</darkbackground>
   <chart3d>true</chart3d>
   <refreshinstances>false</refreshinstances>
   <legendalignment>right</legendalignment>
   <maxlegendlength>30</maxlegendlength>
   <left></left>
   <top></top>
   <width></width>
   <height></height>
   <preferredinstance></preferredinstance>
   <charttitle>Incoming bytes on port 7</charttitle>
   <contpanvisible>true</contpanvisible>
   <piboxvisible>true</piboxvisible>
   <pollinginterval>2</pollinginterval>
   <savessfile></savessfile>
   <host>192.168.3.10</host>
   <community>public</community>
   <snmpport>161</snmpport>
   <snmpversion>1</snmpversion>
   <shooter>
      <raw>true</raw>
      <linear>true</linear>
      <shootertargettable>
         <shootertargetentry>
            <oid>1.3.6.1.2.1.2.2.1.10</oid>
            <instance>.7</instance>
            <delta>true</delta>
            <visible>true</visible>
            <formula></formula>
            <color>#80FF00</color>
         </shootertargetentry>
      </shootertargettable>
   </shooter>
   <oidtable>
      <oidentry>
         <oid>1.3.6.1.2.1.2.2.1.10</oid>
         <oiddescr>ifInOctets</oiddescr>
         <format></format>
         <oidtype>Counter32</oidtype>
      </oidentry>
   </oidtable>
   <vendorspecific>
      <vlogofile></vlogofile>
      <vappname></vappname>
      <vappversion></vappversion>
   </vendorspecific>
</fccomp>

Output example 1.

Example 2.

The following XML file demonstrates the use of "formulas". The config file defines a graph that collects the ifInOctets and ifOutOctets of all ports of a switch. The collected values are shown in the graph in MBytes/s. Also, Incoming bytes use the positive y-axis, outgoing bytes use the negative y-axis. This way it's easy to see what ports have high traffic and in what direction.

<?xml version="1.0"?>
<fccomp>
   <comptype>rtgraph</comptype>
   <programtitle>Example 2</programtitle>
   <savesettfile></savesettfile>
   <xaxis>Samples</xaxis>
   <yaxis>Outgoing MBytes/sec--------------InComing MBytes/sec</yaxis>
   <charttype>bar</charttype>
   <barstyle>gradient</barstyle>
   <multibartype>behind</multibartype>
   <top20only>true</top20only>
   <showvaluelabels>false</showvaluelabels>
   <automaticupdownscaling>true</automaticupdownscaling>
   <darkbackground>false</darkbackground>
   <chart3d>true</chart3d>
   <refreshinstances>false</refreshinstances>
   <legendalignment>bottom</legendalignment>
   <maxlegendlength>30</maxlegendlength>
   <left></left>
   <top></top>
   <width></width>
   <height></height>
   <preferredinstance></preferredinstance>
   <charttitle>Incoming/Outgoing MBytes/sec</charttitle>
   <contpanvisible>true</contpanvisible>
   <piboxvisible>true</piboxvisible>
   <pollinginterval>2</pollinginterval>
   <savessfile></savessfile>
   <host>192.168.3.10</host>
   <community>public</community>
   <snmpport>161</snmpport>
   <snmpversion>1</snmpversion>
   <shooter>
      <raw>true</raw>
      <linear>true</linear>
      <shootertargettable>
         <shootertargetentry>
            <oid>1.3.6.1.2.1.2.2.1.10</oid>
            <instance>all instances</instance>
            <delta>true</delta>
            <visible>false</visible>
            <formula></formula>
            <color></color>
         </shootertargetentry>
         <shootertargetentry>
            <oid>1.3.6.1.2.1.2.2.1.16</oid>
            <instance>all instances</instance>
            <delta>true</delta>
            <visible>false</visible>
            <formula></formula>
            <color></color>
         </shootertargetentry>
         <shootertargetentry>
            <oid>Formula1</oid>
            <instance></instance>
            <visible>true</visible>
            <formula>InMBs,(A/$PI)/(1024*1024),A=1.3.6.1.2.1.2.2.1.10,</formula>
            <color></color>
         </shootertargetentry>
         <shootertargetentry>
            <oid>Formula2</oid>
            <instance></instance>
            <visible>true</visible>
            <formula>OutMBs,((B/$PI)/(1024*1024))*(0-1),B=1.3.6.1.2.1.2.2.1.16,</formula>
            <color></color>
         </shootertargetentry>
      </shootertargettable>
   </shooter>
   <oidtable>
      <oidentry>
         <oid>1.3.6.1.2.1.2.2.1.10</oid>
         <oiddescr>ifInOctets</oiddescr>
         <format></format>
         <oidtype>Counter32</oidtype>
      </oidentry>
      <oidentry>
         <oid>1.3.6.1.2.1.2.2.1.16</oid>
         <oiddescr>ifOutOctets</oiddescr>
         <format></format>
         <oidtype>Counter32</oidtype>
      </oidentry>
   </oidtable>
   <vendorspecific>
      <vlogofile></vlogofile>
      <vappname></vappname>
      <vappversion></vappversion>
   </vendorspecific>
</fccomp>

Output example 2.

Example 3.

The following XML file defines a graph that shows the utilization/s of port 7 (instance .7) of a switch. We need three values to compute the utilization of a port: ifInOctets, ifOutOctets and ifSpeed. ifSpeed is in bits/s! Notice that ifInOctets and ifOutOctets are Counter32 types (and hence we use <delta>true</delta>) and that ifSpeed is a Gauge32 (and hence we use <delta>false</delta>)!

<?xml version="1.0"?>
<fccomp>
   <comptype>rtgraph</comptype>
   <programtitle>Example 3</programtitle>
   <savesettfile></savesettfile>
   <xaxis>Samples</xaxis>
   <yaxis>Utilization</yaxis>
   <charttype>bar</charttype>
   <barstyle>gradient</barstyle>
   <multibartype>behind</multibartype>
   <top20only>true</top20only>
   <showvaluelabels>false</showvaluelabels>
   <automaticupdownscaling>true</automaticupdownscaling>
   <darkbackground>false</darkbackground>
   <chart3d>true</chart3d>
   <refreshinstances>false</refreshinstances>
   <legendalignment>right</legendalignment>
   <maxlegendlength>30</maxlegendlength>
   <left></left>
   <top></top>
   <width></width>
   <height></height>
   <preferredinstance></preferredinstance>
   <charttitle>%Utilization/s - port 7</charttitle>
   <contpanvisible>true</contpanvisible>
   <piboxvisible>true</piboxvisible>
   <pollinginterval>5</pollinginterval>
   <savessfile></savessfile>
   <host>192.168.3.10</host>
   <community>public</community>
   <snmpport>161</snmpport>
   <snmpversion>1</snmpversion>
   <shooter>
      <raw>true</raw>
      <linear>true</linear>
      <shootertargettable>
         <shootertargetentry>
            <oid>1.3.6.1.2.1.2.2.1.10</oid>
            <instance>.7</instance>
            <delta>true</delta>
            <visible>false</visible>
            <formula></formula>
            <color></color>
         </shootertargetentry>
         <shootertargetentry>
            <oid>1.3.6.1.2.1.2.2.1.16</oid>
            <instance>.7</instance>
            <delta>true</delta>
            <visible>false</visible>
            <formula></formula>
            <color></color>
         </shootertargetentry>
         <shootertargetentry>
            <oid>1.3.6.1.2.1.2.2.1.5</oid>
            <instance>.7</instance>
            <delta>false</delta>
            <visible>false</visible>
            <formula></formula>
            <color></color>
         </shootertargetentry>
         <shootertargetentry>
            <oid>Formula1</oid>
            <instance></instance>
            <visible>true</visible>
            <formula>Util,((((A+B)/$PI)*8)/C)*100,A=1.3.6.1.2.1.2.2.1.10.7,B=1.3.6.1.2.1.2.2.1.16.7,C=1.3.6.1.2.1.2.2.1.5.7,</formula>
            <color></color>
         </shootertargetentry>
      </shootertargettable>
   </shooter>
   <oidtable>
      <oidentry>
         <oid>1.3.6.1.2.1.2.2.1.10</oid>
         <oiddescr>ifInOctets</oiddescr>
         <format></format>
         <oidtype>Counter32</oidtype>
      </oidentry>
      <oidentry>
         <oid>1.3.6.1.2.1.2.2.1.16</oid>
         <oiddescr>ifOutOctets</oiddescr>
         <format></format>
         <oidtype>Counter32</oidtype>
      </oidentry>
      <oidentry>
         <oid>1.3.6.1.2.1.2.2.1.5</oid>
         <oiddescr>ifSpeed</oiddescr>
         <format></format>
         <oidtype>Gauge32</oidtype>
      </oidentry>
   </oidtable>
   <vendorspecific>
      <vlogofile></vlogofile>
      <vappname></vappname>
      <vappversion></vappversion>
   </vendorspecific>
</fccomp>

Output example 3.

Example 4.

The following XML file defines a graph that shows the ifInOctets of all ports of a linux host but displays a different legend. The legend is taken from the ifDescr OID. The value of ifDescr is collected through the "AL" Shooter target. AL stands for "Alternative legend". As can be seen in the xml file the format is "AL=1.3.6.1.2.1.2.2.1.2". You can only specify one AL per Shooter (of course) and the "Alternative" must be part of the same snmp table entry!

<?xml version="1.0"?>
<fccomp>
   <comptype>rtgraph</comptype>
   <programtitle>Example 4</programtitle>
   <savesettfile></savesettfile>
   <xaxis>This is the x-axis</xaxis>
   <yaxis>Incoming bytes</yaxis>
   <charttype>bar</charttype>
   <barstyle>gradient</barstyle>
   <multibartype>behind</multibartype>
   <top20only>true</top20only>
   <showvaluelabels>false</showvaluelabels>
   <automaticupdownscaling>false</automaticupdownscaling>
   <darkbackground>false</darkbackground>
   <chart3d>true</chart3d>
   <refreshinstances>false</refreshinstances>
   <legendalignment>left</legendalignment>
   <maxlegendlength>30</maxlegendlength>
   <left></left>
   <top></top>
   <width></width>
   <height></height>
   <preferredinstance></preferredinstance>
   <charttitle>Incoming bytes all ports</charttitle>
   <contpanvisible>true</contpanvisible>
   <piboxvisible>true</piboxvisible>
   <pollinginterval>10</pollinginterval>
   <savessfile></savessfile>
   <host>192.168.3.253</host>
   <community>public</community>
   <snmpport>161</snmpport>
   <snmpversion>1</snmpversion>
   <shooter>
      <raw>true</raw>
      <linear>true</linear>
      <shootertargettable>
         <shootertargetentry>
            <oid>1.3.6.1.2.1.2.2.1.10</oid>
            <instance>all instances</instance>
            <delta>true</delta>
            <visible>true</visible>
            <formula></formula>
            <color></color>
         </shootertargetentry>
         <shootertargetentry>
            <oid>AL=1.3.6.1.2.1.2.2.1.2</oid>
            <instance></instance>
            <visible>false</visible>
            <formula></formula>
         </shootertargetentry>
      </shootertargettable>
   </shooter>
   <oidtable>
      <oidentry>
         <oid>1.3.6.1.2.1.2.2.1.10</oid>
         <oiddescr>ifInOctets</oiddescr>
         <format></format>
         <oidtype>Counter32</oidtype>
      </oidentry>
      <oidentry>
         <oid>1.3.6.1.2.1.2.2.1.2</oid>
         <oiddescr>ifDescr</oiddescr>
         <format></format>
         <oidtype>OctetString</oidtype>
      </oidentry>
   </oidtable>
   <vendorspecific>
      <vlogofile></vlogofile>
      <vappname></vappname>
      <vappversion></vappversion>
   </vendorspecific>
</fccomp>

Output example 4.

© 2000-2012 FineConnection. Drupal theme by Kiwi Themes.