将 Hubot 与 Grafana 集成

Grafana Labs Team
Grafana Labs 团队撰写

最后更新于 2023 年 11 月 2 日

进阶

简介

Grafana 2.0 版本包含一个出色的功能,可以将任何图表或面板渲染为 PNG 图片。

无论您使用哪种数据源,图表的 PNG 图片看起来都与浏览器中的效果相同。

本指南将向您展示如何安装和配置 Hubot-Grafana 插件。通过此插件,您可以直接在 Slack、Basecamp 或其他任何支持的 Hubot 适配器频道中命令 Hubot 渲染任何仪表盘或图表。机器人将返回图表的图片以及一个链接,点击链接即可跳转到该图表。

什么是 Hubot?

Hubot 是一个通用且可扩展的聊天机器人,可与多种聊天服务配合使用,并且拥有庞大的第三方插件库,让您可以从聊天室中自动化处理任何事情。

安装 Hubot

Hubot 安装和托管非常简单。如果您还没有运行中的机器人,请阅读官方 Getting Started With Hubot 指南。

安装 Hubot-Grafana 脚本

在您的 Hubot 项目仓库中,使用 npm 安装 Grafana 插件

bash
npm install hubot-grafana --save

编辑文件 external-scripts.json,并将 hubot-grafana 添加到插件列表中。

json
["hubot-pugme", "hubot-shipit", "hubot-grafana"]

配置

Hubot-Grafana 插件需要设置两个环境变量才能正常工作。

bash
export HUBOT_GRAFANA_HOST=https://play.grafana.org
export HUBOT_GRAFANA_API_KEY=abcd01234deadbeef01234

还有 其他环境变量 您可以设置这些变量来控制图表的外观。

Grafana 服务端渲染

hubot 插件将利用 Grafana 服务端渲染功能,该功能可以使用 phantomjs 在服务器上渲染任何面板。Grafana 自带 phantomjs 二进制文件(仅限 Linux)。

要验证此功能是否正常工作,请尝试点击 Direct link to rendered image 面板分享对话框中的链接。如果您打开此链接时未获得图片,请确认已安装 phantomjs 工作所需的字体包。

Grafana API 密钥

您需要将环境变量 HUBOT_GRAFANA_API_KEY 设置为一个 Grafana API 密钥。您可以在组织下拉菜单中的 API 密钥页面添加这些密钥。

图片上传

有几种方法可以上传渲染后的图表。如果您使用 Slack、Rocket.Chat 或 Telegram,适配器的原生上传器会通过各自的 API 处理发送。如果您的 Hubot 托管在不支持上传的平台(如 IRC),您可以使用 built-in S3 uploader(内置的 S3 上传器)。请注意,如果您配置了 S3,它将不会使用适配器的上传功能。

Hubot 命令

  • hubot graf list
    • 列出可用的仪表盘
  • hubot graf db graphite-carbon-metrics
    • 绘制仪表盘中的所有面板
  • hubot graf db graphite-carbon-metrics:3
    • 仅绘制特定仪表盘中 ID 为 3 的面板
  • hubot graf db graphite-carbon-metrics:cpu
    • 仅绘制标题中包含“cpu”(不区分大小写)的面板
  • hubot graf db graphite-carbon-metrics now-12hr
    • 获取从 12 小时前到现在时间窗口的仪表盘
  • hubot graf db graphite-carbon-metrics now-24hr now-12hr
    • 获取从 24 小时前到 12 小时前时间窗口的仪表盘
  • hubot graf db graphite-carbon-metrics:3 now-8d now-1d
    • 仅获取特定仪表盘的第三个面板,时间窗口为 8 天前到昨天
  • hubot graf db graphite-carbon-metrics host=carbon-a
    • 获取模板仪表盘,并将 $host 参数设置为 carbon-a

别名

上面的一些 Hubot 命令可能很长,您可能需要记住仪表盘的 slug(url ID)。如果您有一些喜欢的图表想经常查看(比如从您的手机),您可以使用 Hubot 脚本 hubot-alias 创建 Hubot 命令别名。

安装它

bash
npm i --save hubot-alias

现在将 hubot-alias 添加到 external-scripts.json 中的插件列表,然后重启 hubot。

现在您可以像这样添加别名

  • hubot alias graf-lb=graf db loadbalancers:2 now-20m

总结

总有一天 Grafana 会集成 Slack 和 Hipchat 功能,但您不必等待。Grafana 2 包含了一个非常巧妙的服务端渲染功能,可以使用 phantomjs 将任何面板渲染为 png 图片。您可以立即安装和使用 Grafana 的 Hubot 插件!