GithubHelp home page GithubHelp logo

grafana / grafana Goto Github PK

View Code? Open in Web Editor NEW
60.3K 1.3K 11.6K 1.01 GB

The open and composable observability and data visualization platform. Visualize metrics, logs, and traces from multiple sources like Prometheus, Loki, Elasticsearch, InfluxDB, Postgres and many more.

Home Page: https://grafana.com

License: GNU Affero General Public License v3.0

Shell 0.33% Python 0.05% JavaScript 0.34% Go 37.32% HTML 0.68% CSS 0.01% TypeScript 59.16% Makefile 0.04% Smarty 0.01% Dockerfile 0.04% Jsonnet 0.09% Rich Text Format 0.78% SCSS 0.50% Mustache 0.01% Jinja 0.01% CUE 0.34% Assembly 0.01% Starlark 0.29% HCL 0.01% PowerShell 0.01%
grafana monitoring analytics metrics influxdb prometheus elasticsearch alerting data-visualization go

grafana's Introduction

Grafana Logo (Light) Grafana Logo (Dark)

The open-source platform for monitoring and observability

License Drone Go Report Card

Grafana allows you to query, visualize, alert on and understand your metrics no matter where they are stored. Create, explore, and share dashboards with your team and foster a data-driven culture:

  • Visualizations: Fast and flexible client side graphs with a multitude of options. Panel plugins offer many different ways to visualize metrics and logs.
  • Dynamic Dashboards: Create dynamic & reusable dashboards with template variables that appear as dropdowns at the top of the dashboard.
  • Explore Metrics: Explore your data through ad-hoc queries and dynamic drilldown. Split view and compare different time ranges, queries and data sources side by side.
  • Explore Logs: Experience the magic of switching from metrics to logs with preserved label filters. Quickly search through all your logs or streaming them live.
  • Alerting: Visually define alert rules for your most important metrics. Grafana will continuously evaluate and send notifications to systems like Slack, PagerDuty, VictorOps, OpsGenie.
  • Mixed Data Sources: Mix different data sources in the same graph! You can specify a data source on a per-query basis. This works for even custom datasources.

Get started

Unsure if Grafana is for you? Watch Grafana in action on play.grafana.org!

Documentation

The Grafana documentation is available at grafana.com/docs.

Contributing

If you're interested in contributing to the Grafana project:

Get involved

This project is tested with BrowserStack

License

Grafana is distributed under AGPL-3.0-only. For Apache-2.0 exceptions, see LICENSING.md.

grafana's People

Contributors

aknuds1 avatar alexanderzobnin avatar aocenas avatar ashharrison90 avatar bergquist avatar daniellee avatar davkal avatar dprokop avatar dsotirakis avatar gabor avatar hugohaggmark avatar ijin08 avatar ivanahuckova avatar joshhunt avatar jschill avatar kaydelaney avatar leeoniya avatar marefr avatar mtanda avatar oddlittlebird avatar papagian avatar peterholmberg avatar renovate[bot] avatar ryantxu avatar sunker avatar svenklemm avatar torkelo avatar utkarshcmu avatar xlson avatar yuri-tceretian avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

grafana's Issues

Graphite HTTP Request Error

After setting up my apache headers

<VirtualHost *:80>
        ServerName graphite.domain.com
        DocumentRoot "/opt/graphite/webapp"
        ErrorLog /opt/graphite/storage/log/webapp/error.log
        CustomLog /opt/graphite/storage/log/webapp/access.log common

        Header set Access-Control-Allow-Origin "http://grafana.domain.com"
        Header set Access-Control-Allow-Methods "GET, OPTIONS"
        Header set Access-Control-Allow-Headers "origin, authorization, accept"
        Header set Access-Control-Allow-Credentials true
        <Location "/">
                SetHandler python-program
                PythonPath "['/opt/graphite/webapp'] + sys.path"
                PythonHandler django.core.handlers.modpython
                SetEnv DJANGO_SETTINGS_MODULE graphite.settings
                PythonDebug Off
                PythonAutoReload Off

        AuthType Basic
        AuthName "Restricted Files"
        AuthBasicProvider file
            AuthUserFile /opt/graphite/sec/.mypasswds
        Require user admin
        </Location>
        <Location "/content/">
                SetHandler None
        </Location>

        <Location "/media/">
                SetHandler None
        </Location>
        Alias /media/ "/usr/share/pyshared/django/contrib/admin/media"
</VirtualHost>

I still get Graphite HTTP Request Error on grafane interface, I have basic auth so I am configuring grafana as

graphiteUrl: "http://admin:[email protected]",

Running 1.0.3

Add dashboard playlist

It would be great if there was a list of dashboards you could choose in a playlist and have grafana cycle through them at set intervals.

It's impossible to edit a graph without a name

This happens when:

  • you create a new graph but forget to name it
  • you remove the name while editing the graph

It actually becomes impossible to do almost anything with a graph that lacks a name. The only thing you can actually do unless you're in edit mode already is to remove it.

Support for secondYAxis in targets

I can see you have an option under "Axis Labels" to label the second axis but when I try to add a target w/ secondYAxis() it fails. I don't see secondYAxis under the options so I am guessing this isnt supported. Are there any plans to support secondYAxis ?

Graphite HTTP Request Error

Hello everyone,

I just installed a Graphite server (running 0.9.10) and Grafana (master) on another server. Here is the stacktrace:

Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/django/core/handlers/base.py", line 111, in get_response
response = callback(request, _callback_args, *_callback_kwargs)
File "/opt/graphite/webapp/graphite/render/views.py", line 126, in renderView
timestamps = range(series.start, series.end, series.step)
TypeError: range() integer end argument expected, got float.

Integrate back in Kibana

Hi!

Maybe this is a non-sense, but couldn't Grafana keep the possibility to handle what Kibana was able to handle? This would allow to mix Grafana widgets with Kibana widgets on the same dashboard.

Graphs using all entries in a template

I've been experimenting with the templating function and have noticed a problem. I've entered a template of the form "collectd.prod.{host1,host2,host3,host4}" and selected "Include All." My target looks like this:

groupByNode(collectd.prod.[[hosts]].aggregation-cpu-average.cpu-{user,system},2,'sum')

If I select an individual host on the dashboard screen the graph displays correctly. However, if I select All the graph takes ages to load and when it finally does it looks like every host is selected instead of only the four hosts in the template. I'm seeing the same behavior no matter what the target.

Am I using this feature correctly or is this a bug?

Thanks,

Bill

Unable to save to Elasticsearch

I'm testing Grafana with a free Bonsai Elasticsearch instance at Heroku. I manually created the index (unsure if this was necessary):

$ curl -X POST http://user:[email protected]/grafana-dash
{"ok":true,"acknowledged":true}

Then I try to save a dashboard and I keep getting OPTIONS 404 Not Found errors. Am I overlooking something obvious? I don't see any documentation around needing OPTIONS for Elasticsearch anywhere, so it seems to me like this might be related to CORS.

Request URL:http://host.us-east-1.bonsai.io/grafana-dash/dashboard/New%20Dashboard
Request Method:OPTIONS
Status Code:404 Not Found

Add redis for metric caching for large dashboards

Since I've started to use grafana, I have been so impressed with the work that has been put into this. It is by far the best graphite dashboard out there and I have tried a couple (some I couldn't even get to work...especially the ones written in Ruby ;)). Given that I also use kibana for logstash, grafana is my first choice.

One thing that is a downside right now, is that for large dashboards it takes quite while to load them up because all metrics are fetched from graphite again.
Would it be possible to cache them in redis in a similar fashion that descartes (https://github.com/obfuscurity/descartes) does this?

Implement highestCurrent()

  addFuncDef({
    name: 'highestCurrent',
    category: categories.Filter,
    params: [ { name: "count", type: "int" } ],
    defaultParams: [5]
  });

Create new dashboard

There should be a button to create a new blank dashboard. Right now I have to open an existing one, clear anything existing, and then start creating. It would be nice if I could start clean with a single click

Create a user guide

Need to create a short user guide (github wiki) that explains how to use Grafana

  • Editor / panel options
  • Keyboard shortcuts
  • Templating (ie filters)

Implement sortByName()

http://graphite.readthedocs.org/en/latest/functions.html?highlight=functions#graphite.render.functions.sortByName

diff --git i/src/app/services/graphite/gfunc.js w/src/app/services/graphite/gfunc.js
index ec26a38..5241d83 100644
--- i/src/app/services/graphite/gfunc.js
+++ w/src/app/services/graphite/gfunc.js
@@ -102,6 +102,11 @@ function (_) {
   });

   addFuncDef({
+    name: 'sortByName',
+    category: categories.Special
+  });
+
+  addFuncDef({
     name: 'aliasByMetric',
     category: categories.Special,
   });

metric with number raises an error

I have metric like 'server.10_10_10_1.cpu-1.cpu_idle' and lexer.js is unable to parse IP address as a valid metric - graph works, but parser to 'easy metric editor' doesn't and shows metric as text only.

tried to change src/app/services/graphite/lexer.js to

   for (var i = 0; i < 128; i++) {
     identifierStartTable[i] =
      i >= 48 && i <= 57 || // 0-9
       i === 36 ||           // $
       i >= 65 && i <= 90 || // A-Z
       i === 95 ||           // _

it works in this particular case but has troubles anywhere else. So I'm investigating further.

"Oops! Graphite HTTP Request Error"

Hi there.

I'm facing this error after configured both ES and Graphite urls in my config.js.

In fact, I've both sites on screen right now without any issues, but it seems like grafana cannot see Graphite.

Any suggestions?
Thanks!

Implementing a tabulation feature.

I have tried the Grafana, I must admit it was easy and straight forward to use. I would like to know how would we implement a simple tabulation feature, where we could show trend of last n values (Currently, we are using jquery sparklines). Ideally through flip of button such as json toggle.
screenshot from 2014-01-24 00 08 36

JSON toggle:

screenshot from 2014-01-31 15 16 24

Error loading metric keys into ES

I am having issues trying to load metrics into es:

es

Console errors:

[09:56:30.634] GET http://graphNode/metrics/find/?query=carbon.relays.graphNode-a.destinations.127_0_0_1:2204:b.* [HTTP/1.1 200 OK 10ms]

[09:56:30.591] "Error: Index and Type must be set
ejs.Document/<.doIndex@http://graphNode/dashboard2/vendor/elasticjs/elastic.js:9024
saveMetricKey@http://graphNode/dashboard2/app/controllers/metricKeys.js:161
receiveMetric/funcs<@http://graphNode/dashboard2/app/controllers/metricKeys.js:142
_.collect@http://graphNode/dashboard2/vendor/underscore.js:98
receiveMetric@http://graphNode/dashboard2/app/controllers/metricKeys.js:137
qFactory/defer/deferred.promise.then/wrappedCallback@http://graphNode/dashboard2/vendor/angular/angular.js:7509
qFactory/defer/deferred.promise.then/wrappedCallback@http://graphNode/dashboard2/vendor/angular/angular.js:7509
qFactory/ref/<.then/<@http://graphNode/dashboard2/vendor/angular/angular.js:7582
Scope.prototype.$eval@http://graphNode/dashboard2/vendor/angular/angular.js:8943
Scope.prototype.$digest@http://graphNode/dashboard2/vendor/angular/angular.js:8804
Scope.prototype.$apply@http://graphNode/dashboard2/vendor/angular/angular.js:9029
done@http://graphNode/dashboard2/vendor/angular/angular.js:10282
completeRequest@http://graphNode/dashboard2/vendor/angular/angular.js:10466
createHttpBackend/</xhr.onreadystatechange@http://graphNode/dashboard2/vendor/angular/angular.js:10424
"

Do you know if this functionality is currently working?

Multiple graphite instances

Is there anyway to specify a explicit graphite url per graph ?

If I have 2 separate graphite instances (say one per datacenter), it would be awesome to be able to have a single dashboard with graph's from all (rather than having to run 2 instances of grafana as well).

Add support for graphite native png renderer

Some dashboards take a LOOOOOOOOONNNNNNG time with flot, even when using D3 in place of flot they can be slow due to many data points. It would be nice to not kill the browser and have an option to use graphite's renderserver png graphs in this instance as well.

Make maxDataPoints configurable

Add override option for maxDataPoints, also added help section that describes how maxDataPoint and graphites point consolidation work.

image

auto-dashboards

Hi. Grafana rocks! Can you add auto dashboard based on each field in filter? Example:

def addrow()
  somefunc_adding_row
end
filter = someArray
filter.each do |servername| 
  addrow(servername)
end

I can write some cronjob for updating dashboard in elasticsearch, but it is not clean.
Thanks!

Vagrantfile

It would be nice if there was a Vagrantfile which would setup a webserver running grafana with elasticsearch!
It's probably doable only with a shell provisioner

Incorrect graph offset with nonNegativeDerivative

Hi,

I have an incorrect rendering of one of my slow increasing graphite counter, on grafana 1.0.4:

Comparing this graphite graph and grafana:
apple-push-graphite
and the same in grafana:
apple-push-grafana

you'll notice that the graph is really not the same, especially the grafana version never goes to '0'.

All the values returned by the graphite renderer over this time period are either 0 or 1.0. In no case the minimum graph value can be 1 as shown in grafana.
Also, it seems that grafana draws some nulls where there should have been some values. Inspection of the graphite data doesn't show any missed metrics at first glance.

Many thanks!

add grunt-cli as a dep

annoying to go search around and find out that grunt doesn't even have an executable and you have to use grunt-cli, it would be nice to just install it locally in package.json

Implementing drawAsInfinite function

Hi,

It seems that the drawAsInfinite function does not work with graphana.

Did you plan to support this awesome feature alowing to display significative events on graphs?

regards
j

Not clear how to save and exit a graph

It is not clear to me how you want us to exit out of editing a graph. All of the settings when editing are on the bottom, but the only way I can tell how to save my work and exit is the press save at the top. IMHO this is sort of confusing. Also if I do save it would be nice if I went back to the dashboard I just saved rather then having to refresh the page w/ cmd-r

grafana goes crazy when timezone changes

When graphene queries graphite, it uses absolute time. If your dashboard is PST and you are in EST, the "until now" modifier will show no data until you set the threshold higher than 3 hours.

If you want to see the last 2h, graphite uses "T-2h" and shows you a shifted time, but grafana uses the absolute time and shows you no data.

Grafana could behave as graphite, at least showing data. But it would be great if it could translate graphite data to your timezone.

500 INTERNAL SERVER ERROR

I am using graphite 0.9.10 and I got 500 error code when I use grafana

Here is the request

POST /render/ HTTP/1.1
Host: 172.16.82.136
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:26.0) Gecko/20100101 Firefox/26.0
Accept: application/json, text/plain, */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Referer: http://localhost/grafana/src/
Content-Length: 155
Origin: http://localhost
DNT: 1
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

from=-6h&until=now&target=randomWalk('random%20walk')&target=randomWalk('random%20walk2')&target=randomWalk('random%20walk3')&maxDataPoints=600&format=json

And here is the Traceback from Django:

Environment:


Request Method: POST
Request URL: http://172.16.82.136/render/

Django Version: 1.3.1
Python Version: 2.7.3
Installed Applications:
['graphite.metrics',
 'graphite.render',
 'graphite.cli',
 'graphite.browser',
 'graphite.composer',
 'graphite.account',
 'graphite.dashboard',
 'graphite.whitelist',
 'graphite.events',
 'django.contrib.auth',
 'django.contrib.sessions',
 'django.contrib.admin',
 'django.contrib.contenttypes',
 'tagging']
Installed Middleware:
('django.middleware.common.CommonMiddleware',
 'django.middleware.gzip.GZipMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware')


Traceback:
File "/usr/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response
  111.                         response = callback(request, *callback_args, **callback_kwargs)
File "/opt/graphite/webapp/graphite/render/views.py" in renderView
  126.         timestamps = range(series.start, series.end, series.step)

Exception Type: TypeError at /render/
Exception Value: range() integer end argument expected, got float.

How do I add a graph

It is not clear to me at all how one is expected to add a graph

Can you provide instructions, maybe in getting started or something ?

aliasYAxis โ€“ Setting axis right not working with dynamic alias names

Hello,

I have just noticed and issue when setting the axis to the right of a target that is using the Graphite legendValue() function.
I think the issue must come from the fact that the target alias name is dynamic, so each time the target alias name changes it does not find the stored setting in the panel config (aliasYAxis).

As a workaround I have removed the legendValue() function and it work as expected.

          {
              "target": "legendValue(alias(timeShift(Performance.node.CustomPoller.fw_activesessions,\"1d\"),\"Active Sessions -1D\"),\"max\",\"avg\",\"si\")"
          },
..
..
..
          "aliasYAxis": {
            "Active Sessions -1D max  140.51K   avg  127.61K   ": 2,
            "Active Sessions     max  200.20K   avg  130.92K   ": 2,
            "Active Sessions     max  187.12K   avg  129.21K   ": 2,
            "Active Sessions -1D max  152.63K   avg  127.35K   ": 2,
            "Active Sessions -1D max  148.54K   avg  129.10K   ": 2,
            "Active Sessions     max  162.33K   avg  128.89K   ": 2
          },

Best regards,
Sebas

Graphite HTTP Request Error - POST /render/ HTTP/1.1" 500 11377

Hello,

I have just updated to the last master version and it seem that Grafana has changed the time format "from" and its causing some rendering issues in Graphite:

Current: (Not working)
Request Body: from=07%3A58_20140124&until=now&target=randomWalk('random%20walk')&target=randomWalk('random%20walk2')&target=randomWalk('random%20walk3')&maxDataPoints=600&format=json
Returns:  POST /render/ HTTP/1.1" 500 11377


Before:
Request Body: from=-1h&until=now&target=randomWalk('random%20walk')&target=randomWalk('random%20walk2')&target=randomWalk('random%20walk3')&maxDataPoints=600&format=json
Returns -> "POST /render/ HTTP/1.1" 200 2419

Best regards and thanks for the awesome work!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.