From charlesreid1

Line 43: Line 43:
==Phase 3b: Visualizing Graphite (Nope)==
==Phase 3b: Visualizing Graphite (Nope)==


A few years back we explored [[Cubism]] and [[Cube]] (difference?) as a way of visualizing time series from Graphite. It took some effort to get a basic dashboard, and Cubism is (ultimately) D3, the most frustratingly stupidly over-designed and over-complicated library ever, implemented in a totally irrational programming language.
A few years back we explored [[Cubism]] and Cube (difference?) as a way of visualizing time series from Graphite. It took some effort to get a basic dashboard, and Cubism is (ultimately) D3, the most frustratingly stupidly over-designed and over-complicated library ever, implemented in a totally irrational programming language.


So, no.
So, no.


We're going to focus on Mongo, which is more transparent and more flexible for all purposes.
We're going to focus on Mongo, which is more transparent and more flexible for all purposes.
If we needed some barebones visualization of Graphite data, this would be the way to go. But... nope.


==Conclusion: Netdata, Not Collectd==
==Conclusion: Netdata, Not Collectd==

Revision as of 21:57, 10 February 2018

Project Overview

The 2018 data project is an ongoing effort to figure out how to set up "painless" dashboards.

Phase 1: Netdata and Prometheus

First, we set up Netdata to dump to a Prometheus database.

  • Pros: Netdata has a fantastic dashboard with all kinds of stuff all ready to go. Prometheus was fairly easy to integrate with Netdata.
  • Cons: Netdata is custom-built for monitoring compute nodes, and not for general visualization. Prometheus was not a particularly outstanding tool, don't know much about how to use it.
  • Netdata
  • Prometheus

Netdata is a useful tool for monitoring an individual machine instance remotely. Need to get more involved with Prometheus and/or Grafana to monitor more than one machine.

Phase 2: MongoDB and MongoExpress

We then set up MongoDB and MongoExpress in Docker containers. MongoDB listens for incoming data on the VPN. MongoExpress is connected to MongoDB and exposes a web interface to interact with MongoDB. We used MongoDB to store edit history and page graph data from the charlesreid1 wiki.

Phase 2b: Collectd

We struggled a LOT with Collectd, mainly because we wanted to use the collectd plugin to write to MongoDB. Unfortunately, this was the only plugin that seemed impossible to install.

See Collectd page.

(This is all installation stupidity. I tried installing collectd with aptitude, no plugins. Then the core, no plugins. Then installing from source, and MongoDB plugin did not work. Struggling to get collectd to link to MongoDB. Needed custom config or something. Then I just gave up, and re-installed collectd core, and the library was there, but it was complaining it couldn't find it. In the end, I totally abandoned the attempt to get collectd to talk to mongodb. Could probably use a collectd docker and fix this whole issue.)

Phase 3: Graphite

Next, we deployed a Graphite container to hold time series from Collectd.

  • Pros: Containerized solution, like MongoDB. Collectd graphite plugin worked fine.
  • Cons: Graphite comes with Carbon (web interface), which is utter crap. It provides the absolute bare minimum, but it looks like it's trapped in a miserable 1998 computer prison.
  • Graphite
  • Link to Graphite docker files: https://charlesreid1.com:3000/docker/d-graphite

Phase 3b: Visualizing Graphite (Nope)

A few years back we explored Cubism and Cube (difference?) as a way of visualizing time series from Graphite. It took some effort to get a basic dashboard, and Cubism is (ultimately) D3, the most frustratingly stupidly over-designed and over-complicated library ever, implemented in a totally irrational programming language.

So, no.

We're going to focus on Mongo, which is more transparent and more flexible for all purposes.

Conclusion: Netdata, Not Collectd

All of the struggle to get collectd working with mongo was a waste of effort, and led to the graphite distraction in the first place. A broken build procedure led to a mediocre tool.

Ultimately, if we need to run collectd, interface with the collectd API via Python: https://collectd.org/wiki/index.php/Plugin:Python

Phase 4: Grafana and Mongo

Grafana container to create dashboards from it.

Flags