- Grafana is one of the most widely known platforms for metrics monitoring (and alerting);
- ntopng version 3.1 natively integrates with Grafana thanks to a datasource plugin which is freely available;
- This article explains how to install and configure the ntopng datasource plugin, and how to build a dashboard for the visualization of ntopng-generated metrics.
- A video tutorial is available as well:
Grafana is an open platform for analytics and visualization. An extremely-well engineered architecture makes it completely agnostic to the storage where data resides. This means that you can build beautiful dashboards by simultaneously pulling points from data sources such as ntopng, MySQL and Influxdb, just to name a few. Grafana interacts with tens of different data sources by means of datasource plugins. Those plugins provide a standardized way to deliver points to Grafana. ntopng implements one of those datasource plugins, to expose metrics of monitored interfaces and hosts, including throughput (bps and pps) and Layer-7 application protocols e.g., (Facebook, Youtube, etc).
ntopng exposes metrics for monitored interfaces as well as for monitored hosts. Each metric is identifiable with a unique, self-explanatory string. In general, interface metrics are prefixed with the string
interface_ while host metrics are prefixed with the string
host_. Similarly, a suffix indicates the measurement unit. Specifically,
_pps are used for bit and packet rates (i.e., the number of bits and packets per second), whereas
_total_packets are used for the total number of bytes and packets over time, respectively.
Currently, supported metrics carry traffic as well as Layer-7 application protocols metrics.
Traffic metrics exposed are:
host_<host ip>_interface_<interface name>_traffic_bps
Layer-7 application protocol metrics exposed are:
To be able to use the aforementioned metrics inside Grafana dashboards, the ntopng datasource plugin must be installed and configured as explained below.
Configuring the ntopng Datasource
- A running instance of Grafana version 4 or above;
- A running instance of ntopng version 3.1 or above.
Grafana and ntopng run on Linux and Windows, either on physical, virtualized or containerized environments. For Grafana installation instructions see Installing Grafana. ntopng can either be built from source, or installed as a package.
Installing the ntopng Datasource Plugin
Installing the ntopng Datasource plugin is as easy as
$ grafana-cli plugins install ntop-ntopng-datasource
Upon successful installation, you will receive a confimation message and you will have to restart Grafana
installing ntop-ntopng-datasource @ x.y.z from url: https://grafana.com/api/plugins/ntop-ntopng-datasource/versions/x.y.z/download Installed ntop-ntopng-datasource successfully Restart grafana after installing plugins .
After restarting Grafana, you can connect to its web User Interface (UI) and visit the Plugins page. ntopng will be listed under the datasources tab.
Configuring the ntopng Datasource
A new datasource with type
ntopng will be available once the ntopng datasource plugin is installed. Multiple ntopng datasources can be created to connect to several running ntopng instances. The list of configured datasources is available at the Grafana ‘Data Sources’ page. The following image shows two ntopng datasource configured with the aim of connecting to two different ntopng instances running on separate machines.
Adding a new ntopng datasource is a breeze. Just hit the ‘+ Add datasource’ button inside the Grafana ‘Data Sources’ page. This will open an ‘Edit Data Source’ page that can be used to specify ntopng connection parameters.
To configure the ntopng datasource select
ntopng as the datasource
Type and give it a mnemonic
Name that will help you identifying the datasource connection. The
Url in the HTTP settings must point to a running ntopng instance, to the endpoint
/lua/modules/grafana. For example, to connect to an ntopng running on host
devel on port
3001, you have to use url
Access method must be set to
Basic Auth if your ntopng instance has authentication enabled and specify a username-password pair in fields
Password. The pair must identify an ntopng user. Leave the
Basic Auth checkbock unticked if ntopng has no authentication (
Finally, hit the button
Save and Test to verify the datasource is working properly. A green message Success: Data source is working will appear to confirm the datasource is properly set up.
The following screenshot highlights the connection to an ntopng instance running on host
devel on port
Building a Dashboard
Once the datasource is properly set up, you can visualize ntopng timeseries in any of your Grafana dashboards. Dashboards are flexible ensembles of panels. Each panel is meant to visualize a single timeseries. Panels are added in any dashboard by clicking on the ‘Add Row’ button that will allow you to choose among the available panel types.
Currently, ntopng provides timeseries that can be used effectively to build ‘Chart’ and ‘Singlestat’ panels.
Adding an Interface Speed Panel
To add an interface speed panel, select ‘Graph’ in the available panel types. A graph panel with random data will be automatically added to the dashboard. Click on the ‘Panel Title’ and select ‘Edit’. A configuration page as the following will appear:
There is a ‘Test data: random walk’ timeseries with random data by default. Drop it by clicking on the bin. To add ntopng metrics select one of the ntopng datasources configured from the ‘Panel Data Source’ dropdown. In the following image, an ntopng datasource named
lab-monitor is selected:
Once the datasource is selected, you can click the ‘Add query’ button and start type a metric name. Autocompletion will automatically show all the available metrics matching the typed text. In the image above, interface eno1 bps is picked among all timeseries available. As soon as the metric is chosen, a chart will be populated. However, as shown below, the chart is sill pretty basic and some extra work is needed to configure the axis unit of measure as well as the title.
To change the chart title select tab ‘General’ and input the title:
More important, to set the unit of measure of the y-axis select tab ‘Axes’ and pick ‘
bits/sec‘ from the ‘Unit’ dropdown.
The final result is shown in the picture below
Adding an Interface Layer-7 Application Protocols Panel
To add an interface application protocols panel the above instructions apply. Just make sure select the interface metric ending in
_allprotocols_bps. In addition, as this metric carry more than one timeseries (one per application protocol), it is recommended to stack them by ticking the ‘Stack’ checkbox under the ‘Display’ tab.
The final result will appear similar to the following image
Adding the Interface Average Speed Panel
Using a ‘Singlestat’ panel it is possible to crunch a metric using an aggregation function. To visualize the average speed, you can add a ‘Singlestat’ panel, select the interface traffic timeseries, and configure
avg as ‘Stat’ in the ‘Options’ tab, as well as
bits/sec in the ‘Unit’.
A Full ntopng Grafana Dashboard
By putting together all the panels introduced above, you can build a complete dashboard as the one shown here
Remember that you can combine panels created with ntopng with panes created from other datasources (e.g., MySQL or InfluxDb). There is no limit on how you can combine panels to create dashboards!
ntopng features an handy datasource plugin that exposes monitored metrics to Grafana. Visualizing ntopng metrics in Grafana will allow you to show ntopng data inside the beautiful Grafana UI, and will give you enough flexibility to mix and match ntopng data with other data sources.