+
+A new timepicker with room for more quick ranges as well as new types of relative ranges, like `Today`,
+`The day so far` and `This day last week`. Also an improved time & calendar picker that now works
+correctly in UTC mode.
+
+### Elasticsearch
+
+
+
+
+Grafana 2.5 ships with a new CloudWatch datasource that will allow you to query and visualize CloudWatch
+metrics directly from Grafana.
+
+- Rich editor with auto completion for metric names, namespaces and dimensions
+- Templating queries for generic dashboards
+- Alias patterns for short readable series names
+
+### Prometheus
+
+
+
+Grafana 2.5 ships with a new Prometheus datasource that will allow you to query and visualize data
+stored in Prometheus.
+
+
+### Mix different data sources
+
+
+In previous releases you have been able to mix different data sources on the same dashboard. In v2.5 you
+will be able to mix then on the same graph! You can enable this by selecting the built in `-- Mixed --` data source.
+When selected this will allow you to specify data source on a per query basis. This will, for example, allow you
+to plot metrics from different Graphite servers on the same Graph or plot data from Elasticsearch alongside
+data from Prometheus. Mixing different data sources on the same graph works for any data source, even custom ones.
+
+### Panel Resize handles
+
+
+This release adds resize handles to the the bottom right corners of panels making is easy to resize both width and height.
+
+### User invites
+
+
+This version also brings some new features for user management.
+
+- Organization admins can now invite new users (via email or manually via invite link)
+- Users can signup using invite link and get automatically added to invited organization
+- User signup workflow can (if enabled) contain an email verification step.
+- Check out [#2353](https://github.com/grafana/grafana/issues/2353) for more info.
+
+### Miscellaneous improvements
+
+- InfluxDB query editor now supports math and AS expressions
+- InfluxDB query editor now supports custom group by interval
+- Panel drilldown link is easier to reach
+- LDAP improvements (can now search for group membership if your LDAP server does not support memberOf attribute)
+- More units for graph and singlestat panel (Length, Volume, Temperature, Pressure, Currency)
+- Admin page for all organizations (remove / edit)
+
+### Breaking changes
+There have been some changes to the data source plugin API. If you are using a custom plugin check that there is an update for it before you upgrade. Also
+the new time picker does not currently support custom quick ranges like the last one did. This will likely be added in a
+future release.
+
+### Changelog
+For a detailed list and link to github issues for everything included in the 2.5 release please
+view the [CHANGELOG.md](https://github.com/grafana/grafana/blob/master/CHANGELOG.md) file.
+
+- - -
+
+### Download Grafana 2.5 now
+
diff --git a/docs/sources/installation/configuration.md b/docs/sources/installation/configuration.md
index 31d029b1101..e68edcbca0c 100644
--- a/docs/sources/installation/configuration.md
+++ b/docs/sources/installation/configuration.md
@@ -266,7 +266,7 @@ automatically signed up.
### team_ids
Require an active team membership for at least one of the given teams on
-GitHub. If the authenticated user isn't a member of at least one the
+GitHub. If the authenticated user isn't a member of at least one of the
teams they will not be able to register or authenticate with your
Grafana instance. For example:
@@ -274,7 +274,7 @@ Grafana instance. For example:
enabled = true
client_id = YOUR_GITHUB_APP_CLIENT_ID
client_secret = YOUR_GITHUB_APP_CLIENT_SECRET
- scopes = user:email
+ scopes = user:email,read:org
team_ids = 150,300
auth_url = https://github.com/login/oauth/authorize
token_url = https://github.com/login/oauth/access_token
diff --git a/docs/sources/installation/debian.md b/docs/sources/installation/debian.md
index 048474af3eb..4a734ac4400 100644
--- a/docs/sources/installation/debian.md
+++ b/docs/sources/installation/debian.md
@@ -10,13 +10,13 @@ page_keywords: grafana, installation, debian, ubuntu, guide
Description | Download
------------ | -------------
-.deb for Debian-based Linux | [grafana_2.1.3_amd64.deb](https://grafanarel.s3.amazonaws.com/builds/grafana_2.1.3_amd64.deb)
+.deb for Debian-based Linux | [grafana_2.5.0_amd64.deb](https://grafanarel.s3.amazonaws.com/builds/grafana_2.5.0_amd64.deb)
## Install
- $ wget https://grafanarel.s3.amazonaws.com/builds/grafana_2.1.3_amd64.deb
+ $ wget https://grafanarel.s3.amazonaws.com/builds/grafana_2.5.0_amd64.deb
$ sudo apt-get install -y adduser libfontconfig
- $ sudo dpkg -i grafana_2.1.3_amd64.deb
+ $ sudo dpkg -i grafana_2.5.0_amd64.deb
## APT Repository
@@ -122,7 +122,7 @@ To configure Grafana add a configuration file named `custom.ini` to the
`conf` folder and override any of the settings defined in
`conf/defaults.ini`.
-Start Grafana by executing `./grafana web`. The `grafana` binary needs
+Start Grafana by executing `./grafana-server web`. The `grafana-server` binary needs
the working directory to be the root install directory (where the binary
and the `public` folder is located).
diff --git a/docs/sources/installation/docker.md b/docs/sources/installation/docker.md
index 53366bed44a..18dcf964450 100644
--- a/docs/sources/installation/docker.md
+++ b/docs/sources/installation/docker.md
@@ -9,7 +9,7 @@ page_keywords: grafana, installation, docker, container, guide
> **2.0.2 -> 2.1.0 Upgrade NOTICE!**
> The data and log paths were not correct in the previous image. The grafana database was placed by default in /usr/share/grafana/data instead of the correct path /var/lib/grafana. This means it was not in a dir that was marked as a volume. So if you remove the container it will remove the grafana database. So before updating make sure you copy the /usr/share/grafana/data path from inside the container to the host.
-## Install from offical docker image
+## Install from official docker image
Grafana has an official Docker container.
diff --git a/docs/sources/installation/ldap.md b/docs/sources/installation/ldap.md
index f0325a953fe..82309ec0f19 100644
--- a/docs/sources/installation/ldap.md
+++ b/docs/sources/installation/ldap.md
@@ -1,6 +1,6 @@
---
page_title: LDAP Integration
-page_description: LDAP Integrtaion guide for Grafana.
+page_description: LDAP Integration guide for Grafana.
page_keywords: grafana, ldap, configuration, documentation, integration
---
@@ -21,26 +21,38 @@ specific configuration file (default: `/etc/grafana/ldap.toml`).
verbose_logging = false
[[servers]]
-# LDAP server host
+# Ldap server host (specify multiple hosts space separated)
host = "127.0.0.1"
-# Usual port is 389, or, if TLS is supported, 636
+# Default port is 389 or 636 if use_ssl = true
port = 389
-# Set to true if LDAP server supports TLS
+# Set to true if ldap server supports TLS
use_ssl = false
-# set to true if you want to skip SSL cert validation
+# set to true if you want to skip ssl cert validation
ssl_skip_verify = false
+# set to the path to your root CA certificate or leave unset to use system defaults
+# root_ca_cert = /path/to/certificate.crt
# Search user bind dn
bind_dn = "cn=admin,dc=grafana,dc=org"
# Search user bind password
-bind_password = "grafana"
+bind_password = 'grafana'
-# Search filter, for example "(cn=%s)" or "(sAMAccountName=%s)"
+# User search filter, for example "(cn=%s)" or "(sAMAccountName=%s)" or "(uid=%s)"
search_filter = "(cn=%s)"
+
# An array of base dns to search through
search_base_dns = ["dc=grafana,dc=org"]
-# Map LDAP user attributes to Grafana user attributes
+# In POSIX LDAP schemas, without memberOf attribute a secondary query must be made for groups.
+# This is done by enabling group_search_filter below. You must also set member_of= "cn"
+# in [servers.attributes] below.
+
+## Group search filter, to retrieve the groups of which the user is a member (only set if memberOf attribute is not available)
+# group_search_filter = "(&(objectClass=posixGroup)(memberUid=%s))"
+## An array of the base DNs to search through for groups. Typically uses ou=groups
+# group_search_base_dns = ["ou=groups,dc=grafana,dc=org"]
+
+# Specify names of the ldap attributes your ldap uses
[servers.attributes]
name = "givenName"
surname = "sn"
@@ -48,11 +60,11 @@ username = "cn"
member_of = "memberOf"
email = "email"
-# Map LDAP groups to Grafana org roles
+# Map ldap groups to grafana org roles
[[servers.group_mappings]]
group_dn = "cn=admins,dc=grafana,dc=org"
org_role = "Admin"
-# The Grafana organization database id, optional, if left out, the default org (id 1) will be used
+# The Grafana organization database id, optional, if left out the default org (id 1) will be used
# org_id = 1
[[servers.group_mappings]]
@@ -60,9 +72,10 @@ group_dn = "cn=users,dc=grafana,dc=org"
org_role = "Editor"
[[servers.group_mappings]]
-# If you want to match all (or no LDAP groups) then you can use wildcard
+# If you want to match all (or no ldap groups) then you can use wildcard
group_dn = "*"
org_role = "Viewer"
+
```
## Bind & Bind Password
@@ -85,19 +98,33 @@ bind_dn = "cn=%s,o=users,dc=grafana,dc=org"
```
In this case you skip providing a `bind_password` and instead provide a `bind_dn` value with a `%s` somewhere. This will be replaced with the username entered in on the Grafana login page.
-The search filter and search bases settings are still needed to perform the LDAP search to retreive the other LDAP information (like LDAP groups and email).
+The search filter and search bases settings are still needed to perform the LDAP search to retrieve the other LDAP information (like LDAP groups and email).
+
+## POSIX schema (no memberOf attribute)
+If your ldap server does not support the memberOf attribute add these options:
+
+```toml
+## Group search filter, to retrieve the groups of which the user is a member (only set if memberOf attribute is not available)
+group_search_filter = "(&(objectClass=posixGroup)(memberUid=%s))"
+## An array of the base DNs to search through for groups. Typically uses ou=groups
+group_search_base_dns = ["ou=groups,dc=grafana,dc=org"]
+```
+
+Also change set `member_of = "cn"` in the `[servers.attributes]` section.
+
## LDAP to Grafana Org Role Sync
-## Group Mappings
-In `[[servers.group_mappings]]` you can map an LDAP group to a Grafana organization and role. These will be synced every time the user logs in, with LDAP being the authoratative source.
-So, if you change a user's role in the Grafana Org. Users page, this change will be reset the next time the user logs in. If you change the LDAP groups of a user, the change will take effect the next time the user logs in.
+### Mappings
+In `[[servers.group_mappings]]` you can map an LDAP group to a Grafana organization
+and role. These will be synced every time the user logs in, with LDAP being
+the authoritative source. So, if you change a user's role in the Grafana Org.
+Users page, this change will be reset the next time the user logs in. If you
+change the LDAP groups of a user, the change will take effect the next
+time the user logs in.
-### Priority between Multiple Mappings
+### Priority
The first group mapping that an LDAP user is matched to will be used for the sync. If you have LDAP users that fit multiple mappings, the topmost mapping in the TOML config will be used.
-## Ldap to Grafana Org Role Sync
-In the `[[servers.group_mappings]]` you can map a LDAP group to a grafana organization and role. These will be synced every time the user logs in. So
-if you change a users role in the Grafana Org. Users page, this change will be reset the next time the user logs in. Similarly if you
-can LDAP groups for a user in LDAP the change will take effect the next time the user logs in to Grafana.
+
diff --git a/docs/sources/installation/performance.md b/docs/sources/installation/performance.md
index 51ab747bcd2..f09686687ca 100644
--- a/docs/sources/installation/performance.md
+++ b/docs/sources/installation/performance.md
@@ -8,7 +8,7 @@ page_keywords: grafana, performance, documentation
## Graphite
-Graphite 0.9.13 adds a much needed feature to the JSON rendering API
+Graphite 0.9.14 adds a much needed feature to the JSON rendering API
that is very important for Grafana. If you are experiencing slow load &
rendering times for large time ranges then it is most likely caused by
running Graphite 0.9.12 or lower.
@@ -17,6 +17,6 @@ The latest version of Graphite adds a `maxDataPoints` parameter to the
JSON render API. Without this feature Graphite can return hundreds of
thousands of data points per graph, which can hang your browser. Be sure
to upgrade to
-[0.9.13](http://graphite.readthedocs.org/en/latest/releases/0_9_13.html).
+[0.9.14](http://graphite.readthedocs.org/en/latest/releases/0_9_14.html).
diff --git a/docs/sources/installation/rpm.md b/docs/sources/installation/rpm.md
index c112c4c9fea..464faa09b9d 100644
--- a/docs/sources/installation/rpm.md
+++ b/docs/sources/installation/rpm.md
@@ -1,6 +1,6 @@
---
page_title: Installing on RPM-based Linux
-page_description: Grafana Installation guide for Centos, Fedora, Redhat.
+page_description: Grafana Installation guide for Centos, Fedora, OpenSuse, Redhat.
page_keywords: grafana, installation, centos, fedora, opensuse, redhat, guide
---
@@ -10,18 +10,24 @@ page_keywords: grafana, installation, centos, fedora, opensuse, redhat, guide
Description | Download
------------ | -------------
-.RPM for Fedora / RHEL / CentOS Linux | [grafana-2.1.3-1.x86_64.rpm](https://grafanarel.s3.amazonaws.com/builds/grafana-2.1.3-1.x86_64.rpm)
+.RPM for CentOS / Fedora / OpenSuse / Redhat Linux | [grafana-2.5.0-1.x86_64.rpm](https://grafanarel.s3.amazonaws.com/builds/grafana-2.5.0-1.x86_64.rpm)
## Install from package file
You can install Grafana using Yum directly.
- $ sudo yum install https://grafanarel.s3.amazonaws.com/builds/grafana-2.1.3-1.x86_64.rpm
+ $ sudo yum install https://grafanarel.s3.amazonaws.com/builds/grafana-2.5.0-1.x86_64.rpm
Or install manually using `rpm`.
+#### On CentOS / Fedora / Redhat:
+
$ sudo yum install initscripts fontconfig
- $ sudo rpm -Uvh grafana-2.1.3-1.x86_64.rpm
+ $ sudo rpm -Uvh grafana-2.5.0-1.x86_64.rpm
+
+#### On OpenSuse:
+
+ $ sudo rpm -i --nodeps grafana-2.5.0-1.x86_64.rpm
## Install via YUM Repository
diff --git a/docs/sources/installation/windows.md b/docs/sources/installation/windows.md
index 1ef98ae4896..1bc2b5a2b92 100644
--- a/docs/sources/installation/windows.md
+++ b/docs/sources/installation/windows.md
@@ -10,7 +10,7 @@ page_keywords: grafana, installation, windows guide
Description | Download
------------ | -------------
-Zip package for Windows | [grafana.2.1.3.windows-x64.zip](https://grafanarel.s3.amazonaws.com/winbuilds/dist/grafana-2.1.3.windows-x64.zip)
+Zip package for Windows | [grafana.2.5.0.windows-x64.zip](https://grafanarel.s3.amazonaws.com/winbuilds/dist/grafana-2.5.0.windows-x64.zip)
## Configure
diff --git a/docs/sources/project/building_from_source.md b/docs/sources/project/building_from_source.md
index 45ab26249c8..71e94b088fb 100644
--- a/docs/sources/project/building_from_source.md
+++ b/docs/sources/project/building_from_source.md
@@ -25,7 +25,7 @@ go get github.com/grafana/grafana
```
cd $GOPATH/src/github.com/grafana/grafana
go run build.go setup # (only needed once to install godep)
-$GOPATH/bin/godep restore # (will pull down all golang lib dependecies in your current GOPATH)
+$GOPATH/bin/godep restore # (will pull down all golang lib dependencies in your current GOPATH)
go run build.go build # (or 'go build .')
```
diff --git a/docs/sources/reference/admin.md b/docs/sources/reference/admin.md
index 854147b4240..c5d5073020d 100644
--- a/docs/sources/reference/admin.md
+++ b/docs/sources/reference/admin.md
@@ -24,7 +24,7 @@ modify Organization details and options.
As a Grafana Administrator, you have complete access to any Organization or User in that instance of Grafana.
-When performing actions as a Grafana admin, the sidebar will change it's apperance as below to indicate you are performing global server administration.
+When performing actions as a Grafana admin, the sidebar will change it's appearance as below to indicate you are performing global server administration.
From the Grafana Server Admin page, you can access the System Info page which summarizes all of the backend configuration settings of the Grafana server.
diff --git a/docs/sources/reference/dashboard.md b/docs/sources/reference/dashboard.md
new file mode 100644
index 00000000000..93adf5cd789
--- /dev/null
+++ b/docs/sources/reference/dashboard.md
@@ -0,0 +1,422 @@
+----
+page_title: Dashboard JSON
+page_description: Dashboard JSON Reference
+page_keywords: grafana, dashboard, json, documentation
+---
+
+# Dashboard JSON
+
+## Overview
+
+A dashboard in Grafana is represented by a JSON object, which stores metadata of its dashboard. Dashboard metadata includes dashboard properties, metadata from rows, panels, template variables, panel queries, etc.
+
+To view the JSON of a dashboard, follow the steps mentioned below:
+
+ 1. Go to a dashboard
+ 2. Click on `Manage dashboard` menu on the top navigation bar
+ 3. Select `View JSON` from the dropdown menu
+
+## JSON fields
+
+When a user creates a new dashboard, a new dashboard JSON object is initialized with the following fields:
+
+> Note: In the following JSON, id is shown as null which is the default value assigned to it until a dashboard is saved. Once a dashboard is saved, an integer value is assigned to the `id` field.
+
+```
+{
+ "id": null,
+ "title": "New dashboard",
+ "originalTitle": "New dashboard",
+ "tags": [],
+ "style": "dark",
+ "timezone": "browser",
+ "editable": true,
+ "hideControls": false,
+ "sharedCrosshair": false,
+ "rows": [],
+ "time": {
+ "from": "now-6h",
+ "to": "now"
+ },
+ "timepicker": {
+ "time_options": [],
+ "refresh_intervals": []
+ },
+ "templating": {
+ "list": []
+ },
+ "annotations": {
+ "list": []
+ },
+ "schemaVersion": 7,
+ "version": 0,
+ "links": []
+}
+```
+Each field in the dashboard JSON is explained below with its usage:
+
+| Name | Usage |
+| ---- | ----- |
+| **id** | unique dashboard id, an integer |
+| **title** | current title of dashboard |
+| **originalTitle** | title of dashboard when saved for the first time |
+| **tags** | tags associated with dashboard, an array of strings |
+| **style** | theme of dashboard, i.e. `dark` or `light` |
+| **timezone** | timezone of dashboard, i.e. `utc` or `browser` |
+| **editable** | whether a dashboard is editable or not |
+| **hideControls** | whether row controls on the left in green are hidden or not |
+| **sharedCrosshair** | TODO |
+| **rows** | row metadata, see [rows section](/docs/sources/reference/dashboard.md/#rows) for details |
+| **time** | time range for dashboard, i.e. last 6 hours, last 7 days, etc |
+| **timepicker** | timepicker metadata, see [timepicker section](/docs/sources/reference/dashboard.md/#timepicker) for details |
+| **templating** | templating metadata, see [templating section](/docs/sources/reference/dashboard.md/#templating) for details |
+| **annotations** | annotations metadata, see [annotations section](/docs/sources/reference/dashboard.md/#annotations) for details |
+| **schemaVersion** | TODO |
+| **version** | TODO |
+| **links** | TODO |
+
+### rows
+
+`rows` field consists of an array of JSON object representing each row in a dashboard, such as shown below:
+
+```
+ "rows": [
+ {
+ "collapse": false,
+ "editable": true,
+ "height": "200px",
+ "panels": [],
+ "title": "New row"
+ },
+ {
+ "collapse": true,
+ "editable": true,
+ "height": "300px",
+ "panels": [],
+ "title": "New row"
+ }
+ ]
+```
+
+Usage of the fields is explained below:
+
+| Name | Usage |
+| ---- | ----- |
+| **collapse** | whether row is collapsed or not |
+| **editable** | whether a row is editable or not |
+| **height** | height of the row in pixels |
+| **panels** | panels metadata, see [panels section](/docs/sources/reference/dashboard.md/#panels) for details |
+| **title** | title of row |
+
+#### panels
+
+Panels are the building blocks a dashboard. It consists of datasource queries, type of graphs, aliases, etc. Panel JSON consists of an array of JSON objects, each representing a different panel in a row. Most of the fields are common for all panels but some fields depends on the panel type. Following is an example of panel JSON representing a `graph` panel type:
+
+```
+"panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "datasource": null,
+ "editable": true,
+ "error": false,
+ "fill": 0,
+ "grid": {
+ "leftLogBase": 1,
+ "leftMax": null,
+ "leftMin": null,
+ "rightLogBase": 1,
+ "rightMax": null,
+ "rightMin": null,
+ "threshold1": null,
+ "threshold1Color": "rgba(216, 200, 27, 0.27)",
+ "threshold2": null,
+ "threshold2Color": "rgba(234, 112, 112, 0.22)"
+ },
+ "id": 1,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "connected",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "span": 4,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "aggregator": "max",
+ "alias": "$tag_instance_id",
+ "currentTagKey": "",
+ "currentTagValue": "",
+ "downsampleAggregator": "avg",
+ "downsampleInterval": "",
+ "errors": {},
+ "metric": "memory.percent-used",
+ "refId": "A",
+ "shouldComputeRate": false,
+ "tags": {
+ "app": "$app",
+ "env": "stage",
+ "instance_id": "*"
+ }
+ }
+ ],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Memory Utilization",
+ "tooltip": {
+ "shared": true,
+ "value_type": "cumulative"
+ },
+ "type": "graph",
+ "x-axis": true,
+ "y-axis": true,
+ "y_formats": [
+ "percent",
+ "short"
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "datasource": null,
+ "editable": true,
+ "error": false,
+ "fill": 0,
+ "grid": {
+ "leftLogBase": 1,
+ "leftMax": null,
+ "leftMin": null,
+ "rightLogBase": 1,
+ "rightMax": null,
+ "rightMin": null,
+ "threshold1": null,
+ "threshold1Color": "rgba(216, 200, 27, 0.27)",
+ "threshold2": null,
+ "threshold2Color": "rgba(234, 112, 112, 0.22)"
+ },
+ "id": 2,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "connected",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "span": 4,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "aggregator": "avg",
+ "alias": "$tag_instance_id",
+ "currentTagKey": "",
+ "currentTagValue": "",
+ "downsampleAggregator": "avg",
+ "downsampleInterval": "",
+ "errors": {},
+ "metric": "memory.percent-cached",
+ "refId": "A",
+ "shouldComputeRate": false,
+ "tags": {
+ "app": "$app",
+ "env": "prod",
+ "instance_id": "*"
+ }
+ }
+ ],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Memory Cached",
+ "tooltip": {
+ "shared": true,
+ "value_type": "cumulative"
+ },
+ "type": "graph",
+ "x-axis": true,
+ "y-axis": true,
+ "y_formats": [
+ "short",
+ "short"
+ ]
+ },
+```
+
+Usage of each field is explained below:
+
+| Name | Usage |
+| ---- | ----- |
+| TODO | TODO |
+
+### timepicker
+
+Description: TODO
+
+```
+"timepicker": {
+ "collapse": false,
+ "enable": true,
+ "notice": false,
+ "now": true,
+ "refresh_intervals": [
+ "5s",
+ "10s",
+ "30s",
+ "1m",
+ "5m",
+ "15m",
+ "30m",
+ "1h",
+ "2h",
+ "1d"
+ ],
+ "status": "Stable",
+ "time_options": [
+ "5m",
+ "15m",
+ "1h",
+ "3h",
+ "6h",
+ "12h",
+ "24h",
+ "2d",
+ "3d",
+ "4d",
+ "7d",
+ "30d"
+ ],
+ "type": "timepicker"
+ }
+```
+
+Usage of the fields is explained below:
+
+| Name | Usage |
+| ---- | ----- |
+| **collapse** | whether timepicker is collapsed or not |
+| **enable** | whether timepicker is enabled or not |
+| **notice** | TODO |
+| **now** | TODO |
+| **refresh_intervals** | TODO |
+| **status** | TODO |
+| **time_options** | TODO |
+| **type** | TODO |
+
+### templating
+
+`templating` fields contains array of template variables with their saved values along with some other metadata, for example:
+
+```
+ "templating": {
+ "enable": true,
+ "list": [
+ {
+ "allFormat": "wildcard",
+ "current": {
+ "tags": [],
+ "text": "prod",
+ "value": "prod"
+ },
+ "datasource": null,
+ "includeAll": true,
+ "name": "env",
+ "options": [
+ {
+ "selected": false,
+ "text": "All",
+ "value": "*"
+ },
+ {
+ "selected": false,
+ "text": "stage",
+ "value": "stage"
+ },
+ {
+ "selected": false,
+ "text": "test",
+ "value": "test"
+ }
+ ],
+ "query": "tag_values(cpu.utilization.average,env)",
+ "refresh": false,
+ "refresh": false,
+ "type": "query"
+ },
+ {
+ "allFormat": "wildcard",
+ "current": {
+ "text": "apache",
+ "value": "apache"
+ },
+ "datasource": null,
+ "includeAll": false,
+ "multi": false,
+ "multiFormat": "glob",
+ "name": "app",
+ "options": [
+ {
+ "selected": true,
+ "text": "tomcat",
+ "value": "tomcat"
+ },
+ {
+ "selected": false,
+ "text": "cassandra",
+ "value": "cassandra"
+ }
+ ],
+ "query": "tag_values(cpu.utilization.average,app)",
+ "refresh": false,
+ "regex": "",
+ "type": "query"
+ }
+ ]
+ }
+```
+
+Usage of the above mentioned fields in the templating section is explained below:
+
+| Name | Usage |
+| ---- | ----- |
+| **enable** | whether templating is enabled or not |
+| **list** | an array of objects representing, each representing one template variable |
+| **allFormat** | format to use while fetching all values from datasource, eg: `wildcard`, `glob`, `regex`, `pipe`, etc. |
+| **current** | shows current selected variable text/value on the dashboard |
+| **datasource** | shows datasource for the variables |
+| **includeAll** | whether all value option is available or not |
+| **multi** | whether multiple values can be selected or not from variable value list |
+| **multiFormat** | format to use while fetching timeseries from datasource |
+| **name** | name of variable |
+| **options** | array of variable text/value pairs available for selection on dashboard |
+| **query** | datasource query used to fetch values for a variable |
+| **refresh** | TODO |
+| **regex** | TODO |
+| **type** | type of variable, i.e. `custom`, `query` or `interval` |
+
+### annotations
+
+TODO
diff --git a/docs/sources/reference/dashlist.md b/docs/sources/reference/dashlist.md
index 1f0794dabfc..ea098541da2 100644
--- a/docs/sources/reference/dashlist.md
+++ b/docs/sources/reference/dashlist.md
@@ -8,7 +8,7 @@ page_keywords: grafana, dashlist, panel, documentation
## Overview
-The dashboard list panel allows you to display dynamic links to other dashboards. The list can be configured to use starred dashbaords, a search query and/or dashboard tags.
+The dashboard list panel allows you to display dynamic links to other dashboards. The list can be configured to use starred dashboards, a search query and/or dashboard tags.
diff --git a/docs/sources/reference/graph.md b/docs/sources/reference/graph.md
index 9de23332a99..9c2ab63fbaa 100644
--- a/docs/sources/reference/graph.md
+++ b/docs/sources/reference/graph.md
@@ -30,7 +30,7 @@ The drilldown section allows adding dynamic links to the panel that can link to
or URLs
Each link has a title, a type and params. A link can be either a ``dashboard`` or ``absolute`` links.
-If it is a dashboard links, the `dashboard` value must be the name of a dashbaord. If it's an
+If it is a dashboard links, the `dashboard` value must be the name of a dashboard. If it's an
`absolute` link, the URL is the URL to link.
``params`` allows adding additional URL params to the links. The format is the ``name=value`` with
@@ -127,7 +127,7 @@ If you have stack enabled you can select what the mouse hover feature should sho
### Rendering
- ``Flot`` - Render the graphs in the browser using Flot (default)
-- ``Graphite PNG`` - Render the graph on the server using graphites render API.
+- ``Graphite PNG`` - Render the graph on the server using graphite's render API.
### Tooltip
diff --git a/docs/sources/reference/http_api.md b/docs/sources/reference/http_api.md
index 609f12269ca..15e7a06f3b8 100644
--- a/docs/sources/reference/http_api.md
+++ b/docs/sources/reference/http_api.md
@@ -36,9 +36,9 @@ You use the token in all requests in the `Authorization` header, like this:
**Example**:
- GET http://your.grafana.com/api/dashboards/db/mydash HTTP/1.1
- Accept: application/json
- Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
+ GET http://your.grafana.com/api/dashboards/db/mydash HTTP/1.1
+ Accept: application/json
+ Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
The `Authorization` header value should be `Bearer
1. `Dashboard Picker`: The Dashboard Picker is your primary navigation tool to move between dashboards. It is present on all dashboards, and open the Dashboard Search. The dashboard picker also doubles as the title of the current dashboard.
-2. `Search Bar`: The search bar allows you to enter any string and search both database and file based dashbaords in real-time.
+2. `Search Bar`: The search bar allows you to enter any string and search both database and file based dashboards in real-time.
3. `Starred`: The starred link allows you to filter the list to display only starred dashboards.
4. `Tags`: The tags filter allows you to filter the list by dashboard tags.
@@ -25,14 +25,14 @@ To search and load dashboards click the open folder icon in the header or use th
Dashboard search is:
- Real-time
-- *Not* case senstitive
+- *Not* case sensitive
- Functional across stored *and* file based dashboards.
## Filter by Tag(s)
-Tags are a great way to organize your dashboards, especially as the number of dashbaords grow. Tags can be added and managed in the dashboard `Settings`.
+Tags are a great way to organize your dashboards, especially as the number of dashboards grow. Tags can be added and managed in the dashboard `Settings`.
-To filter the dashboard list by tag, click on any tag appearing in the right column. The list may be further filtered by cliking on additional tags:
+To filter the dashboard list by tag, click on any tag appearing in the right column. The list may be further filtered by clicking on additional tags:
@@ -40,7 +40,7 @@ Alternately, to see a list of all available tags, click the tags link in the sea
-When using only a keybaord: `tab` to focus on the *tags* link, `▼` down arrow key to find a tag and select with the `Enter` key.
+When using only a keyboard: `tab` to focus on the *tags* link, `▼` down arrow key to find a tag and select with the `Enter` key.
**Note**: When multiple tags are selected, Grafana will show dashboards that include **all**.
@@ -51,4 +51,4 @@ Starring is a great way to organize and find commonly used dashboards. To show o
-When using only a keybaord: `tab` to focus on the *stars* link, `▼` down arrow key to find a tag and select with the `Enter` key.
\ No newline at end of file
+When using only a keyboard: `tab` to focus on the *stars* link, `▼` down arrow key to find a tag and select with the `Enter` key.
\ No newline at end of file
diff --git a/docs/sources/reference/sharing.md b/docs/sources/reference/sharing.md
index e3a6ce3f2f5..c20f4e5f67c 100644
--- a/docs/sources/reference/sharing.md
+++ b/docs/sources/reference/sharing.md
@@ -5,7 +5,7 @@ page_keywords: grafana, sharing, guide, documentation
---
# Sharing features
-Grafana provides a number of ways to share a dashboard or a specfic panel to other users within your
+Grafana provides a number of ways to share a dashboard or a specific panel to other users within your
organization. It also provides ways to publish interactive snapshots that can be accessed by external partners.
## Share dashboard
diff --git a/docs/sources/reference/singlestat.md b/docs/sources/reference/singlestat.md
index 7a7c38da289..91724e89882 100644
--- a/docs/sources/reference/singlestat.md
+++ b/docs/sources/reference/singlestat.md
@@ -17,11 +17,11 @@ The singlestat panel has a normal query editor to allow you define your exact me
1. `Big Value`: Big Value refers to how we display the main stat for the Singlestat Panel. This is always a single value that is displayed in the Panel in between two strings, `Prefix` and `Suffix`. The single number is calculated by choosing a function (min,max,average,current,total) of your metric query. This functions reduces your query into a single numeric value.
-2. `Font Size`: You can use this section
-3. `Values`: The Value fields let you set the function (min, max, average, current, total) that your entire query is reduced into a single value with. You can also set the font size of theand font-size (as a %) of the metric query that the Panel is configured with. This reduces the entire query into a single summary value that is displayed.
+2. `Font Size`: You can use this section to select the font size of the different texts in the Singlestat Panel, i.e. prefix, value and postfix.
+3. `Values`: The Value fields let you set the function (min, max, average, current, total) that your entire query is reduced into a single value with. You can also set the font size of the Value field and font-size (as a %) of the metric query that the Panel is configured with. This reduces the entire query into a single summary value that is displayed.
4. `Postfixes`: The Postfix fields let you define a custom label and font-size (as a %) to appear *after* the value
5. `Units`: Units are appended to the the Singlestat within the panel, and will respect the color and threshold settings for the value.
-6. `Decimals`: The Decimal field allows you to override the automatic decimal precision, and set it explicitely.
+6. `Decimals`: The Decimal field allows you to override the automatic decimal precision, and set it explicitly.
### Coloring
@@ -29,9 +29,9 @@ The coloring options of the Singlestat Panel config allow you to dynamically cha
-1. `Background`: This checkbox applies the configured thresholds and colors to the entirity of the Singlestat Panel background.
+1. `Background`: This checkbox applies the configured thresholds and colors to the entirety of the Singlestat Panel background.
2. `Value`: This checkbox applies the configured thresholds and colors to the summary stat.
-3. `Thresholds`: Change the background and value colors dyanmically within the panel, depending on the Singlestat value. The threshold field accepts **3 comma-separated** values, corresponding to the three colors directly to the right.
+3. `Thresholds`: Change the background and value colors dynamically within the panel, depending on the Singlestat value. The threshold field accepts **3 comma-separated** values, corresponding to the three colors directly to the right.
4. `Colors`: Select a color and opacity
5. `Invert order`: This link toggles the threshold color order.For example: Green, Orange, Red (
) will become Red, Orange, Green (
).
@@ -54,4 +54,21 @@ Value to text mapping allows you to translate the value of the summary stat into
+## Troubleshooting
+### Multiple Series Error
+
+
+
+
+Grafana 2.5 introduced stricter checking for multiple-series on singlestat panels. In previous versions, the panel logic did not verify that only a single series was used, and instead, displayed the first series encountered. Depending on your data source, this could have lead to inconsistent data being shown and/or a general confusion about which metric was being displayed.
+
+To fix your singlestat panel:
+
+- Edit your panel by clicking the Panel Title and selecting *Edit*.
+
+- Do you have multiple queries in the metrics tab?
+ - Solution: Select a single query to visualize. You can toggle whether a query is visualized by clicking the eye icon on each line. If the error persists, continue to the next solution.
+
+- Do you have one query?
+ - Solution: This likely means your query is returning multiple series. You will want to reduce this down to a single series. This can be accomplished in many ways, depending on your data source. Some common practices include summing the series, averaging or any number of other functions. Consult the documentation for your data source for additional information.
diff --git a/docs/sources/reference/templating.md b/docs/sources/reference/templating.md
index 239cb33c378..e605af845ea 100644
--- a/docs/sources/reference/templating.md
+++ b/docs/sources/reference/templating.md
@@ -63,7 +63,7 @@ Once configured, Multi-Select Tagging provides a convenient way to group and you
### Interval
-Use the `Interval` type to create Template variables aroundr time ranges (eg. `1m`,`1h`, `1d`). There is also a special `auto` option that will change depending on the current time range, you can specify how many times the current time range should be divided to calculate the current `auto` range.
+Use the `Interval` type to create Template variables around time ranges (eg. `1m`,`1h`, `1d`). There is also a special `auto` option that will change depending on the current time range, you can specify how many times the current time range should be divided to calculate the current `auto` range.

@@ -75,7 +75,7 @@ Use the `Custom` type to manually create Template variables around explicit valu
Template Variables can be very useful to dynamically change what you're visualizing on a given panel. Sometimes, you might want to create entire new Panels (or Rows) based on what Template Variables have been selected. This is now possible in Grafana 2.1.
-Once you've got your Template variables (of any type) configured the way you'd like, check out the Repeating Panels and Repeating Row documentatione
+Once you've got your Template variables (of any type) configured the way you'd like, check out the Repeating Panels and Repeating Row documentation
## Screencast - Templated Graphite Queries
diff --git a/docs/sources/reference/timerange.md b/docs/sources/reference/timerange.md
index c253e0cd64c..2ab428622bc 100644
--- a/docs/sources/reference/timerange.md
+++ b/docs/sources/reference/timerange.md
@@ -8,40 +8,61 @@ page_keywords: grafana, time range, guide, documentation
Grafana provides numerous ways to manage the time ranges of the data being visualized, both at the Dashboard-level and the Panel-level.
-
+
In the top right, you have the master Dashboard time picker (it's in between the 'Zoom out' and the 'Refresh' links).
-From this dropdown you can:
+1. `Current time range & refresh interval`: This shows the current dashboard time and refresh interval. It also acts as the menu button to toggle the time range controls.
+2. `Quick ranges`: Quick ranges are preset values to choose a relative time. At this time, quick ranges are not configurable, and will appear on every dashboard.
+3. `Time range`: The time range section allows you to mix both explicit and relative ranges. The explicit time range format is `YYYY-MM-DD HH:MM:SS`
+4. `Refreshing every:` When enabled, auto-refresh will reload the dashboard at the specified time range. Auto-refresh is most commonly used with relative time ranges ending in `now`, so new data will appear when the dashboard refreshes.
-1. Specify an exact time range (eg. "October 13 12:01 to October 14 12:05)
-2. Choose a relative time (eg. "Last 15 minutes","Last 1 week")
-3. Configure auto-refresh options
+These settings apply to all Panels in the Dashboard (except those with Panel Time Overrides enabled)
-All of this applies to all Panels in the Dashboard (except those with Panel Time Overrides enabled)
+## Time Units
-## Customize relative time and auto auto-refresh options
+The following time units are supported: `s (seconds)`, `m (minutes)`, `h (hours)`, `d (days)`, `w (weeks)`, `M (months)`, `y (years)`. The minus operator allows you to step back in time, relative to now. If you wish to display the full period of the unit (day, week, month, etc...), append `/$unit` to the end.
-It's possible to customize the options displayed for relative time and the auto-refresh options.
+Take a look at some examples to seen these concepts in practice:
-From Dashboard settings, click the Timepicker tab. From here you can specify the relative and auto refresh intervals. The Timepicker tab settings are saved on a per Dashboard basis. Entries are comma separated and accept a number followed by one of the following units: `s (seconds)`, `m (minutes)`, `h (hours)`, `d (days)`, `w (weeks)`, `M (months)`, `y (years)`.
+Example Relative Range | From: | To:
+-------------- | ----- | ---
+Last 5 minutes | `now-5m` | `now`
+The day so far | `now/d` | `now`
+This week | `now/w` | `now/w`
+Week to date | `now/w` | `now`
+Previous Month | `now-1M/M` | `now-1M/M`
+
+
+## Dashboard-Level Time Picker Settings
+
+There are two settings available from the Dashboard Settings area, allowing customization of the auto-refresh intervals and the definition of `now`.
+### Auto-Refresh Options
+
+It's possible to customize the options displayed for relative time and the auto-refresh options.
+
+From Dashboard settings, click the Timepicker tab. From here you can specify the relative and auto-refresh intervals. The Timepicker tab settings are saved on a per Dashboard basis. Entries are comma separated and accept any valid time unit.
+
+### Defining Now
+
+Users often ask, [when will then be now](https://www.youtube.com/watch?v=VeZ9HhHU86o)? Grafana offers the ability to override the `now` value on a per dashboard basis. Most commonly, this feature is used to accommodate known delays in data aggregation to avoid null values.
## Panel time overrides & timeshift
-In Grafana v2.x you can now override the relative time range for individual panels, causing them to be different than what is selected in the Dashboard time picker in the upper right. You can also add a time shift to individual panels. This allows you to show metrics from different time periods or days at the same time.
+You can override the relative time range for individual panels, causing them to be different than what is selected in the Dashboard time picker in the upper right. This allows you to show metrics from different time periods or days at the same time.
-You control these overrides in panel editor mode and the new tab `Time Range`.
+You control these overrides in panel editor mode and the tab `Time Range`.
-When you zoom or change the Dashboard time to a custom absolute time range, all panel overrides will be disabled. The panel relative time override is only active when the dashboard time is also relative. The panel timeshift override however is always active, even when the dashboard time is absolute.
+When you zoom or change the Dashboard time to a custom absolute time range, all panel overrides will be disabled. The panel relative time override is only active when the dashboard time is also relative. The panel timeshift override is always active, even when the dashboard time is absolute.
-The `Hide time override info` option allows you to hide the the override info text that is by default shown in the
+The `Hide time override info` option allows you to hide the override info text that is by default shown in the
upper right of a panel when overridden time range options.
-Currently you can only override the dashboard time with relative time ranges, not absolute time ranges.
+Note: You can only override the dashboard time with relative time ranges. Absolute time ranges are not available.
diff --git a/docs/sources/tutorials/hubot_howto.md b/docs/sources/tutorials/hubot_howto.md
index b2f53d0bece..85ebb3e7c85 100644
--- a/docs/sources/tutorials/hubot_howto.md
+++ b/docs/sources/tutorials/hubot_howto.md
@@ -64,13 +64,13 @@ The `hubot-grafana` plugin requires a number of environment variables to be set
The hubot plugin will take advantage of the Grafana server side rendering feature that can
render any panel on the server using phantomjs. Grafana ships with a phantomjs binary (linux only).
-To verify that this freature works try the `Direct link to rendered image` link in the panel share dialog.
+To verify that this feature works try the `Direct link to rendered image` link in the panel share dialog.
If you do not get an image when opening this link verify that the required font packages are installed for phantomjs to work.
### Grafana API Key
You need to set the environment variable `HUBOT_GRAFANA_API_KEY` to a Grafana API Key.
-You can add these from the API Keys page wich you find in the Organization dropdown.
+You can add these from the API Keys page which you find in the Organization dropdown.
### Amazon S3
The `S3` options are optional but for the images to work properly in services like Slack and Hipchat they need
@@ -118,7 +118,7 @@ Now you can add an alias like this:
## Summary
-Grafana is going to ship with integrated Slack and Hiptchat features some day but you do
+Grafana is going to ship with integrated Slack and Hipchat features some day but you do
not have to wait for that. Grafana 2 shipped with a very clever server side rendering feature
that can render any panel to a png using phantomjs. The hubot plugin for Grafana is something
you can install and use today!
diff --git a/docs/sources/tutorials/stack_guide_graphite.md b/docs/sources/tutorials/stack_guide_graphite.md
index a9025cf9a71..1145cab2249 100644
--- a/docs/sources/tutorials/stack_guide_graphite.md
+++ b/docs/sources/tutorials/stack_guide_graphite.md
@@ -27,7 +27,7 @@ that is not really the case, or, at least, that it is a lot better than you expe
To begin with we are going to install the 3 main components that define our metric stack. Later in the guide we will
install StatsD, but that is optional.
-- Carbon is the graphite ingestion deamon responsible for
+- Carbon is the graphite ingestion daemon responsible for
receiving metrics and storing them.
- Graphite-api is light weight version of graphite-web with only the HTTP api and is
responsible for executing metric queries.
@@ -90,7 +90,7 @@ pattern = .*
retentions = 10s:1d,1m:7d,10m:1y
```
-This config specifies the resolution of metrics and the retention periods. For example for all metrics begining with the word `carbon` receive metrics every minute and store for 30 days, then
+This config specifies the resolution of metrics and the retention periods. For example for all metrics beginning with the word `carbon` receive metrics every minute and store for 30 days, then
roll them up into 10 minute buckets and store those for 1 year, then roll those up into 1 hour buckets and store those for 5 years. For all other metrics
the default rule will be applied with other retention periods.
@@ -206,7 +206,7 @@ Reload supervisor
supervisorctl reload
-A carbon-cache deamon and graphite-api should now be running. Type `supervisorctl status` to verify that they are running. You can
+A carbon-cache daemon and graphite-api should now be running. Type `supervisorctl status` to verify that they are running. You can
also open `http://your_server_ip:8888/metrics/find?query?*` in your browser. You should see a json snippet.
@@ -243,12 +243,12 @@ Open http://your_server_ip:3000 in your browser and login with the default user
- Select `Add Panel` > `Graph` from the row menu
- An empty graph panel should appear with title `no title (click here)`. Click on this title and then `Edit`
- This will open the graph in edit mode and take you to the metrics tab.
-- There is one query already added (asigned letter A) but it is empty.
+- There is one query already added (assigned letter A) but it is empty.
- Click on `select metric` to pick the first graphite metric node. A new `select metric` link will appear until you reached a leaf node.
- Try picking the metric paths for `carbon.agents.