Graphing Options

Will any of the graphing solutions and modules automatically create graphs for all hosts and services?

I’m trying out the grafana infkuxdb solution with the module and I have to manually create each graph for each thing I want to graph and then add that graph to the module.

Would graphite and the module automatically create and add graphs?

Would PNP?

Hi,

first off, you’ll need plugins which provide performance data which can be parsed as metrics. Then obviously a host and service object which makes Icinga execute the command/plugin.

The metrics are written to all writers when the feature is enabled, meaning to say, InfluxDB receives and stores them automatically. Same goes for Graphite where the Carbon Cache daemon listens for metrics.

In order to visualize stored data, you need a frontend. For InfluxDB, this only is Grafana, for Graphite you can use Grafana or Graphite-Web.

Each of these frontends requires templates and dashboards to present something to the user. Especially when you want different colors, data point calculations (log instead of avg, etc.) you need to create such templates.

The Grafana module for Icinga Web 2 puts the glue between web knowing about the host/service/command and the Grafana frontend showing the graphs. In order to work properly, it needs the provide base-metrics and icinga2 dashboards - or your own custom made “templates”.

The Graphite module for Icinga Web 2 moves the template part into the module itself, and only queries the Graphite Web Render API to fetch the graphs then. The templates are organized in config ini files, and allow to calculate things, draw lines differently, filly slopes, and so on. Graphite Web just needs to be accessible.

Depending on where you want to maintain the templates/dashboards, choose either one of these. We as Icinga prefer Graphite which is why we’ve created the official module. Nonetheless, @anon66228339 does a magnificent job on his community module, so test-drive both I’d say. Our community uses both, so your chance of getting support is very high.

PNP is something I won’t recommend, as the project itself is not actively maintained anymore. The corresponding module on our GitHub repo is also considered stale.

That being said, you can also test-drive Graphite and InfluxDB/Grafana inside the Vagrant boxes “standalone” and “influxdb” where everything comes pre-installed. This allows you to add a new plugin, command, host, service object and see how the graphs are created and integrated automatically.

Cheers,
Michael

4 Likes

Thanks. I think I will give graphite a try.

That,s really a great question @Colin i have been trying out icinga2 and the director
every thing seems to be straight forward but when setting up to visualization am steal having a hardtime figure it out.
@dnsmichi i tried following the Graphite module installation but i don’t now for what reason i was not successful.
Is there any easy way out to figure visualization on icinga, your previous post was really a good insight.

1 Like

Hi,

I personally prefer Graphite over InfluxDB. That sources from some years of experience and how I can get things to work and also how stable tools are. InfluxDB changed and broke things quite often in the past before 1.0 came out, and its query language is something I have never fully understood.

One thing I also do see with InfluxDB is the focus on the enterprise product which renders the documentation and howtos a bit sparse. The problem is that Grafana cannot abstract everything away from it, so you’ll need to know certain bits about the query language and data storage.

On the other hand, Graphite isn’t easy to install and distribution packages are not really uptodate. In the past I used to install it by hand, nowadays I’ve built myself a Vagrant box (“standalone” inside the icinga-vagrant project) which uses Puppet and pip to install everything in one shot. That’s the thing I’m using for development when it comes to the Graphite feature in Icinga 2 and also the module for Icinga Web 2.

The thing I like the most about Graphite is its render API where you can influence the graph creation with many things. This also allowed us to move the template engine into the Icinga Web module, and only “orchestrate” specific lines, colors, etc.

In terms of a user experience, you’ll need to master the setup of Graphite, especially the web parts with wscgi and Python/Django are tricky. I did not have the time yet to write such howtos or blog articles, but such are good candidate for over here in the #howto category if someone else is willing to share his/her expertise.

Our official product focus is Graphite, and that’s the thing we also have knowledge on the team and support partners. Nevertheless, InfluxDB also is becoming popular and requires experts - not me at the time of writing.

TL;DR - choose either one or the other. Both options will receive answers on this platform, unless your question is really exotic or you’re not willing to do your homework :wink:

Cheers,
Michael

1 Like

i will also go with graphite and share my experience , thanks for the followup @dnsmichi