Grapher - Introduction
IXP Manager generates all of its graphs using it's own graphing system called Grapher. This was introduced in v4.
Grapher is a complete rewrite of all previous graphing code and includes:
- API access to graphs and graph statistics
- multiple backends (such as MRTG, sflow, Smokeping) with dynamic resolution of appropriate backend
- configuration generation where required
- consistent and flexible OOP design
To date, we have developed the following reference backend implementations:
dummy- a dummy grapher that just provides a placeholder graph for all possible graph types;
mrtg- MRTG graphing using either the log or rrd backend. Use cases for MRTG are L2 interface statistics for bits / packets / errors / discards / broadcasts per second. Aggregate graphs for customer LAGs, overall customer traffic, all traffic over a switch / infrastructure / the entire IXP are all supported.
sflow- while the MRTG backend looks at layer 2 statistics, sflow is used to provide layer 3 statistics such as per protocol (IPv4/6) graphs and peer to peer graphs.
smokeping- (available from v4.8.0) which creates latency graphs and this replaces the previous way we used to access Smokeping graphs.
In a typical production environment, you'd implement MRTG, Smokeping and sflow to provide the complete set of features.
There is only a handful of configuration options required and a typical and complete
$IXPROOT/.env would look like this:
GRAPHER_BACKENDS="mrtg|sflow|smokeping" GRAPHER_CACHE_ENABLED=true GRAPHER_BACKEND_MRTG_DBTYPE="rrd" GRAPHER_BACKEND_MRTG_WORKDIR="/srv/mrtg" GRAPHER_BACKEND_MRTG_LOGDIR="/srv/mrtg" GRAPHER_BACKEND_SFLOW_ENABLED=true GRAPHER_BACKEND_SFLOW_ROOT="http://sflow-server.example.com/grapher-sflow" GRAPHER_BACKEND_SMOKEPING_ENABLED=true GRAPHER_BACKEND_SMOKEPING_URL="http://smokeping-server.example.com/smokeping"
For those interested, the complete Grapher configuration file can be seen in [
$IXPROOT/config/grapher.php](https://github.com/inex/IXP-Manager/blob/master/config/grapher.php). Remember: put your own local changes in.env` rather than editing this file directly.
The global (non-backend specific) options are:
GRAPHER_BACKENDS- in a typical production environment this would be
"mrtg|sflow|smokeping"which means try the MRTG backend first, then sflow and then smokeping. We ship with this set as
"dummy"so you can see sample graphs working out of the box.
GRAPHER_CACHE_ENABLED- the IXP industry standard for graphing is to graph at 5min intervals. With the cache enabled, IXP Manager does not have to regenerate / reload / reprocess log / rrd / image files if we have cached them and they are less than 5mins old. This is enabled by default which is the recommended setting.
Backend specific configuration and set-up instructions can be found in their own sections below.