-
Notifications
You must be signed in to change notification settings - Fork 319
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Publish to Grafana instance using REST API #307
Comments
Interesting idea. Where would this code run? Would there be a daemon beside the Grafana instance running Python code? |
I have in mind to run this from Jupyter notebooks, to achieve a kind of 'REPL' workflow: edit the dashboard definition in a notebook, periodically preview the result in a remote Grafana. Alternatively, you could edit a Python file with a dashboard locally, with a dashboard = ...
if __name__ == "__main__":
with dashboard.preview(...) as preview:
webbrowser.open(preview.url)
_ = input() # Wait for a keystroke, then cleanup Then, you can periodically run the script to preview. |
Yeah, I like the idea. For me the the ability to preview a dashboard from the a Python file would be more useful than from a Jupyter notebook. If we go to the effort of adding support for grafanalib to preview a grafana dashboard we might as well add support for it to publish/provision dashboards as the process will be almost the same. https://grafana.com/docs/grafana/latest/http_api/dashboard/ Here is some Python code from Ansible for creating/updating dashboards: |
There is also this project that pushes grafanalib dashboards to grafana |
#370 example code to publish a dashboard in python |
Really great library. I would like to get some thoughts on a potential feature. For development, it would be useful to be able to directly publish to a Grafana instance to preview/test using the REST API. This is especially useful if you don't have access to the data sources locally.
API could take the form of a method
preview
would create (or update, if it exists based on title) a dashboard named{self.title} (Preview)
, and would return the URL to the preview dashboard. This could also return a context manager that would delete the preview dashboard on__exit__
, so that you could do:The text was updated successfully, but these errors were encountered: