+++ title = "How To integrate Hubot and Grafana" type = "docs" keywords = ["grafana", "tutorials", "hubot", "slack", "hipchat", "setup", "install", "config"] [menu.docs] parent = "tutorials" weight = 10 +++
Grafana 2.0 shipped with a great feature that enables it to render any graph or panel to a PNG image. No matter what data source you are using, the PNG image of the Graph will look the same as it does in your browser.
This guide will show you how to install and configure the Hubot-Grafana plugin. This plugin allows you to tell hubot to render any dashboard or graph right from a channel in Slack, Hipchat or Basecamp. The bot will respond with an image of the graph and a link that will take you to the graph.
Amazon S3 Required: The hubot-grafana script will upload the rendered graphs to Amazon S3. This is so Hipchat and Slack can show them reliably (they require the image to be publicly available).
Hubot is an universal and extensible chat bot that can be used with many chat services and has a huge library of third party plugins that allow you to automate anything from your chat rooms.
Hubot is very easy to install and host. If you do not already have a bot up and running please read the official Getting Started With Hubot guide.
In your Hubot project repo install the Grafana plugin using npm:
npm install hubot-grafana --save
Edit the file external-scripts.json, and add hubot-grafana to the list of plugins.
[
"hubot-pugme",
"hubot-shipit",
"hubot-grafana"
]
The hubot-grafana plugin requires a number of environment variables to be set in order to work properly.
export HUBOT_GRAFANA_HOST=http://play.grafana.org
export HUBOT_GRAFANA_API_KEY=abcd01234deadbeef01234
export HUBOT_GRAFANA_S3_BUCKET=mybucket
export HUBOT_GRAFANA_S3_ACCESS_KEY_ID=ABCDEF123456XYZ
export HUBOT_GRAFANA_S3_SECRET_ACCESS_KEY=aBcD01234dEaDbEef01234
export HUBOT_GRAFANA_S3_PREFIX=graphs
export HUBOT_GRAFANA_S3_REGION=us-standard
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 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.
{{< docs-imagebox img="/img/docs/v2/orgdropdown_api_keys.png" max-width="150px" class="docs-image--right">}}
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 which you find in the Organization dropdown.
The S3 options are optional but for the images to work properly in services like Slack and Hipchat they need
to publicly available. By specifying the S3 options the hubot-grafana script will publish the rendered
panel to S3 and it will use that URL when it posts to Slack or Hipchat.
hubot graf list
hubot graf db graphite-carbon-metrics
hubot graf db graphite-carbon-metrics:3
hubot graf db graphite-carbon-metrics:cpu
hubot graf db graphite-carbon-metrics now-12hr
hubot graf db graphite-carbon-metrics now-24hr now-12hr
hubot graf db graphite-carbon-metrics:3 now-8d now-1d
hubot graf db graphite-carbon-metrics host=carbon-a
$host parameter set to carbon-aSome of the hubot commands above can lengthy and you might have to remember the dashboard slug (url id).
If you have a few favorite graphs you want to be able check up on often (let's say from your mobile) you
can create hubot command aliases with the hubot script hubot-alias.
Install it:
npm i --save hubot-alias
Now add hubot-alias to the list of plugins in external-scripts.json and restart hubot.
Now you can add an alias like this:
hubot alias graf-lb=graf db loadbalancers:2 now-20mGrafana 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!