Graphite or InfluxDB?

Some thoughts from my experience:

Graphite

- hard to install, not many packages
- scaling is needed in larger environments
- debugging with retentions is sometimes not so clear
- possible problems with special characters in metrics, needs write-application-escaping, e.g. `%CPU_time=0.1`
+ once running, stable and reliable. Many Puppet, Ansible, etc. modules for easier deployment.
+ simple input format for metrics with dots
+ no extra overhead with tags and metadata
+ carbon-cache-ng written in Golang is faster, many community proven tools around for scaling
+ official Icinga web module

InfluxDB

- impossible to wipe stale data from date X to date Y
- SQL like query language looks simple, but is hard to use in Grafana imho
- Distributed and horizontal scaling is not OSS. Paid enterprise closed source.
- Documentation is at the minimum level, you will Google a lot.
+ fast metric processing, Golang daemons
+ tags and measurements for additional metadata and metric reporting
+ fast development
+ Integration with other tools (Grafana, TICK-Stack)
2 Likes

I haven’t tried it yet (it’s on my todo list) but I think it should be possible to use https://m3db.io/ through it’s Graphite integration (http://m3db.github.io/m3/integrations/graphite/).

Not ab0sulte correct, see the docs (which are not as bad as everyone thinks).

Also some tips on how to delete data from no longer neded hosts/services you can use these examples

#Delete everything from a spedified host

DELETE WHERE hostname = 'icinga2wk01.blubber.de'

#Delete everything with hostname LIKE XY

DELETE WHERE hostname =~ /.blubber.de$/

#Delete from measurement (icinga2 service command name) with specified servicename and a specified hostname

DELETE FROM sharepoint WHERE hostname = 'admin01' AND service = 'SharePoint_Availability_STD'

# Delete everything with a given servicename

DELETE WHERE service = 'SSH-TEST'

#Delete everything where servicename LIKE xy

DELETE WHERE service =~ /^DEB_SWAP/

And the only thing that is “enterprise” is the cluster part of influxdb. Graphite is good if you know how to install and configure it. InfluxDB installation and updates are real easy compared to graphite (When will the promised go packes be released?).
But everyone choose his weapon he wants to use :slight_smile:

2 Likes

Can we go back to talking about non-controvserial subjects, like how much better Emacs is than Vim?

2 Likes

Graphite or InfluxDB actually is a controversial topic, and it doesn’t hurt to discuss things. I wasn’t aware that the docs are better now for instance, and I also do know that InfluxDB collected 100 Mio in funding doing even more things.

One thing everyone now does is to build a platform for everything, including monitoring, logs and events.

Grafana has started to develop Prometheus and created their own log engine named loki. InfluxDB added the possibility to store logs and work with that as well. Elastic Stack stores metrics in ES.

Graphite added the possibility to store tag strings, in its own separate database, adding more possibilities.

While everything in this regard is awesome, it also adds more complexity with daily operations, upgrades, dashboards, backups, etc. It may also be the case that performance suffers from any new feature added to the stack.

This is something I do understand from the Enterprise product point, but I don’t think that it will be good for the products themselves.

I’m watching this space closely (that’s why I’ve built the Vagrant boxes too).

Cheers,
Michael

1 Like