How to calculate bandwidth total utilization per day, week, month and store data


I am using Icinga2 + web + director + dashing
I wish to monitor bandwidth utilization/usage per server and store for month or more. It would help if there is a graph where I can check the total usage for server.
Currently I have the interface/ethernet added via SNMP and get the realtime speed, just need to monitor traffic/data usage per day.

Does the check you’re using output this performance data? You might need a custom check otherwise. The two major time series/graphing solutions you usually see used with Icinga are Graphite and InfluxDB, both of which work very well.

1 Like

Icinga2 is a monitoring tool, it primary checks services against thresholds and creates alerts. Some checks can procude performance data as a “waste product” which can be stored in time series databases like the mentioned InfluxDB or ElasticSearch or RRD,…

For visualisation of the stored values you need additional frontend tools like Graphite, Grafana, etc. They query these metrics for a desired time range from DB and generate a graphs
which can be embedded in Icingaweb2 with the grafana module.

To get data usage per day or other statistics, you have to use aggregation functions from databases, frontends will help you to create the right queries.

1 Like

A possibility to monitor this is to check this data form the side of your network device. That means you check the uplinks to your servers. For this you can use check_interfaces.
You can also use check_nwc. But for us the check_interface with performance data is better performing than with check_nwc.

We configured our system in that way, the performancedata are shipped automaticly into InfluxDB and Grafana. And with the icingaweb2-modul grafana from @Carsten you can see the Graphs also in icingaweb2 and you don’t have to switch to Grafana.

With this solution of course you have to know where your servers are patched.