User:Jkenn24 3225/sandbox

Grafana is a free, Open Source Web Platform for data analytics and monitoring. It was created by Torkel Ödegaard in Stockholm, Sweden to aid the analysis of time series data. Grafana is built with Angular and contains plugins which act through Angular, however, the plugins themselves can be written in Typescript or Javascript.

Visualization
Grafana supports multiple data visualization options to allow for a variety of data interpretations. Some options include:
 * Scatterplot, Line and Bar Graphs
 * Pie Charts
 * Heat Maps
 * Tables
 * JSON data
 * Simple Text Fields
 * Histograms

Alerts
Users can create custom alerting for data fields that Grafana will monitor and send notifications for any specified set of rules. These alerts have built-in functionality to notify a variety of external sources such as Discord, Slack, Email addresses or any source that can be contacted with a basic HTTP request.

Unification
There are currently more than 30 plugins that allow Grafana to support customized queries to many leading data sources such as:
 * Graphite
 * InfluxDB
 * Prometheus
 * Elasticsearch
 * Amazon Web Services Cloudwatch
 * MySQL
 * PostgreSQL

Organizations and User Preferences
Users can be broken into customized groups to allow for specific viewing and editing permissions. Each user also has their own set of preferences for options including a dark/light mode for dashboards.

Underlying Libraries
Grafana makes use of additional libraries to implement some of its features.

Build Components
Building Grafana requires the Go programming language and Node JS LTS. Go is used to build and compile the Grafana source code and Node is used to run some Javascript tasks outside of the web browser.

Graphing
In order to provide graphical interpretations of data, Grafana uses an open source Javascript library called Flot. Like Grafana, Flot has an extensible plugin system to add additional graph types and features and these plugins can be added directly to Grafana's copy of Flot if you build from source.

Downloading and Hosting Grafana
There are 3 main ways to get Grafana; downloading stable release packages, building from source code, or using Grafana Labs' cloud hosting service. The choice can be made by deciding what how much control of Grafana is required.

Downloading Stable Release Packages
To simply use Grafana with no plans to modify the source code, the easiest and cheapest option is to download the latest stable version from the Grafana website as it requires no external tools to build or run and is free to host locally or run on a server. Plugins can still be added to release versions if developed or downloaded from the Grafana repository, however, the source code cannot be modified.

Building from Source Code
To be able to modify the source code and have full control of the Grafana backend, the platform source code is stored in a public GitHub meaning the repository can be downloaded at no cost.

Cloud Hosting
Grafana was built to support being run on a shared server and accessed by multiple users, however, it can also be run locally on a single system if only one user requires access. As an alternative to hosting Grafana on a server, Grafana Labs offers cloud hosting services to clients who are unable to host the platform themselves. These clients pay a monthly subscription fee to have their dashboards hosted by Grafana Labs.

Developing Grafana
There are two main types of development that can be done in Grafana; modifying Source code and adding plugins. The difference between the two is that the modification of source code can only be done by downloading and building the Grafana source code while plugins can be developed and added through official release packages as well as source code builds.

Source Code Development
In order to modify any of the default Grafana features, including the default platform plugins, the source code is required. The source code itself is free to download from the Grafana Github page. Any additional features added or bugs fixed can be merged back into the official repository using Git's fork and pull request features so that other users may obtain them as well.

Plugin Development
Grafana is built upon an extensible plugin system that allows users to create their own features for the platform. Plugins can also be shared with other users through Grafana's plugin repository for free. Plugins posted to the repository may be listed as free or premium, the latter requires payment for other users to download. As of November 2018, there are 50 data sources, 39 panels, 16 apps and 1339 dashboards available, though this number has been growing rapidly as Grafana increases in popularity.

Dashboards in Grafana contain multiple metrics queries displayed with one or more visual representation. The sources of these metrics and visual representations are provided through plugins. Plugins have 3 basic types: Grafana Dashboards consists of one or more complete apps.
 * Data sources: Allow retrieval of data from any database that can communicate through HTTP. The plugin is responsible for transforming the data into time series data.
 * Panels: Grafana’s “main building block” of dashboards that are most commonly used for displaying data.
 * Apps: Plugins containing data sources and panels bundled together as well as documentation and additional information

Grafana provides multiple plugins that can be used as starting points if you wish to develop plugins of a similar type. One such panel that Grafana supplies a simple graph panel that serves as an extendable graph display and can be modified or enhanced based on the needs of the implementation.

Partners
Grafana Labs boasts multiple partners who use their software for different use cases such as DevOps, Industrial Internet of Things (IIoT), and Advertising Technology.

Among these partners are:
 * Ebay
 * Digital Ocean
 * Stack Overflow
 * Staples Inc.
 * Sony PlayStation
 * Shell Canada
 * Uber