{
"info": {
"author": "Weaveworks",
"author_email": "help+grafanalib@weave.works",
"bugtrack_url": null,
"classifiers": [
"Development Status :: 3 - Alpha",
"Environment :: Console",
"Intended Audience :: Developers",
"Intended Audience :: System Administrators",
"License :: OSI Approved :: Apache Software License",
"Programming Language :: Python :: 3.4",
"Programming Language :: Python :: 3.5",
"Topic :: System :: Monitoring"
],
"description": "==========\ngrafanalib\n==========\n\n.. image:: https://circleci.com/gh/weaveworks/grafanalib.svg?style=shield\n :target: https://circleci.com/gh/weaveworks/grafanalib\n\nDo you like `Grafana `_ but wish you could version your\ndashboard configuration? Do you find yourself repeating common patterns? If\nso, grafanalib is for you.\n\ngrafanalib lets you generate Grafana dashboards from simple Python scripts.\n\nWriting dashboards\n==================\n\nThe following will configure a dashboard with a single row, with one QPS graph\nbroken down by status code and another latency graph showing median and 99th\npercentile latency:\n\n.. code-block:: python\n\n from grafanalib.core import *\n\n\n dashboard = Dashboard(\n title=\"Frontend Stats\",\n rows=[\n Row(panels=[\n Graph(\n title=\"Frontend QPS\",\n dataSource='My Prometheus',\n targets=[\n Target(\n expr='sum(irate(nginx_http_requests_total{job=\"default/frontend\",status=~\"1..\"}[1m]))',\n legendFormat=\"1xx\",\n refId='A',\n ),\n Target(\n expr='sum(irate(nginx_http_requests_total{job=\"default/frontend\",status=~\"2..\"}[1m]))',\n legendFormat=\"2xx\",\n refId='B',\n ),\n Target(\n expr='sum(irate(nginx_http_requests_total{job=\"default/frontend\",status=~\"3..\"}[1m]))',\n legendFormat=\"3xx\",\n refId='C',\n ),\n Target(\n expr='sum(irate(nginx_http_requests_total{job=\"default/frontend\",status=~\"4..\"}[1m]))',\n legendFormat=\"4xx\",\n refId='D',\n ),\n Target(\n expr='sum(irate(nginx_http_requests_total{job=\"default/frontend\",status=~\"5..\"}[1m]))',\n legendFormat=\"5xx\",\n refId='E',\n ),\n ],\n yAxes=[\n YAxis(format=OPS_FORMAT),\n YAxis(format=SHORT_FORMAT),\n ],\n alert=Alert(\n name=\"Too many 500s on Nginx\",\n message=\"More than 5 QPS of 500s on Nginx for 5 minutes\",\n alertConditions=[\n AlertCondition(\n Target(\n expr='sum(irate(nginx_http_requests_total{job=\"default/frontend\",status=~\"5..\"}[1m]))',\n legendFormat=\"5xx\",\n refId='A',\n ),\n timeRange=TimeRange(\"5m\", \"now\"),\n evaluator=GreaterThan(5),\n operator=OP_AND,\n reducerType=RTYPE_SUM,\n ),\n ],\n )\n ),\n Graph(\n title=\"Frontend latency\",\n dataSource='My Prometheus',\n targets=[\n Target(\n expr='histogram_quantile(0.5, sum(irate(nginx_http_request_duration_seconds_bucket{job=\"default/frontend\"}[1m])) by (le))',\n legendFormat=\"0.5 quantile\",\n refId='A',\n ),\n Target(\n expr='histogram_quantile(0.99, sum(irate(nginx_http_request_duration_seconds_bucket{job=\"default/frontend\"}[1m])) by (le))',\n legendFormat=\"0.99 quantile\",\n refId='B',\n ),\n ],\n yAxes=single_y_axis(format=SECONDS_FORMAT),\n ),\n ]),\n ],\n ).auto_panel_ids()\n\nThere is a fair bit of repetition here, but once you figure out what works for\nyour needs, you can factor that out.\nSee `our Weave-specific customizations `_ for inspiration.\n\nGenerating dashboards\n=====================\n\nIf you save the above as ``frontend.dashboard.py`` (the suffix must be\n``.dashboard.py``), you can then generate the JSON dashboard with:\n\n.. code-block:: console\n\n $ generate-dashboard -o frontend.json frontend.dashboard.py\n\nInstallation\n============\n\ngrafanalib is just a Python package, so:\n\n.. code-block:: console\n\n $ pip install grafanalib\n\nSupport\n=======\n\nThis library is in its very early stages. We'll probably make changes that\nbreak backwards compatibility, although we'll try hard not to.\n\ngrafanalib works with Python 2.7, 3.4, 3.5, and 3.6.\n\nDeveloping\n==========\nIf you're working on the project, and need to build from source, it's done as follows:\n\n.. code-block:: console\n\n $ virtualenv .env\n $ . ./.env/bin/activate\n $ pip install -e .\n\n`gfdatasource`\n==============\n\nThis module also provides a script and docker image which can configure grafana\nwith new sources, or enable app plugins.\n\nThe script answers the `--help` with full usage information, but basic\ninvocation looks like this:\n\n.. code-block:: console\n\n $ --grafana-url http://grafana. datasource --data-source-url http://datasource\n $ --grafana-url http://grafana. app --id my-plugin\n\nGetting Help\n============\n\nIf you have any questions about, feedback for or problems with ``grafanalib``:\n\n- Invite yourself to the `Weave community `_ Slack.\n- Ask a question on the `#general `_ Slack channel.\n- Send an email to `weave-users@weave.works `_.\n- `File an issue `_.\n\nYour feedback is always welcome!\n\n\n",
"description_content_type": "",
"docs_url": null,
"download_url": "",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "https://github.com/weaveworks/grafanalib",
"keywords": "",
"license": "Apache",
"maintainer": "",
"maintainer_email": "",
"name": "grafanalib",
"package_url": "https://pypi.org/project/grafanalib/",
"platform": "",
"project_url": "https://pypi.org/project/grafanalib/",
"project_urls": {
"Homepage": "https://github.com/weaveworks/grafanalib"
},
"release_url": "https://pypi.org/project/grafanalib/0.5.3/",
"requires_dist": [
"attrs",
"flake8; extra == 'dev'",
"pytest; extra == 'dev'"
],
"requires_python": "",
"summary": "Library for building Grafana dashboards",
"version": "0.5.3"
},
"last_serial": 4082972,
"releases": {
"0.1.0": [
{
"comment_text": "",
"digests": {
"md5": "af8ff66fae68d00ff62209c8a78bfe7c",
"sha256": "6e53e5fb673b221805dea93ac3e007a6690299b1c4eb4004d84b8c99340170d6"
},
"downloads": -1,
"filename": "grafanalib-0.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "af8ff66fae68d00ff62209c8a78bfe7c",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 7938,
"upload_time": "2016-12-02T15:18:40",
"url": "https://files.pythonhosted.org/packages/05/35/df514624dc8762c205063fa485ad63bd1142ca01aa1516214efdfbf9566e/grafanalib-0.1.0-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "0068858d2f24531233c11f6155d282e4",
"sha256": "dbec796fe5b4aef35e732b702218a90dacd9529067829c3184f5f0266e3a5ae5"
},
"downloads": -1,
"filename": "grafanalib-0.1.0.tar.gz",
"has_sig": false,
"md5_digest": "0068858d2f24531233c11f6155d282e4",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 5823,
"upload_time": "2016-12-02T15:18:42",
"url": "https://files.pythonhosted.org/packages/67/01/44df8cfae78ca5a86794c47f867e7b65759a1a1ae9193119e38cc8d6d46c/grafanalib-0.1.0.tar.gz"
}
],
"0.1.1": [
{
"comment_text": "",
"digests": {
"md5": "fb7b81d624e0779bc1be890454e627ab",
"sha256": "5afbc95f5f986703354fcbaf9d0c23718910457b9658ec718d4c99a09446545d"
},
"downloads": -1,
"filename": "grafanalib-0.1.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "fb7b81d624e0779bc1be890454e627ab",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 10236,
"upload_time": "2016-12-02T15:36:20",
"url": "https://files.pythonhosted.org/packages/50/40/4e35600b03e2ef735e66ada4e10c8f91611d7306f89ab0e64daf0b5ac710/grafanalib-0.1.1-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "281eb343d66bdb70b10b306f35d985ed",
"sha256": "38142fefaddb35a89fc19ee4944c4e93d0364dbd170b36a3e3af87a5394a0ccc"
},
"downloads": -1,
"filename": "grafanalib-0.1.1.tar.gz",
"has_sig": false,
"md5_digest": "281eb343d66bdb70b10b306f35d985ed",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 7351,
"upload_time": "2016-12-02T15:36:22",
"url": "https://files.pythonhosted.org/packages/0e/2e/d3d78142f77243e2c54c51f173729c7821818f669f08c1160983ec5bbed3/grafanalib-0.1.1.tar.gz"
}
],
"0.1.2": [
{
"comment_text": "",
"digests": {
"md5": "48bff961057e8626363f23d4654c8ec1",
"sha256": "5e7e262f64d3415972214982560d75bdf09843fae15ed63fb358e3faffa6bfd6"
},
"downloads": -1,
"filename": "grafanalib-0.1.2-py2-none-any.whl",
"has_sig": false,
"md5_digest": "48bff961057e8626363f23d4654c8ec1",
"packagetype": "bdist_wheel",
"python_version": "py2",
"requires_python": null,
"size": 10516,
"upload_time": "2017-01-03T11:58:11",
"url": "https://files.pythonhosted.org/packages/dd/bc/0ab1d0b9fa7528ccfd366b1e7c777f56476a372de023490d4ac3307e2bb7/grafanalib-0.1.2-py2-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "bbe86b7647cb93b2fb16fb90da6df495",
"sha256": "38d88170712904365e48e01e97cfa81ced1f8163b5e481aa5df576e959d17e21"
},
"downloads": -1,
"filename": "grafanalib-0.1.2.tar.gz",
"has_sig": false,
"md5_digest": "bbe86b7647cb93b2fb16fb90da6df495",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 7608,
"upload_time": "2017-01-03T11:58:13",
"url": "https://files.pythonhosted.org/packages/2d/88/618cad77c7ca6e5c19aff2fe7c576c57c1e39a63e5504f9749401c5aeab7/grafanalib-0.1.2.tar.gz"
}
],
"0.3.0": [
{
"comment_text": "",
"digests": {
"md5": "613ede1afe2436ae87c61f93cf7e5908",
"sha256": "b76852ee452e86a2cb31e21e62a3e0d5a8030af9ec37c5f63042f4d5426424b5"
},
"downloads": -1,
"filename": "grafanalib-0.3.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "613ede1afe2436ae87c61f93cf7e5908",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 23642,
"upload_time": "2017-07-27T14:05:38",
"url": "https://files.pythonhosted.org/packages/f4/8d/9b1b23f4fbc3a120b83cad4f68f811072b80f61ed3f00181dfb9c3bc69cf/grafanalib-0.3.0-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "e4b8c260266093d90cdbe86791d0e287",
"sha256": "6fec693b3291dfa53480d45d4719a18c1beb55b4071e86629eecec76160f299f"
},
"downloads": -1,
"filename": "grafanalib-0.3.0.tar.gz",
"has_sig": false,
"md5_digest": "e4b8c260266093d90cdbe86791d0e287",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 18994,
"upload_time": "2017-07-27T14:05:40",
"url": "https://files.pythonhosted.org/packages/33/1a/98f6a01f5b5f8888a00ff7d7d1b661ec618393496ffafc9900d7974f63f0/grafanalib-0.3.0.tar.gz"
}
],
"0.4.0": [
{
"comment_text": "",
"digests": {
"md5": "8d5720661064979140165e1d822cd743",
"sha256": "a7b97412d00c2125898bc1c15788fe8956aa6fbc332d914d299b684bdb9c3f52"
},
"downloads": -1,
"filename": "grafanalib-0.4.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "8d5720661064979140165e1d822cd743",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 24523,
"upload_time": "2017-11-23T17:37:37",
"url": "https://files.pythonhosted.org/packages/30/36/d1afa789538df89c0ef080e6015a622bd8872d2c9980b7b292935a40e2f7/grafanalib-0.4.0-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "074037f7d75222dc839f9a81aecc535d",
"sha256": "121b1c0e9aa0dfa33577e42731dc3f18482a3e51b633721be6b36350cb6d9600"
},
"downloads": -1,
"filename": "grafanalib-0.4.0.tar.gz",
"has_sig": false,
"md5_digest": "074037f7d75222dc839f9a81aecc535d",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 19957,
"upload_time": "2017-11-23T17:37:38",
"url": "https://files.pythonhosted.org/packages/a3/8e/5d6af0c26de1e2ab534784d12a6d31c163505d9310cd520748dfcd950990/grafanalib-0.4.0.tar.gz"
}
],
"0.5.0": [
{
"comment_text": "",
"digests": {
"md5": "c166a0fb394defbb4e53078ae1cdc2a6",
"sha256": "510fd2caf6ef795efb43500825978cbfc0d5b02503229705128f3519743d1281"
},
"downloads": -1,
"filename": "grafanalib-0.5.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "c166a0fb394defbb4e53078ae1cdc2a6",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 28173,
"upload_time": "2018-02-26T19:43:58",
"url": "https://files.pythonhosted.org/packages/90/7b/cbddab0f4d53b7835194e66eaac350fd59c9db9ec13ef2babd582ff14df4/grafanalib-0.5.0-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "104dc785a7ec3e6756b16868312ee698",
"sha256": "1e20d56372aa0498fc40bba7421b7cc1b3a82755c3cf3f61e18b721e74585228"
},
"downloads": -1,
"filename": "grafanalib-0.5.0.tar.gz",
"has_sig": false,
"md5_digest": "104dc785a7ec3e6756b16868312ee698",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 23860,
"upload_time": "2018-02-26T19:44:00",
"url": "https://files.pythonhosted.org/packages/0c/dd/0b2d28622a161270efb27c0e664730e9a2f21ef0a595c2051b4b75c22e2f/grafanalib-0.5.0.tar.gz"
}
],
"0.5.1": [
{
"comment_text": "",
"digests": {
"md5": "b26267c6f659244ac68ab0f861769c05",
"sha256": "6c427c8a8bebaf426ec2bd2483e6a1e45a906f695cbc0ef797b0eb1658f6a9a2"
},
"downloads": -1,
"filename": "grafanalib-0.5.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "b26267c6f659244ac68ab0f861769c05",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 28164,
"upload_time": "2018-02-27T13:47:59",
"url": "https://files.pythonhosted.org/packages/76/80/18e0c3201572671cf78516172450cc253c5fa9090ced1f4872daae4220be/grafanalib-0.5.1-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "c51ac78318bf3228a3ec2710218acf48",
"sha256": "4112e41a8d50839c747beb361eb1699fa70fb2cece1875f19163eef7cacd6c24"
},
"downloads": -1,
"filename": "grafanalib-0.5.1.tar.gz",
"has_sig": false,
"md5_digest": "c51ac78318bf3228a3ec2710218acf48",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 23856,
"upload_time": "2018-02-27T13:48:00",
"url": "https://files.pythonhosted.org/packages/4d/76/92617453a8506b50e675276a8796c16c546016750c830a7e5b89d634bf5f/grafanalib-0.5.1.tar.gz"
}
],
"0.5.2": [
{
"comment_text": "",
"digests": {
"md5": "d9c25e9de6897fac887df731b1f5dec4",
"sha256": "01ce495e3d2f082a14e42c1f2d587b703e2fd0b32d179c482489ebe574a28b6d"
},
"downloads": -1,
"filename": "grafanalib-0.5.2-py2-none-any.whl",
"has_sig": false,
"md5_digest": "d9c25e9de6897fac887df731b1f5dec4",
"packagetype": "bdist_wheel",
"python_version": "py2",
"requires_python": null,
"size": 26608,
"upload_time": "2018-07-19T16:26:37",
"url": "https://files.pythonhosted.org/packages/67/70/6cbaff28c0d485cf5e659bb3877ea6a3235867747ff69590e453a2bc530b/grafanalib-0.5.2-py2-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "245b91455fee272ce8bb31381521af14",
"sha256": "f8f8e22a632c58266d524b513d7dcacb6ce97d740816243a05e0db47b74e0ce0"
},
"downloads": -1,
"filename": "grafanalib-0.5.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "245b91455fee272ce8bb31381521af14",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 26609,
"upload_time": "2018-07-19T16:26:39",
"url": "https://files.pythonhosted.org/packages/eb/be/e4b9c501574db240f29f79a3f2b51e471dd2001e8e4c27c245d30efa38ca/grafanalib-0.5.2-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "1ea7f862d4be37ffdea928cc03416294",
"sha256": "d9ad48a9d555d3d70b47d55ea1c46fbfeaa2fd58a3241341343a4fcbd727e1a1"
},
"downloads": -1,
"filename": "grafanalib-0.5.2.tar.gz",
"has_sig": false,
"md5_digest": "1ea7f862d4be37ffdea928cc03416294",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 25236,
"upload_time": "2018-07-19T16:26:40",
"url": "https://files.pythonhosted.org/packages/25/52/4c20c918678d4e22bd394b042290384e9cdce6c12454b5c4b98e14b23240/grafanalib-0.5.2.tar.gz"
}
],
"0.5.3": [
{
"comment_text": "",
"digests": {
"md5": "6280cb78fa58a8e09ebc957cc4065fdf",
"sha256": "885a9c3ca9bd8cd2390a1c3cd4a2bd500fd19e1d2521a2b972503b509547d853"
},
"downloads": -1,
"filename": "grafanalib-0.5.3-py2-none-any.whl",
"has_sig": false,
"md5_digest": "6280cb78fa58a8e09ebc957cc4065fdf",
"packagetype": "bdist_wheel",
"python_version": "py2",
"requires_python": null,
"size": 26612,
"upload_time": "2018-07-19T16:39:50",
"url": "https://files.pythonhosted.org/packages/da/a8/ae814759bc99786f0ed33fae0accc177a513519dcdc0afdd931a89416401/grafanalib-0.5.3-py2-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "49154bacdaa9ef1fe6410c2d5c4ad60d",
"sha256": "9d1372daa83bc7148d995059561bec24efaae7b628449b0a440e7e9f49b42521"
},
"downloads": -1,
"filename": "grafanalib-0.5.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "49154bacdaa9ef1fe6410c2d5c4ad60d",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 26612,
"upload_time": "2018-07-19T16:39:51",
"url": "https://files.pythonhosted.org/packages/dc/b2/690724e7e526f775c5f53d4c2d697293abf0e7455bed7d758282d6b40f09/grafanalib-0.5.3-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "137a2ce7a4c19fea4c16aec8f3238f66",
"sha256": "aba4f87028edd826d6444967fdcfa7d1307e3e564bfe0cadea813a2595088e5d"
},
"downloads": -1,
"filename": "grafanalib-0.5.3.tar.gz",
"has_sig": false,
"md5_digest": "137a2ce7a4c19fea4c16aec8f3238f66",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 25257,
"upload_time": "2018-07-19T16:39:52",
"url": "https://files.pythonhosted.org/packages/52/98/c47b4438b83e4bb61900b3d7157f78364cfd2618022f1342b9d167b96aa2/grafanalib-0.5.3.tar.gz"
}
]
},
"urls": [
{
"comment_text": "",
"digests": {
"md5": "6280cb78fa58a8e09ebc957cc4065fdf",
"sha256": "885a9c3ca9bd8cd2390a1c3cd4a2bd500fd19e1d2521a2b972503b509547d853"
},
"downloads": -1,
"filename": "grafanalib-0.5.3-py2-none-any.whl",
"has_sig": false,
"md5_digest": "6280cb78fa58a8e09ebc957cc4065fdf",
"packagetype": "bdist_wheel",
"python_version": "py2",
"requires_python": null,
"size": 26612,
"upload_time": "2018-07-19T16:39:50",
"url": "https://files.pythonhosted.org/packages/da/a8/ae814759bc99786f0ed33fae0accc177a513519dcdc0afdd931a89416401/grafanalib-0.5.3-py2-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "49154bacdaa9ef1fe6410c2d5c4ad60d",
"sha256": "9d1372daa83bc7148d995059561bec24efaae7b628449b0a440e7e9f49b42521"
},
"downloads": -1,
"filename": "grafanalib-0.5.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "49154bacdaa9ef1fe6410c2d5c4ad60d",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 26612,
"upload_time": "2018-07-19T16:39:51",
"url": "https://files.pythonhosted.org/packages/dc/b2/690724e7e526f775c5f53d4c2d697293abf0e7455bed7d758282d6b40f09/grafanalib-0.5.3-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "137a2ce7a4c19fea4c16aec8f3238f66",
"sha256": "aba4f87028edd826d6444967fdcfa7d1307e3e564bfe0cadea813a2595088e5d"
},
"downloads": -1,
"filename": "grafanalib-0.5.3.tar.gz",
"has_sig": false,
"md5_digest": "137a2ce7a4c19fea4c16aec8f3238f66",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 25257,
"upload_time": "2018-07-19T16:39:52",
"url": "https://files.pythonhosted.org/packages/52/98/c47b4438b83e4bb61900b3d7157f78364cfd2618022f1342b9d167b96aa2/grafanalib-0.5.3.tar.gz"
}
]
}