What is ifGraph?
ifGraph is a set of perl scripts that were created to fetch data from SNMP agents and feed a RRD file (Round Robin Database) so that graphics can be created later. The graphics and the databases are created using a tool called RRDTool. ifGraph has 3 main parts:
- ifgraph.pl : a perl script that is responsable for creating, organizing and mantaining the RRD databases. The program also queries the SNMP agents, analising the returned data before sending it to rrdtool.
- find-if.pl : this script was created to help the admin to set the ifgraph.conf file. You feed it with the correct arguments (try ./ifgraph -h) and it will show the network interfaces of the selected host. With this data you decide what interfaces you will monitor.
- makegraph.pl : makegraph.pl read the RRD databases and queries the SNMP agents searching for info that will help in the creation of the HTML files and in the PNG images.
Download
The latest version (STABLE) of ifGraph is the 0.4.10 You may download it on the following URLs:
http://ifgraph.lrv.ufsc.br/download/ifgraph-0.4.10.tar.gz
http://osdn.dl.sourceforge.net/sourceforge/ifgraph/ifgraph-0.4.10.tar.gz
You may download ifgraph 0.4.10rc3 here: http://ifgraph.lrv.ufsc.br/download/ifgraph-0.4.10rc3.tar.gz
The branch 0.3 of ifGraph is now DISCONTINUED. You may still download the 0.3.6 version on the following URLs:
http://ifgraph.lrv.ufsc.br/download/ifgraph-0.3.6.tar.gz
Older versions are here: http://ifgraph.sourceforge.net/old/
Requirements
- Perl >= 5.0 (not tested with older versions)
- RRDTool >= 1.0.31 (not tested with older versions)
Install
- Installation instructions for 0.4.10 version (STABLE)
License
This program is licensed under GPL (General Public License). To know more about GPL, you may check the site: http://www.opensource.org/licenses/gpl-license.html
Warranty
As stated by GPL, there is NO WARRANTY
BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
Read the Full GPL
Stable? Release Candidate? What is that?
The stable branch is supposed to be what branch name means: STABLE. Should not have fatal bugs neither behave in an unexpected way. The Release Candidate version is the development one. New features are added to the RC, tested in my demo page (http://ifgraph.lrv.ufsc.br/demo/) and when I believe it is OK I release it. Then people send me feedback about bugs, some beta testers report errors I dint find before and fix it. I do some more testing and release another RC. People test, send me feedback again and this usually goes on for 3 releases. This is when I do hard tests on the latest development version and if did not find anything wrong, I do a carefull update in the docs and release it as STABLE.
If you'd like to be usefull to ifgraph, dowload the latest Release Candidate version, use/test it and send me feedback by mail (do not bother if you do not get an answer from me. I try to reply every mail I receive about ifgraph, but sometimes time is short).
If you are using ifgraph in a production environment and just want to get things working, download the latest STABLE version. But feel free to send bug reports & suggestions.
TODO
Those are the urgent things I plan to do in next releases:
1) Reorganize the code: There are some redundancies that may slow
down a bit the program and are making it harder to understand.
2) Use threads: So you can query 4,5 agents at the same "time", making
the program faster and more reliable.
3) Comments: Add more comments and functions descriptions to make
easier to other people to read and rewrite the code.
4) SNMPv2 and v3 support.
5) Better doc and a better site. (Still working on it)
6) Support for dynamic interfaces (ppp, adsl) (Added in 0.4.7rc1 version)
7) Make it use less memory by reorganizing data structures (the targets global array)
8) Better docs
Where is the FAQ?
There isnt one. :)
KNOWN BUGS
0.4.9 version
- When an oid target has an OID that is very long, makegraph will report an error.
- The program does not check if the values of a COUNTER target is decreasing or resetting.
- ifGraph was not checking the hbeat of some targets.
0.4.8 version
- When ifgraph is used to fetch OIDs and some OID can not be fetched, results that all OID
s of the target are discarded and a NaN is plotted
- If the target is a MAC, IP or NAME and the snmp agent does not respond OK, the target will not be created with the makegraph.pl script.
- The avg in and the avg out were pointing to the same value.
- It was reported that ifgraph was not creating OID graphics correctly, but I was not able to reproduce this behavior. Did someone notice that?
0.4.7 version
- When ifgraph is used with a IMGFORMAT directive that is not setted to GIF, it causes a failure in printing the graphics.
- ifGraph 0.4.7 and earlier versions die when can't contact the agents, causing problems when there's an unreachable target in the middle of the config file.
Older versions
- The find-if.pl, when got a "0" as a response from the SNMP agents, was showing errors in the standard output.
- The are a lot of bugs in the 0.3.2 version. During the 0.3.2 development, the main site was closed by manifestants claiming 70% of salary raise. The network became very unstable and there are a lot of bad blocks in the server hard drive. When I had the chance, I could just get a very poor version of ifgraph, repleted with bugs. This version includes system calls to the snmpget tool, has problems in the avaliation of the data retrieved from SNMP agents and create some odd graphics.
- Version 0.3.1 has a lot of bugs, most of them shows up when there's no response from the SNMP agent. There where still problems in the reception of the snmp data, causing negative spikes in graphics.
Feedback - UNKNOWN BUGS
If you are having problems with ifgraph, send an email to sartori (at) lrv.ufsc.br with "bug ifgraph" as subject, explaining in the message body what's going wrong with the program. Send me as much relevant data as possible, so I can analise it and send some reply to you.
Feel free to send email to me with comments, new ideias, suggestions of any kind. I can't promise your suggestions will be incorporated in future versions of igraph, but some of them are really usefull.
If you believe that something is wrong in the docs, please tell me. English is not my native language so I believe that there are lots of errors in the documentation (and in the program comments also).
SNMP
SNMP stands for Simple Network Management Protocol and is a very common protocol used for controling and monitoring network devices and its functions. It is described by the IETF in the RFC 1157 and in some others RFCs.
ifGraph needs a SNMP daemon running in the device you want to monitor. If you plan to monitor an unix server, you may take a look at the Net SNMP implementation. Other devices, such as routers and switches, already have their SNMP daemons, but usually they are disabled. You must then enable it for ifgraph to work. For now, ifgraph only works with the version 1 of the SNMP. In future releases, v2c and v3 support will be added, granting a higher level of security when querying your devices.
mail to: Ricardo Sartori
|